cmt-cli 1.0.0__tar.gz → 1.0.2__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.
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/.gitignore +3 -1
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/PKG-INFO +1 -1
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/pyproject.toml +1 -1
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/ai/openai.py +9 -7
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/ai/prompt.py +7 -1
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/cli.py +1 -2
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/uv.lock +1 -1
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/.github/workflows/test.yml +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/.python-version +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/LICENSE +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/README.md +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/art/cmt-cli.svg +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/__init__.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/ai/__init__.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/ai/cache.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/ai/provider.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/analysis/__init__.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/analysis/analyzer.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/core/__init__.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/core/logging.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/core/settings.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/enums/__init__.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/enums/config.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/exceptions.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/git/__init__.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/git/repository.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/models/__init__.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/models/changes.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/models/suggestion.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/schemas/__init__.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/schemas/config.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/schemas/general.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/services/__init__.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/services/pypi.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/src/cmt/utils.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/tests/__init__.py +0 -0
- {cmt_cli-1.0.0 → cmt_cli-1.0.2}/tests/unit/test_repository.py +0 -0
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import cast
|
|
3
2
|
|
|
4
3
|
from langchain.agents import create_agent
|
|
5
|
-
from langchain.agents.middleware.types import InputAgentState
|
|
6
4
|
from langchain_core.messages import BaseMessage, get_buffer_string
|
|
7
5
|
from langchain_openai import ChatOpenAI
|
|
8
6
|
from pydantic import SecretStr
|
|
9
7
|
|
|
10
8
|
from cmt.ai.cache import CommitMessageCache
|
|
11
|
-
from cmt.ai.prompt import
|
|
9
|
+
from cmt.ai.prompt import COMMIT_PROMPT_TEMPLATE, COMMIT_SYSTEM_PROMPT
|
|
12
10
|
from cmt.ai.provider import AIProvider
|
|
13
11
|
from cmt.core.settings import settings
|
|
14
12
|
from cmt.models.changes import AnalysisResult, StagedChangeSet, StagedFile
|
|
@@ -27,7 +25,7 @@ class OpenAIProvider(AIProvider):
|
|
|
27
25
|
staged_files = self._process_files(changes.files)
|
|
28
26
|
staged_diffs = changes.diff
|
|
29
27
|
|
|
30
|
-
return
|
|
28
|
+
return COMMIT_PROMPT_TEMPLATE.format_messages(
|
|
31
29
|
total_files=len(changes.files),
|
|
32
30
|
added_files=analysis.added_files,
|
|
33
31
|
modified_files=analysis.modified_files,
|
|
@@ -45,7 +43,7 @@ class OpenAIProvider(AIProvider):
|
|
|
45
43
|
|
|
46
44
|
return output.strip()
|
|
47
45
|
|
|
48
|
-
def _invoke(self, prompt
|
|
46
|
+
def _invoke(self, prompt) -> CommitSuggestion:
|
|
49
47
|
model = ChatOpenAI(
|
|
50
48
|
model=self.config.model,
|
|
51
49
|
api_key=SecretStr(self.config.api_key),
|
|
@@ -61,7 +59,7 @@ class OpenAIProvider(AIProvider):
|
|
|
61
59
|
response_format=CommitSuggestion,
|
|
62
60
|
)
|
|
63
61
|
|
|
64
|
-
result = agent.invoke(
|
|
62
|
+
result = agent.invoke(prompt)
|
|
65
63
|
|
|
66
64
|
return result["structured_response"]
|
|
67
65
|
|
|
@@ -84,13 +82,17 @@ class OpenAIProvider(AIProvider):
|
|
|
84
82
|
suggestion.message,
|
|
85
83
|
)
|
|
86
84
|
return suggestion
|
|
87
|
-
|
|
88
85
|
suggestion = self._invoke(prompt)
|
|
86
|
+
|
|
89
87
|
logger.info("Generated new commit suggestion.\n%s", suggestion)
|
|
90
88
|
|
|
91
89
|
cache.set(change_set.diff, self.config.model, suggestion)
|
|
92
90
|
logger.info("Cached new commit suggestion.")
|
|
93
91
|
|
|
92
|
+
suggestion = CommitSuggestion(
|
|
93
|
+
message=suggestion.message, description=suggestion.description
|
|
94
|
+
)
|
|
95
|
+
|
|
94
96
|
return suggestion
|
|
95
97
|
|
|
96
98
|
@staticmethod
|
|
@@ -65,7 +65,13 @@ COMMIT_PROMPT1 = ChatPromptTemplate.from_messages(
|
|
|
65
65
|
]
|
|
66
66
|
)
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
COMMIT_PROMPT_TEMPLATE2 = ChatPromptTemplate(
|
|
69
|
+
[
|
|
70
|
+
("human", COMMIT_DATA_PROMPT),
|
|
71
|
+
]
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
COMMIT_PROMPT_TEMPLATE = ChatPromptTemplate.from_messages(
|
|
69
75
|
[
|
|
70
76
|
("human", COMMIT_DATA_PROMPT),
|
|
71
77
|
]
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
import sys
|
|
3
2
|
from importlib.metadata import version
|
|
4
3
|
|
|
5
4
|
import typer
|
|
@@ -66,7 +65,7 @@ def suggest() -> None:
|
|
|
66
65
|
open_ai = OpenAIProvider()
|
|
67
66
|
|
|
68
67
|
commit = open_ai.generate_commit_message(staged_files, analysis_result)
|
|
69
|
-
|
|
68
|
+
|
|
70
69
|
commit_command = OpenAIProvider.commit_command(commit)
|
|
71
70
|
|
|
72
71
|
logger.info("Suggested commit:\n\n%s", commit_command)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|