ace-git-copilot 0.7.0__tar.gz → 0.7.4__tar.gz

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 (155) hide show
  1. ace_git_copilot-0.7.4/.github/ISSUE_TEMPLATE/bug_report.yml +64 -0
  2. ace_git_copilot-0.7.4/.github/ISSUE_TEMPLATE/config.yml +8 -0
  3. ace_git_copilot-0.7.4/.github/ISSUE_TEMPLATE/feature_request.yml +37 -0
  4. ace_git_copilot-0.7.4/.github/PULL_REQUEST_TEMPLATE.md +19 -0
  5. ace_git_copilot-0.7.4/.github/dependabot.yml +10 -0
  6. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/.gitignore +6 -0
  7. ace_git_copilot-0.7.4/PKG-INFO +227 -0
  8. ace_git_copilot-0.7.4/README.md +194 -0
  9. ace_git_copilot-0.7.4/ace/__init__.py +1 -0
  10. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/commit_generator.py +29 -0
  11. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/conflict_resolver.py +1 -1
  12. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/prompts/commit.py +23 -6
  13. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/cli.py +32 -17
  14. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/core/context.py +14 -8
  15. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/core/diagnostics.py +24 -11
  16. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/core/git_ops.py +2 -2
  17. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/core/hooks.py +15 -5
  18. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ui/display.py +10 -2
  19. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/utils/json_utils.py +2 -2
  20. ace_git_copilot-0.7.4/install.ps1 +102 -0
  21. ace_git_copilot-0.7.4/install.sh +97 -0
  22. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/pyproject.toml +1 -1
  23. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_git_ops_execute.py +1 -1
  24. ace_git_copilot-0.7.0/.agents/AGENTS.md +0 -17
  25. ace_git_copilot-0.7.0/.agents/BRIEFING.md +0 -35
  26. ace_git_copilot-0.7.0/.agents/ORIGINAL_REQUEST.md +0 -44
  27. ace_git_copilot-0.7.0/.agents/e2e_testing_track/BRIEFING.md +0 -69
  28. ace_git_copilot-0.7.0/.agents/e2e_testing_track/ORIGINAL_REQUEST.md +0 -12
  29. ace_git_copilot-0.7.0/.agents/e2e_testing_track/SCOPE.md +0 -21
  30. ace_git_copilot-0.7.0/.agents/e2e_testing_track/progress.md +0 -11
  31. ace_git_copilot-0.7.0/.agents/explorer_init/BRIEFING.md +0 -54
  32. ace_git_copilot-0.7.0/.agents/explorer_init/ORIGINAL_REQUEST.md +0 -7
  33. ace_git_copilot-0.7.0/.agents/explorer_init/emojis_list.txt +0 -52
  34. ace_git_copilot-0.7.0/.agents/explorer_init/find_unused_modules.py +0 -51
  35. ace_git_copilot-0.7.0/.agents/explorer_init/handoff.md +0 -62
  36. ace_git_copilot-0.7.0/.agents/explorer_init/measure_lazy_startup.py +0 -17
  37. ace_git_copilot-0.7.0/.agents/explorer_init/measure_startup.py +0 -5
  38. ace_git_copilot-0.7.0/.agents/explorer_init/profile_imports.py +0 -55
  39. ace_git_copilot-0.7.0/.agents/explorer_init/progress.md +0 -12
  40. ace_git_copilot-0.7.0/.agents/explorer_init/run_importtime.py +0 -41
  41. ace_git_copilot-0.7.0/.agents/explorer_init/search_banner.py +0 -4
  42. ace_git_copilot-0.7.0/.agents/explorer_init/search_emojis.py +0 -28
  43. ace_git_copilot-0.7.0/.agents/explorer_init/search_git_usages.py +0 -4
  44. ace_git_copilot-0.7.0/.agents/explorer_init/search_usages.py +0 -9
  45. ace_git_copilot-0.7.0/.agents/explorer_init/test_import_profiler.py +0 -38
  46. ace_git_copilot-0.7.0/.agents/explorer_init/test_mocked_sys.py +0 -31
  47. ace_git_copilot-0.7.0/.agents/handoff.md +0 -19
  48. ace_git_copilot-0.7.0/.agents/implementation_track/BRIEFING.md +0 -65
  49. ace_git_copilot-0.7.0/.agents/implementation_track/ORIGINAL_REQUEST.md +0 -13
  50. ace_git_copilot-0.7.0/.agents/implementation_track/explorer_initial_report.md +0 -156
  51. ace_git_copilot-0.7.0/.agents/implementation_track/progress.md +0 -28
  52. ace_git_copilot-0.7.0/.agents/orchestrator/.gitkeep +0 -1
  53. ace_git_copilot-0.7.0/.agents/orchestrator/BRIEFING.md +0 -73
  54. ace_git_copilot-0.7.0/.agents/orchestrator/ORIGINAL_REQUEST.md +0 -12
  55. ace_git_copilot-0.7.0/.agents/orchestrator/PROJECT.md +0 -35
  56. ace_git_copilot-0.7.0/.agents/orchestrator/progress.md +0 -16
  57. ace_git_copilot-0.7.0/.agents/teamwork_preview_explorer_e2e_explore/BRIEFING.md +0 -36
  58. ace_git_copilot-0.7.0/.agents/teamwork_preview_explorer_e2e_explore/ORIGINAL_REQUEST.md +0 -10
  59. ace_git_copilot-0.7.0/.agents/teamwork_preview_explorer_e2e_explore/handoff.md +0 -121
  60. ace_git_copilot-0.7.0/.agents/teamwork_preview_explorer_e2e_explore/progress.md +0 -10
  61. ace_git_copilot-0.7.0/.agents/worker_e2e_testing/BRIEFING.md +0 -33
  62. ace_git_copilot-0.7.0/.agents/worker_e2e_testing/ORIGINAL_REQUEST.md +0 -46
  63. ace_git_copilot-0.7.0/.agents/worker_e2e_testing/progress.md +0 -15
  64. ace_git_copilot-0.7.0/.agents/worker_m1_startup/BRIEFING.md +0 -34
  65. ace_git_copilot-0.7.0/.agents/worker_m1_startup/ORIGINAL_REQUEST.md +0 -18
  66. ace_git_copilot-0.7.0/.agents/worker_m1_startup/progress.md +0 -11
  67. ace_git_copilot-0.7.0/PKG-INFO +0 -217
  68. ace_git_copilot-0.7.0/README.md +0 -184
  69. ace_git_copilot-0.7.0/ace/__init__.py +0 -1
  70. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/.env.example +0 -0
  71. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/.github/workflows/tests.yml +0 -0
  72. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/CODE_OF_CONDUCT.md +0 -0
  73. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/CONTRIBUTING.md +0 -0
  74. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/LICENSE +0 -0
  75. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/PROJECT.md +0 -0
  76. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/SECURITY.md +0 -0
  77. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/SUPPORT.md +0 -0
  78. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/TEST_INFRA.md +0 -0
  79. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/TEST_READY.md +0 -0
  80. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/__main__.py +0 -0
  81. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/changelog_generator.py +0 -0
  82. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/code_reviewer.py +0 -0
  83. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/gitignore_generator.py +0 -0
  84. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/history_analyzer.py +0 -0
  85. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/intent_parser.py +0 -0
  86. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/llm_factory.py +0 -0
  87. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/pr_drafter.py +0 -0
  88. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/prompts/blame.py +0 -0
  89. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/prompts/changelog.py +0 -0
  90. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/prompts/conflict.py +0 -0
  91. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/prompts/doctor.py +0 -0
  92. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/prompts/explain.py +0 -0
  93. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/prompts/ignore.py +0 -0
  94. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/prompts/intent.py +0 -0
  95. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/prompts/pr.py +0 -0
  96. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/prompts/rebase.py +0 -0
  97. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/prompts/review.py +0 -0
  98. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/prompts/search.py +0 -0
  99. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/prompts/standup.py +0 -0
  100. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/prompts/undo.py +0 -0
  101. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/push_resolver.py +0 -0
  102. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ai/rebase_helper.py +0 -0
  103. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/core/config.py +0 -0
  104. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/core/safety.py +0 -0
  105. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ui/banner.py +0 -0
  106. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ui/dashboard.py +0 -0
  107. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ui/prompts.py +0 -0
  108. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/ui/themes.py +0 -0
  109. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/utils/conflict_parser.py +0 -0
  110. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/utils/diff_parser.py +0 -0
  111. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/utils/i18n.py +0 -0
  112. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/utils/string_utils.py +0 -0
  113. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/ace/utils/update_checker.py +0 -0
  114. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/media/cli_in_action.svg +0 -0
  115. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/media/dashboard.svg +0 -0
  116. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/media/stats.svg +0 -0
  117. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/conftest.py +0 -0
  118. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/e2e/conftest.py +0 -0
  119. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/e2e/test_tier1_features.py +0 -0
  120. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/e2e/test_tier2_boundaries.py +0 -0
  121. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/e2e/test_tier3_combinations.py +0 -0
  122. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/e2e/test_tier4_workloads.py +0 -0
  123. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_alias.py +0 -0
  124. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_blame.py +0 -0
  125. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_changelog_generator.py +0 -0
  126. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_code_reviewer.py +0 -0
  127. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_commit_generator_cleaning.py +0 -0
  128. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_config_atomic_write.py +0 -0
  129. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_conflict_resolver.py +0 -0
  130. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_conflict_resolver_backup.py +0 -0
  131. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_context_gitdir_detection.py +0 -0
  132. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_diagnostics.py +0 -0
  133. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_diff_trimmer.py +0 -0
  134. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_fallback.py +0 -0
  135. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_git_ops.py +0 -0
  136. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_help.py +0 -0
  137. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_history_analyzer.py +0 -0
  138. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_hooks.py +0 -0
  139. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_i18n.py +0 -0
  140. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_ignore.py +0 -0
  141. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_intent_parser.py +0 -0
  142. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_interceptor.py +0 -0
  143. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_llm_factory.py +0 -0
  144. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_llm_factory_ollama.py +0 -0
  145. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_merge_state.py +0 -0
  146. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_pr_drafter.py +0 -0
  147. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_push_resolver.py +0 -0
  148. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_rebase_helper.py +0 -0
  149. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_safety.py +0 -0
  150. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_search.py +0 -0
  151. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_standup.py +0 -0
  152. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_string_utils.py +0 -0
  153. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_undo.py +0 -0
  154. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_update_checker.py +0 -0
  155. {ace_git_copilot-0.7.0 → ace_git_copilot-0.7.4}/tests/test_workspace.py +0 -0
@@ -0,0 +1,64 @@
1
+ name: 🐛 Bug Report
2
+ description: Report an issue or unexpected behavior in Ace
3
+ title: "[Bug]: "
4
+ labels: ["bug", "triage"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for taking the time to report an issue! Please provide as much detail as possible to help us reproduce and fix it.
10
+ - type: input
11
+ id: version
12
+ attributes:
13
+ label: Ace Version
14
+ description: Run `ace --version` to find your installed version.
15
+ placeholder: "e.g. 0.7.4"
16
+ validations:
17
+ required: true
18
+ - type: dropdown
19
+ id: provider
20
+ attributes:
21
+ label: AI Model / Backend Provider
22
+ description: Which AI provider were you using when the issue occurred?
23
+ options:
24
+ - Ollama (Local)
25
+ - NVIDIA NIM (Cloud)
26
+ - OpenAI
27
+ - Anthropic
28
+ - Google Gemini
29
+ - Custom OpenAI-Compatible
30
+ - None / Standard Git Pass-Through
31
+ validations:
32
+ required: true
33
+ - type: input
34
+ id: os
35
+ attributes:
36
+ label: Operating System & Shell
37
+ description: What OS and terminal shell are you running?
38
+ placeholder: "e.g. Windows 11 (PowerShell 7) / macOS Sonoma (zsh) / Ubuntu 24.04 (bash)"
39
+ validations:
40
+ required: true
41
+ - type: textarea
42
+ id: description
43
+ attributes:
44
+ label: Describe the Bug
45
+ description: A clear and concise description of what happened vs what you expected.
46
+ validations:
47
+ required: true
48
+ - type: textarea
49
+ id: reproduction
50
+ attributes:
51
+ label: Steps to Reproduce
52
+ description: Exact commands executed leading up to the issue.
53
+ placeholder: |
54
+ 1. Run 'ace stage ...'
55
+ 2. Run 'ace commit ...'
56
+ 3. See error
57
+ validations:
58
+ required: true
59
+ - type: textarea
60
+ id: logs
61
+ attributes:
62
+ label: Terminal Logs / Error Output
63
+ description: Please paste the command output or traceback.
64
+ render: shell
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: 💬 Ask a Question or Discuss Ideas
4
+ url: https://github.com/jachinsamuel/Ace/discussions
5
+ about: Ask questions, share workflows, and discuss with other Ace users.
6
+ - name: 📖 Documentation & Setup Guide
7
+ url: https://github.com/jachinsamuel/Ace#readme
8
+ about: Read the official documentation and configuration options.
@@ -0,0 +1,37 @@
1
+ name: 💡 Feature Request
2
+ description: Suggest a new capability, AI prompt improvement, or CLI command for Ace
3
+ title: "[Feature]: "
4
+ labels: ["enhancement"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thank you for suggesting a new idea to make Ace better!
10
+ - type: textarea
11
+ id: problem
12
+ attributes:
13
+ label: Is your feature request related to a problem?
14
+ description: A clear and concise description of the friction or limitation you encounter.
15
+ placeholder: "e.g. I'm always frustrated when I want to..."
16
+ validations:
17
+ required: true
18
+ - type: textarea
19
+ id: solution
20
+ attributes:
21
+ label: Describe the proposed solution
22
+ description: How should this feature work? (e.g. `ace release ...` or a new flag)
23
+ validations:
24
+ required: true
25
+ - type: textarea
26
+ id: alternatives
27
+ attributes:
28
+ label: Describe alternatives you've considered
29
+ description: Any other tools, workarounds, or approaches you've tried.
30
+ - type: dropdown
31
+ id: contribution
32
+ attributes:
33
+ label: Would you be interested in contributing a Pull Request?
34
+ options:
35
+ - "Yes, I would like to submit a PR for this!"
36
+ - "Maybe with some guidance"
37
+ - "No, just proposing the idea"
@@ -0,0 +1,19 @@
1
+ ## Description
2
+ Briefly explain the motivation, context, and what changes are being introduced in this pull request.
3
+
4
+ ## Type of Change
5
+ - [ ] 🐛 Bug fix (non-breaking change which fixes an issue)
6
+ - [ ] ✨ New feature (non-breaking change which adds functionality)
7
+ - [ ] ⚡ Performance improvement / startup optimization
8
+ - [ ] 📝 Documentation update
9
+ - [ ] 🎨 UI / Theme / Rich formatting improvement
10
+ - [ ] 🧪 Test suite addition or enhancement
11
+
12
+ ## Testing Checklist
13
+ - [ ] I have run `pytest` and all unit tests pass locally.
14
+ - [ ] I have run `ruff check ace tests` with zero errors.
15
+ - [ ] I have tested this change against both cloud (NVIDIA/OpenAI) and local (Ollama) backends if applicable.
16
+ - [ ] I have updated the documentation / README if this PR introduces a new command or flag.
17
+
18
+ ## Related Issues
19
+ Fixes #(issue)
@@ -0,0 +1,10 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "pip"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
7
+ - package-ecosystem: "github-actions"
8
+ directory: "/"
9
+ schedule:
10
+ interval: "monthly"
@@ -43,6 +43,12 @@ env/
43
43
  .coverage
44
44
  htmlcov/
45
45
  .cov/
46
+ .ruff_cache/
47
+ .mypy_cache/
48
+
49
+ # Agent & Scratch Artifacts
50
+ .agents/
51
+ scratch/
46
52
 
47
53
  # OS-specific files
48
54
  desktop.ini
@@ -0,0 +1,227 @@
1
+ Metadata-Version: 2.5
2
+ Name: ace-git-copilot
3
+ Version: 0.7.4
4
+ Summary: AI-powered Git copilot — talk to Git in plain English
5
+ Project-URL: Homepage, https://github.com/jachinsamuel/Ace
6
+ Project-URL: Documentation, https://github.com/jachinsamuel/Ace#readme
7
+ Project-URL: Bug-Tracker, https://github.com/jachinsamuel/Ace/issues
8
+ Author-email: Jachin Samuel <jachinsamuel007@gmail.com>
9
+ License: MIT
10
+ License-File: LICENSE
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Requires-Python: >=3.11
17
+ Requires-Dist: click>=8.0
18
+ Requires-Dist: gitpython>=3.1
19
+ Requires-Dist: langchain-anthropic>=0.1.0
20
+ Requires-Dist: langchain-nvidia-ai-endpoints>=0.3
21
+ Requires-Dist: langchain-ollama>=0.3
22
+ Requires-Dist: langchain-openai>=0.1.0
23
+ Requires-Dist: langchain>=0.3
24
+ Requires-Dist: python-dotenv>=1.0
25
+ Requires-Dist: rich>=13.0
26
+ Requires-Dist: toml>=0.10.2
27
+ Requires-Dist: typer[all]>=0.12
28
+ Provides-Extra: dev
29
+ Requires-Dist: pytest; extra == 'dev'
30
+ Requires-Dist: pytest-cov; extra == 'dev'
31
+ Requires-Dist: ruff>=0.15; extra == 'dev'
32
+ Description-Content-Type: text/markdown
33
+
34
+ # Ace — AI-Powered Git Copilot
35
+ Author: Jachin Samuel <jachinsamuel007@gmail.com>
36
+ ```text
37
+ █████╗ ██████╗ ███████╗
38
+ ██╔══██╗ ██╔════╝ ██╔════╝
39
+ ███████║ ██║ █████╗
40
+ ██╔══██║ ██║ ██╔══╝
41
+ ██║ ██║ ╚██████╗ ███████╗
42
+ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝
43
+ ```
44
+
45
+ [![GitHub Release](https://img.shields.io/github/v/release/jachinsamuel/Ace?color=blue&label=release)](https://github.com/jachinsamuel/Ace/releases)
46
+ [![PyPI Version](https://img.shields.io/pypi/v/ace-git-copilot.svg)](https://pypi.org/project/ace-git-copilot/)
47
+ [![PyPI Downloads](https://img.shields.io/pypi/dm/ace-git-copilot.svg)](https://pypi.org/project/ace-git-copilot/)
48
+ [![Python Version](https://img.shields.io/pypi/pyversions/ace-git-copilot.svg)](https://pypi.org/project/ace-git-copilot/)
49
+ [![License: MIT](https://img.shields.io/github/license/jachinsamuel/Ace.svg)](https://opensource.org/licenses/MIT)
50
+ [![GitHub Stars](https://img.shields.io/github/stars/jachinsamuel/Ace.svg)](https://github.com/jachinsamuel/Ace/stargazers)
51
+ [![GitHub Issues](https://img.shields.io/github/issues/jachinsamuel/Ace.svg)](https://github.com/jachinsamuel/Ace/issues)
52
+
53
+ Ace is an intelligent command-line copilot that brings AI assistance directly to your Git workflow. Talk to Git in plain English — Ace translates your intents into Git commands, explains what it is doing, and runs them safely. It also features universal Git command pass-through and an interactive terminal dashboard (TUI) to manage your repositories effortlessly.
54
+
55
+ ![Ace CLI in action](media/cli_in_action.svg)
56
+
57
+ ---
58
+
59
+ ## Features
60
+
61
+ * **Universal Git Pass-Through**: Run ANY standard Git command or custom Git extension directly through Ace (e.g. `ace status`, `ace log --oneline -n 10`, `ace checkout -b feature`, `ace push origin main`, `ace stash pop`).
62
+ * **Natural Language Git Commands**: Translate plain English requests like *"undo my last commit but keep changes"* or *"switch to a new branch called design-updates"* into clean, standard Git operations without needing quotes.
63
+ * **AI-Powered Conventional Commits**: Analyzes staged diffs and generates standardized Conventional Commit messages (`feat:`, `fix:`, `refactor:`, `docs:`, etc.) automatically across both cloud and local offline LLMs.
64
+ * **Custom Shortcuts & Aliases**: Create customized multi-command workflows with `ace alias` (e.g. `ace ship` runs `git add . && ace commit -y && git push`).
65
+ * **Automated Code Review**: Rates code quality on a 10-point scale and identifies bugs, security vulnerabilities, or performance bottlenecks in staged or unstaged diffs.
66
+ * **Interactive Merge Conflict Resolver**: Walks you step-by-step through conflicted files and provides AI-suggested 3-way merged blocks.
67
+ * **Multi-Language / i18n Output**: Localized AI explanations and commit suggestions in 15+ languages (English, Chinese, Spanish, French, German, Japanese, Korean, Hindi, and more).
68
+ * **Interactive TUI Dashboard (`ace dash`)**: Real-time terminal repository browser displaying branch status, commit logs, workspace navigation, and interactive menus.
69
+ * **Repository Health Doctor (`ace doctor`)**: Detects active lock files, detached HEAD states, and oversized untracked files with step-by-step AI recovery guidance.
70
+ * **AI Git Blame (`ace blame`)**: Inspects commit history and diff patches to explain *why* a specific line of code was written or modified.
71
+ * **Rich Repo Statistics (`ace stats`)**: Visualizes commit frequency charts, top contributors, and repository language/extension breakdowns.
72
+ * **Automated Release Changelogs (`ace changelog`)**: Compiles categorized release changelogs in Markdown since the previous tag.
73
+ * **Multi-Repo Daily Standups (`ace standup`)**: Generates structured summaries of your recent contributions across one or more repositories.
74
+ * **Smart Git Hooks (`ace hook`)**: One-command installation for pre-commit review checks and prepare-commit-msg AI drafting.
75
+ * **AI Branch Auto-Squashing (`ace squash`)**: Automatically analyzes commit histories and guides clean interactive rebases.
76
+ * **Built-in Safety System**: Classifies actions into safe, moderate, and destructive tiers with automatic stashing and interactive confirmation guards.
77
+
78
+ ---
79
+
80
+ ## Installation
81
+
82
+ ### Option A: Quick 1-Line Installer (Recommended)
83
+
84
+ **Linux & macOS:**
85
+ ```bash
86
+ curl -fsSL https://raw.githubusercontent.com/jachinsamuel/Ace/master/install.sh | bash
87
+ ```
88
+
89
+ **Windows (PowerShell):**
90
+ ```powershell
91
+ irm https://raw.githubusercontent.com/jachinsamuel/Ace/master/install.ps1 | iex
92
+ ```
93
+
94
+ ---
95
+
96
+ ### Option B: Install via standard pip
97
+ ```bash
98
+ pip install ace-git-copilot
99
+ ```
100
+
101
+ *Note: You can also execute Ace directly through Python module execution:*
102
+ ```bash
103
+ python -m ace dash
104
+ ```
105
+
106
+ ### Option C: Install via pipx / uv (Isolated)
107
+ ```bash
108
+ # via pipx
109
+ pipx install ace-git-copilot
110
+
111
+ # or via uv
112
+ uv tool install ace-git-copilot
113
+ ```
114
+
115
+ ---
116
+
117
+ ## Configuration and AI Providers
118
+
119
+ Launch the interactive configuration wizard:
120
+ ```bash
121
+ ace setup
122
+ ```
123
+
124
+ Ace stores your configuration at `~/.ace/config.toml`. It supports 6 AI model backends:
125
+
126
+ | Provider | Type | Default Model | Key / URL Setup |
127
+ |:---|:---|:---|:---|
128
+ | **NVIDIA NIM** | Cloud (Fast) | `meta/llama-3.1-8b-instruct` | `NVIDIA_API_KEY` (Free at [build.nvidia.com](https://build.nvidia.com/)) |
129
+ | **Ollama** | Local (Private/Offline) | `qwen2.5-coder:7b` | `http://localhost:11434` (Auto-pulled) |
130
+ | **Google Gemini** | Cloud | `gemini-1.5-flash` | `GOOGLE_API_KEY` / `GEMINI_API_KEY` |
131
+ | **OpenAI** | Cloud | `gpt-4o-mini` | `OPENAI_API_KEY` |
132
+ | **Anthropic** | Cloud | `claude-3-5-sonnet-latest` | `ANTHROPIC_API_KEY` |
133
+ | **Custom OpenAI-Compatible** | Cloud / Self-hosted | `custom-model` | `CUSTOM_API_KEY` + `CUSTOM_API_BASE` |
134
+
135
+ You can also switch providers directly in the CLI:
136
+ ```bash
137
+ ace config
138
+ ```
139
+
140
+ ---
141
+
142
+ ## Usage Guide
143
+
144
+ ### 1. Plain-English Natural Language
145
+ Speak to Git in plain English directly without quotes:
146
+ ```bash
147
+ ace stage everything and commit with a message about authentication
148
+ ace undo my last commit but keep the files
149
+ ace switch to a new branch called design-updates
150
+ ```
151
+
152
+ ### 2. Custom Shortcuts (`ace alias`)
153
+ Run pre-configured shortcuts or define your own multi-step workflows:
154
+ ```bash
155
+ # Run default shortcut (stages, commits with AI, and pushes)
156
+ ace ship
157
+
158
+ # Create custom shortcut
159
+ ace alias add deploy "git add . && ace commit -y && git push origin staging"
160
+
161
+ # List all shortcuts
162
+ ace alias list
163
+ ```
164
+
165
+ ### 3. Command-Line Reference
166
+
167
+ | Command | Alias / Shorthand | Description |
168
+ |:---|:---|:---|
169
+ | `ace setup` | — | Interactive setup wizard for model providers and language. |
170
+ | `ace stage [files]` | `ace add` | Stage specific files or all untracked changes. |
171
+ | `ace commit` | — | AI Conventional Commit generator (`-y` to skip confirmation). |
172
+ | `ace review` | — | Run AI code review & quality scoring (`--strict` for pre-commit). |
173
+ | `ace resolve` | — | Interactive 3-way merge conflict resolver. |
174
+ | `ace explain <query>` | — | Explain Git concepts, error messages, or commands. |
175
+ | `ace doctor` | — | Run repository diagnostics (locks, detached HEAD, large files). |
176
+ | `ace hook <action>` | — | Install or uninstall pre-commit and prepare-commit-msg hooks. |
177
+ | `ace stats` | — | Visualize repository activity, contributors, and extensions. |
178
+ | `ace changelog` | — | Generate categorized release notes since last tag. |
179
+ | `ace standup` | — | Generate structured daily standup report from recent commits. |
180
+ | `ace blame <file> <line>`| — | Explain the purpose and context behind a specific line of code. |
181
+ | `ace pr` | — | Draft a Markdown pull request title and description. |
182
+ | `ace search <query>` | — | Semantically search commit history with interactive checkout. |
183
+ | `ace squash` | — | Analyze branch history and perform AI-guided rebasing. |
184
+ | `ace ignore <pattern>` | — | Generate and append rules to `.gitignore`. |
185
+ | `ace alias <action>` | — | Manage custom command workflows (`list`, `add`, `remove`). |
186
+ | `ace undo` | — | Safely roll back the previous Git action with automated safety checks. |
187
+ | `ace workspace` | `ace ws` | Multi-repository cockpit to monitor workspace directories. |
188
+ | `ace dash` | — | Launch the interactive Terminal User Interface (TUI). |
189
+ | `ace config` | — | View active configuration settings and active provider. |
190
+ | `ace help` | — | Display command reference and usage guide. |
191
+
192
+ ---
193
+
194
+ ## Interactive Terminal Dashboard (TUI)
195
+
196
+ Launch the repository management cockpit:
197
+ ```bash
198
+ ace dash
199
+ ```
200
+
201
+ ![Ace TUI Dashboard](media/dashboard.svg)
202
+
203
+ ---
204
+
205
+ ## Repository Statistics (`ace stats`)
206
+
207
+ View visual commit timelines, contributor breakdowns, and file extension distributions:
208
+
209
+ ![Ace Stats](media/stats.svg)
210
+
211
+ ---
212
+
213
+ ## Star History
214
+
215
+ [![Star History Chart](https://api.star-history.com/svg?repos=jachinsamuel/Ace&type=Date)](https://star-history.com/#jachinsamuel/Ace&Date)
216
+
217
+ ---
218
+
219
+ ## Contributing
220
+
221
+ Contributions, bug reports, and feature requests are always welcome! Check out our [Contributing Guide](CONTRIBUTING.md) and [Issue Templates](.github/ISSUE_TEMPLATE) to get started.
222
+
223
+ ---
224
+
225
+ ## License
226
+
227
+ Distributed under the MIT License. See [LICENSE](LICENSE) for more details.
@@ -0,0 +1,194 @@
1
+ # Ace — AI-Powered Git Copilot
2
+ Author: Jachin Samuel <jachinsamuel007@gmail.com>
3
+ ```text
4
+ █████╗ ██████╗ ███████╗
5
+ ██╔══██╗ ██╔════╝ ██╔════╝
6
+ ███████║ ██║ █████╗
7
+ ██╔══██║ ██║ ██╔══╝
8
+ ██║ ██║ ╚██████╗ ███████╗
9
+ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝
10
+ ```
11
+
12
+ [![GitHub Release](https://img.shields.io/github/v/release/jachinsamuel/Ace?color=blue&label=release)](https://github.com/jachinsamuel/Ace/releases)
13
+ [![PyPI Version](https://img.shields.io/pypi/v/ace-git-copilot.svg)](https://pypi.org/project/ace-git-copilot/)
14
+ [![PyPI Downloads](https://img.shields.io/pypi/dm/ace-git-copilot.svg)](https://pypi.org/project/ace-git-copilot/)
15
+ [![Python Version](https://img.shields.io/pypi/pyversions/ace-git-copilot.svg)](https://pypi.org/project/ace-git-copilot/)
16
+ [![License: MIT](https://img.shields.io/github/license/jachinsamuel/Ace.svg)](https://opensource.org/licenses/MIT)
17
+ [![GitHub Stars](https://img.shields.io/github/stars/jachinsamuel/Ace.svg)](https://github.com/jachinsamuel/Ace/stargazers)
18
+ [![GitHub Issues](https://img.shields.io/github/issues/jachinsamuel/Ace.svg)](https://github.com/jachinsamuel/Ace/issues)
19
+
20
+ Ace is an intelligent command-line copilot that brings AI assistance directly to your Git workflow. Talk to Git in plain English — Ace translates your intents into Git commands, explains what it is doing, and runs them safely. It also features universal Git command pass-through and an interactive terminal dashboard (TUI) to manage your repositories effortlessly.
21
+
22
+ ![Ace CLI in action](media/cli_in_action.svg)
23
+
24
+ ---
25
+
26
+ ## Features
27
+
28
+ * **Universal Git Pass-Through**: Run ANY standard Git command or custom Git extension directly through Ace (e.g. `ace status`, `ace log --oneline -n 10`, `ace checkout -b feature`, `ace push origin main`, `ace stash pop`).
29
+ * **Natural Language Git Commands**: Translate plain English requests like *"undo my last commit but keep changes"* or *"switch to a new branch called design-updates"* into clean, standard Git operations without needing quotes.
30
+ * **AI-Powered Conventional Commits**: Analyzes staged diffs and generates standardized Conventional Commit messages (`feat:`, `fix:`, `refactor:`, `docs:`, etc.) automatically across both cloud and local offline LLMs.
31
+ * **Custom Shortcuts & Aliases**: Create customized multi-command workflows with `ace alias` (e.g. `ace ship` runs `git add . && ace commit -y && git push`).
32
+ * **Automated Code Review**: Rates code quality on a 10-point scale and identifies bugs, security vulnerabilities, or performance bottlenecks in staged or unstaged diffs.
33
+ * **Interactive Merge Conflict Resolver**: Walks you step-by-step through conflicted files and provides AI-suggested 3-way merged blocks.
34
+ * **Multi-Language / i18n Output**: Localized AI explanations and commit suggestions in 15+ languages (English, Chinese, Spanish, French, German, Japanese, Korean, Hindi, and more).
35
+ * **Interactive TUI Dashboard (`ace dash`)**: Real-time terminal repository browser displaying branch status, commit logs, workspace navigation, and interactive menus.
36
+ * **Repository Health Doctor (`ace doctor`)**: Detects active lock files, detached HEAD states, and oversized untracked files with step-by-step AI recovery guidance.
37
+ * **AI Git Blame (`ace blame`)**: Inspects commit history and diff patches to explain *why* a specific line of code was written or modified.
38
+ * **Rich Repo Statistics (`ace stats`)**: Visualizes commit frequency charts, top contributors, and repository language/extension breakdowns.
39
+ * **Automated Release Changelogs (`ace changelog`)**: Compiles categorized release changelogs in Markdown since the previous tag.
40
+ * **Multi-Repo Daily Standups (`ace standup`)**: Generates structured summaries of your recent contributions across one or more repositories.
41
+ * **Smart Git Hooks (`ace hook`)**: One-command installation for pre-commit review checks and prepare-commit-msg AI drafting.
42
+ * **AI Branch Auto-Squashing (`ace squash`)**: Automatically analyzes commit histories and guides clean interactive rebases.
43
+ * **Built-in Safety System**: Classifies actions into safe, moderate, and destructive tiers with automatic stashing and interactive confirmation guards.
44
+
45
+ ---
46
+
47
+ ## Installation
48
+
49
+ ### Option A: Quick 1-Line Installer (Recommended)
50
+
51
+ **Linux & macOS:**
52
+ ```bash
53
+ curl -fsSL https://raw.githubusercontent.com/jachinsamuel/Ace/master/install.sh | bash
54
+ ```
55
+
56
+ **Windows (PowerShell):**
57
+ ```powershell
58
+ irm https://raw.githubusercontent.com/jachinsamuel/Ace/master/install.ps1 | iex
59
+ ```
60
+
61
+ ---
62
+
63
+ ### Option B: Install via standard pip
64
+ ```bash
65
+ pip install ace-git-copilot
66
+ ```
67
+
68
+ *Note: You can also execute Ace directly through Python module execution:*
69
+ ```bash
70
+ python -m ace dash
71
+ ```
72
+
73
+ ### Option C: Install via pipx / uv (Isolated)
74
+ ```bash
75
+ # via pipx
76
+ pipx install ace-git-copilot
77
+
78
+ # or via uv
79
+ uv tool install ace-git-copilot
80
+ ```
81
+
82
+ ---
83
+
84
+ ## Configuration and AI Providers
85
+
86
+ Launch the interactive configuration wizard:
87
+ ```bash
88
+ ace setup
89
+ ```
90
+
91
+ Ace stores your configuration at `~/.ace/config.toml`. It supports 6 AI model backends:
92
+
93
+ | Provider | Type | Default Model | Key / URL Setup |
94
+ |:---|:---|:---|:---|
95
+ | **NVIDIA NIM** | Cloud (Fast) | `meta/llama-3.1-8b-instruct` | `NVIDIA_API_KEY` (Free at [build.nvidia.com](https://build.nvidia.com/)) |
96
+ | **Ollama** | Local (Private/Offline) | `qwen2.5-coder:7b` | `http://localhost:11434` (Auto-pulled) |
97
+ | **Google Gemini** | Cloud | `gemini-1.5-flash` | `GOOGLE_API_KEY` / `GEMINI_API_KEY` |
98
+ | **OpenAI** | Cloud | `gpt-4o-mini` | `OPENAI_API_KEY` |
99
+ | **Anthropic** | Cloud | `claude-3-5-sonnet-latest` | `ANTHROPIC_API_KEY` |
100
+ | **Custom OpenAI-Compatible** | Cloud / Self-hosted | `custom-model` | `CUSTOM_API_KEY` + `CUSTOM_API_BASE` |
101
+
102
+ You can also switch providers directly in the CLI:
103
+ ```bash
104
+ ace config
105
+ ```
106
+
107
+ ---
108
+
109
+ ## Usage Guide
110
+
111
+ ### 1. Plain-English Natural Language
112
+ Speak to Git in plain English directly without quotes:
113
+ ```bash
114
+ ace stage everything and commit with a message about authentication
115
+ ace undo my last commit but keep the files
116
+ ace switch to a new branch called design-updates
117
+ ```
118
+
119
+ ### 2. Custom Shortcuts (`ace alias`)
120
+ Run pre-configured shortcuts or define your own multi-step workflows:
121
+ ```bash
122
+ # Run default shortcut (stages, commits with AI, and pushes)
123
+ ace ship
124
+
125
+ # Create custom shortcut
126
+ ace alias add deploy "git add . && ace commit -y && git push origin staging"
127
+
128
+ # List all shortcuts
129
+ ace alias list
130
+ ```
131
+
132
+ ### 3. Command-Line Reference
133
+
134
+ | Command | Alias / Shorthand | Description |
135
+ |:---|:---|:---|
136
+ | `ace setup` | — | Interactive setup wizard for model providers and language. |
137
+ | `ace stage [files]` | `ace add` | Stage specific files or all untracked changes. |
138
+ | `ace commit` | — | AI Conventional Commit generator (`-y` to skip confirmation). |
139
+ | `ace review` | — | Run AI code review & quality scoring (`--strict` for pre-commit). |
140
+ | `ace resolve` | — | Interactive 3-way merge conflict resolver. |
141
+ | `ace explain <query>` | — | Explain Git concepts, error messages, or commands. |
142
+ | `ace doctor` | — | Run repository diagnostics (locks, detached HEAD, large files). |
143
+ | `ace hook <action>` | — | Install or uninstall pre-commit and prepare-commit-msg hooks. |
144
+ | `ace stats` | — | Visualize repository activity, contributors, and extensions. |
145
+ | `ace changelog` | — | Generate categorized release notes since last tag. |
146
+ | `ace standup` | — | Generate structured daily standup report from recent commits. |
147
+ | `ace blame <file> <line>`| — | Explain the purpose and context behind a specific line of code. |
148
+ | `ace pr` | — | Draft a Markdown pull request title and description. |
149
+ | `ace search <query>` | — | Semantically search commit history with interactive checkout. |
150
+ | `ace squash` | — | Analyze branch history and perform AI-guided rebasing. |
151
+ | `ace ignore <pattern>` | — | Generate and append rules to `.gitignore`. |
152
+ | `ace alias <action>` | — | Manage custom command workflows (`list`, `add`, `remove`). |
153
+ | `ace undo` | — | Safely roll back the previous Git action with automated safety checks. |
154
+ | `ace workspace` | `ace ws` | Multi-repository cockpit to monitor workspace directories. |
155
+ | `ace dash` | — | Launch the interactive Terminal User Interface (TUI). |
156
+ | `ace config` | — | View active configuration settings and active provider. |
157
+ | `ace help` | — | Display command reference and usage guide. |
158
+
159
+ ---
160
+
161
+ ## Interactive Terminal Dashboard (TUI)
162
+
163
+ Launch the repository management cockpit:
164
+ ```bash
165
+ ace dash
166
+ ```
167
+
168
+ ![Ace TUI Dashboard](media/dashboard.svg)
169
+
170
+ ---
171
+
172
+ ## Repository Statistics (`ace stats`)
173
+
174
+ View visual commit timelines, contributor breakdowns, and file extension distributions:
175
+
176
+ ![Ace Stats](media/stats.svg)
177
+
178
+ ---
179
+
180
+ ## Star History
181
+
182
+ [![Star History Chart](https://api.star-history.com/svg?repos=jachinsamuel/Ace&type=Date)](https://star-history.com/#jachinsamuel/Ace&Date)
183
+
184
+ ---
185
+
186
+ ## Contributing
187
+
188
+ Contributions, bug reports, and feature requests are always welcome! Check out our [Contributing Guide](CONTRIBUTING.md) and [Issue Templates](.github/ISSUE_TEMPLATE) to get started.
189
+
190
+ ---
191
+
192
+ ## License
193
+
194
+ Distributed under the MIT License. See [LICENSE](LICENSE) for more details.
@@ -0,0 +1 @@
1
+ __version__ = "0.7.4"
@@ -101,4 +101,33 @@ class CommitGenerator:
101
101
  break
102
102
  message = "\n".join(lines).strip()
103
103
 
104
+ # Ensure Conventional Commit format on subject line (especially for local Ollama models)
105
+ if format_type == "conventional" and message:
106
+ msg_lines = message.splitlines()
107
+ first_line = msg_lines[0].strip()
108
+
109
+ # Conventional commit regex pattern: <type>(<scope>): <subject> or <type>: <subject>
110
+ conv_pattern = r"^(feat|fix|docs|style|refactor|perf|test|build|ci|chore)(\([a-zA-Z0-9_\-/\.]+\))?!?: .+"
111
+ if not re.match(conv_pattern, first_line):
112
+ lower_first = first_line.lower()
113
+ staged_files = status.get("staged", [])
114
+
115
+ if any(f.endswith((".md", ".rst", ".txt")) for f in staged_files):
116
+ inferred_type = "docs"
117
+ elif any("test" in f.lower() for f in staged_files):
118
+ inferred_type = "test"
119
+ elif any(f.startswith((".github", "Dockerfile", "pyproject.toml")) for f in staged_files):
120
+ inferred_type = "build"
121
+ elif any(k in lower_first for k in ("fix", "bug", "error", "repair", "resolve", "correct")):
122
+ inferred_type = "fix"
123
+ elif any(k in lower_first for k in ("refactor", "clean", "simplify", "restructure", "optimize")):
124
+ inferred_type = "refactor"
125
+ else:
126
+ inferred_type = "feat"
127
+
128
+ # Un-capitalize first letter of subject
129
+ subj = first_line[0].lower() + first_line[1:] if first_line else first_line
130
+ msg_lines[0] = f"{inferred_type}: {subj}"
131
+ message = "\n".join(msg_lines).strip()
132
+
104
133
  return message
@@ -113,7 +113,7 @@ class ConflictResolver:
113
113
  norm_content = norm_content.replace(norm_block, replacement, 1)
114
114
  # Restore Windows line endings if they were originally present
115
115
  if "\r\n" in content:
116
- content = norm_content.replace("\n", "\r\n")
116
+ content = norm_content.replace("\r\n", "\n").replace("\r", "").replace("\n", "\r\n")
117
117
  else:
118
118
  content = norm_content
119
119
  else:
@@ -8,6 +8,10 @@ Format structure:
8
8
 
9
9
  <body>
10
10
 
11
+ CRITICAL REQUIREMENT:
12
+ The VERY FIRST LINE of your response MUST begin with a conventional commit prefix (e.g. `feat:`, `fix:`, `refactor:`, `docs:`, `style:`, `chore:`, `perf:`).
13
+ NEVER output plain titles or sentences like "Update Reactor Arc Visualization" without a type prefix.
14
+
11
15
  Rules:
12
16
  1. Type must be one of the following:
13
17
  - feat: A new feature
@@ -21,14 +25,27 @@ Rules:
21
25
  - ci: Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, Greenkeeper)
22
26
  - chore: Other changes that don't modify src or test files
23
27
  2. Scope is optional but highly recommended. It should represent the module or component affected (e.g., auth, api, db, ui, core). Use lowercase.
24
- 3. Subject line must:
28
+ 3. Subject line MUST start with `<type>(<scope>): ` or `<type>: `. NEVER start with plain sentences like "Update README..." or "Added feature...".
29
+ 4. Subject line must:
25
30
  - Be under 72 characters
26
- - Use the imperative, present tense: "change", not "changed" nor "changes"
27
- - Don't capitalize the first letter of the subject
31
+ - Use imperative, present tense: "change", not "changed" nor "changes"
32
+ - Don't capitalize the first letter of the subject after the colon
28
33
  - Do not end with a period
29
- 4. The body is optional but should be generated for non-trivial commits. It should list key bullet points describing specific details of what was changed. Use a blank line between the subject and the body.
30
- 5. If you detect references to issue or ticket numbers in the branch name or files (e.g., issue-102, #102), include a line "Closes #102" at the end of the body.
31
- 6. Do NOT include markdown code blocks (e.g. ```) in your output. Return only the raw commit message.
34
+ 5. The body is optional but should be generated for non-trivial commits. It should list key bullet points describing specific details of what was changed. Use a blank line between the subject and the body.
35
+ 6. Do NOT include markdown code blocks (e.g. ```) or conversational intro headers. Return ONLY the raw commit message.
36
+
37
+ Examples of required output structure:
38
+
39
+ Example 1:
40
+ feat(ui): add cyber-snake game component
41
+
42
+ - Implement energy orb collection logic
43
+ - Add responsive touch controls for mobile devices
44
+
45
+ Example 2:
46
+ docs(readme): update project details and links
47
+
48
+ - Refresh overview badges and links
32
49
 
33
50
  Context about the repository and the branch is provided below to help you choose the best type and scope.
34
51
  """.strip()