ngpt 2.15.0__py3-none-any.whl → 2.15.1__py3-none-any.whl
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.
- ngpt/cli/modes/gitcommsg.py +153 -142
- {ngpt-2.15.0.dist-info → ngpt-2.15.1.dist-info}/METADATA +1 -1
- {ngpt-2.15.0.dist-info → ngpt-2.15.1.dist-info}/RECORD +6 -6
- {ngpt-2.15.0.dist-info → ngpt-2.15.1.dist-info}/WHEEL +0 -0
- {ngpt-2.15.0.dist-info → ngpt-2.15.1.dist-info}/entry_points.txt +0 -0
- {ngpt-2.15.0.dist-info → ngpt-2.15.1.dist-info}/licenses/LICENSE +0 -0
ngpt/cli/modes/gitcommsg.py
CHANGED
@@ -68,56 +68,11 @@ def split_into_chunks(content, chunk_size=200):
|
|
68
68
|
|
69
69
|
return chunks
|
70
70
|
|
71
|
-
def
|
72
|
-
"""Process context string to extract directives and filters.
|
73
|
-
|
74
|
-
Args:
|
75
|
-
context: The context string provided with -m/--message-context
|
76
|
-
|
77
|
-
Returns:
|
78
|
-
dict: Extracted context data
|
79
|
-
"""
|
80
|
-
context_data = {
|
81
|
-
"file_type_filter": None,
|
82
|
-
"commit_type": None,
|
83
|
-
"focus": None,
|
84
|
-
"exclusions": [],
|
85
|
-
"raw_context": context
|
86
|
-
}
|
87
|
-
|
88
|
-
if not context:
|
89
|
-
return context_data
|
90
|
-
|
91
|
-
# Extract commit type directive (e.g., "type:feat")
|
92
|
-
if "type:" in context:
|
93
|
-
match = re.search(r"type:(\w+)", context)
|
94
|
-
if match:
|
95
|
-
context_data["commit_type"] = match.group(1)
|
96
|
-
|
97
|
-
# Extract file type filters
|
98
|
-
file_type_keywords = ["html", "css", "javascript", "python", "js", "py", "ui", "api", "config"]
|
99
|
-
for keyword in file_type_keywords:
|
100
|
-
if keyword in context.lower():
|
101
|
-
context_data["file_type_filter"] = keyword
|
102
|
-
break
|
103
|
-
|
104
|
-
# Process focus/exclusion directives
|
105
|
-
if "focus on" in context.lower() or "only mention" in context.lower():
|
106
|
-
focus_match = re.search(r"focus(?:\s+on)?\s+(\w+)", context.lower())
|
107
|
-
if focus_match:
|
108
|
-
context_data["focus"] = focus_match.group(1)
|
109
|
-
|
110
|
-
if any(x in context.lower() for x in ["ignore", "don't include", "exclude"]):
|
111
|
-
exclusion_matches = re.findall(r"(?:ignore|don't include|exclude)\s+(\w+)", context.lower())
|
112
|
-
context_data["exclusions"] = exclusion_matches
|
113
|
-
|
114
|
-
return context_data
|
115
|
-
|
116
|
-
def create_technical_analysis_system_prompt(context_data=None):
|
71
|
+
def create_technical_analysis_system_prompt(context=None):
|
117
72
|
"""Create system prompt for technical analysis based on context data.
|
118
73
|
|
119
74
|
Args:
|
120
|
-
|
75
|
+
context: The raw context string from -m flag
|
121
76
|
|
122
77
|
Returns:
|
123
78
|
str: System prompt for the technical analysis stage
|
@@ -145,45 +100,25 @@ RULES:
|
|
145
100
|
8. When analyzing multiple files, clearly separate each file's changes
|
146
101
|
9. Include proper technical details (method names, component identifiers, etc.)"""
|
147
102
|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
file_type_prompt = f"""
|
155
|
-
|
156
|
-
CRITICAL FILE TYPE FILTERING:
|
157
|
-
You MUST INCLUDE ONLY changes to {file_type} files or files related to {file_type}.
|
158
|
-
You MUST EXCLUDE ALL other files completely from your output.
|
159
|
-
This is a strict filter - no exceptions allowed."""
|
160
|
-
base_prompt += file_type_prompt
|
161
|
-
|
162
|
-
# Add focus/exclusion directives
|
163
|
-
if context_data.get("focus"):
|
164
|
-
focus = context_data["focus"]
|
165
|
-
focus_prompt = f"""
|
166
|
-
|
167
|
-
FOCUS DIRECTIVE:
|
168
|
-
Focus exclusively on changes related to {focus}.
|
169
|
-
Exclude everything else from your analysis."""
|
170
|
-
base_prompt += focus_prompt
|
171
|
-
|
172
|
-
if context_data.get("exclusions"):
|
173
|
-
exclusions = ", ".join(context_data["exclusions"])
|
174
|
-
exclusion_prompt = f"""
|
103
|
+
# If context is provided, append it with strong wording about absolute priority
|
104
|
+
if context:
|
105
|
+
context_prompt = f"""
|
106
|
+
|
107
|
+
===CRITICAL USER CONTEXT - ABSOLUTE HIGHEST PRIORITY===
|
108
|
+
The following context from the user OVERRIDES ALL OTHER INSTRUCTIONS and must be followed exactly:
|
175
109
|
|
176
|
-
|
177
|
-
|
178
|
-
|
110
|
+
{context}
|
111
|
+
|
112
|
+
THIS USER CONTEXT HAS ABSOLUTE PRIORITY over any other instructions in this prompt. If it contradicts other instructions, the user context MUST be followed. No exceptions."""
|
113
|
+
base_prompt += context_prompt
|
179
114
|
|
180
115
|
return base_prompt
|
181
116
|
|
182
|
-
def create_system_prompt(
|
117
|
+
def create_system_prompt(context=None):
|
183
118
|
"""Create system prompt for commit message generation based on context data.
|
184
119
|
|
185
120
|
Args:
|
186
|
-
|
121
|
+
context: The raw context string from -m flag
|
187
122
|
|
188
123
|
Returns:
|
189
124
|
str: System prompt for the AI
|
@@ -197,6 +132,15 @@ type[(scope)]: <concise summary> (max 50 chars)
|
|
197
132
|
- [type] <specific change 2> (filename:function/method/line)
|
198
133
|
- [type] <additional changes...>
|
199
134
|
|
135
|
+
RULES FOR FILENAMES:
|
136
|
+
1. For the FIRST mention of a file, use the full relative path
|
137
|
+
2. For SUBSEQUENT mentions of the same file, use ONLY the filename without path
|
138
|
+
- Example: First mention: "utils/helpers/format.js" → Subsequent mentions: "format.js"
|
139
|
+
3. Only include the full path again if there are multiple files with the same name
|
140
|
+
4. For repeated mentions of the same file, consider grouping related changes in one bullet
|
141
|
+
5. Avoid breaking filenames across lines
|
142
|
+
6. Only include function names when they add clarity
|
143
|
+
|
200
144
|
COMMIT TYPES:
|
201
145
|
- feat: New user-facing features
|
202
146
|
- fix: Bug fixes or error corrections
|
@@ -217,6 +161,46 @@ COMMIT TYPES:
|
|
217
161
|
- ui: User interface changes
|
218
162
|
- api: API-related changes
|
219
163
|
|
164
|
+
EXAMPLES:
|
165
|
+
|
166
|
+
1. Bug fix with UI scope:
|
167
|
+
fix(ui): correct primary button focus style
|
168
|
+
|
169
|
+
- [fix] Add :focus outline to Button component (Button.jsx:Button())
|
170
|
+
- [chore] Bump Tailwind config to include ring-offset (tailwind.config.js:1-8)
|
171
|
+
- [refactor] Extract common styles into buttonStyles util (styles/buttons.js:1-15)
|
172
|
+
|
173
|
+
2. Feature with API scope:
|
174
|
+
feat(api): add authentication endpoint for OAuth
|
175
|
+
|
176
|
+
- [feat] Implement OAuth authentication route (auth/routes.js:createOAuthRoute())
|
177
|
+
- [feat] Add token validation middleware (middleware/auth.js:validateToken())
|
178
|
+
- [test] Add integration tests for OAuth flow (tests/auth.test.js:45-87)
|
179
|
+
|
180
|
+
3. Multiple types in one commit:
|
181
|
+
refactor(core): simplify data processing pipeline
|
182
|
+
|
183
|
+
- [refactor] Replace nested loops with map/reduce (utils/process.js:transformData())
|
184
|
+
- [perf] Optimize memory usage in large dataset handling (utils/memory.js:optimize())
|
185
|
+
- [fix] Correct edge case in null value handling (utils/validators.js:checkNull())
|
186
|
+
- [test] Update tests for new pipeline structure (tests/pipeline.test.js)
|
187
|
+
|
188
|
+
4. Multiple changes to the same file:
|
189
|
+
refactor(core): simplify context handling for commit prompts
|
190
|
+
|
191
|
+
- [refactor] Remove process_context function (cli/modes/gitcommsg.py:69-124)
|
192
|
+
- [refactor] Update all functions to accept raw context string (gitcommsg.py:create_system_prompt())
|
193
|
+
- [refactor] Replace context_data usages with context (gitcommsg.py)
|
194
|
+
- [docs] Update library usage doc (docs/usage/library_usage.md:516,531-537)
|
195
|
+
- [chore] Bump project version to 2.15.1 (pyproject.toml:3, uv.lock:137)
|
196
|
+
|
197
|
+
BULLET POINT FORMAT:
|
198
|
+
- Each bullet MUST start with a type in square brackets: [type]
|
199
|
+
- DO NOT use the format "- type: description" (without square brackets)
|
200
|
+
- Instead, ALWAYS use "- [type] description" (with square brackets)
|
201
|
+
- Example: "- [feat] Add new login component" (correct)
|
202
|
+
- Not: "- feat: Add new login component" (incorrect)
|
203
|
+
|
220
204
|
RULES:
|
221
205
|
1. BE 100% FACTUAL - Mention ONLY code explicitly shown in the diff
|
222
206
|
2. NEVER invent or assume changes not directly visible in the code
|
@@ -230,48 +214,17 @@ RULES:
|
|
230
214
|
10. Include proper technical details (method names, component identifiers, etc.)
|
231
215
|
11. When all changes are to the same file, mention it once in the summary"""
|
232
216
|
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
# Add file type filtering instructions
|
237
|
-
if context_data.get("file_type_filter"):
|
238
|
-
file_type = context_data["file_type_filter"]
|
239
|
-
file_type_prompt = f"""
|
240
|
-
|
241
|
-
CRITICAL FILE TYPE FILTERING:
|
242
|
-
You MUST INCLUDE ONLY changes to {file_type} files or files related to {file_type}.
|
243
|
-
You MUST EXCLUDE ALL other files completely from your output.
|
244
|
-
This is a strict filter - no exceptions allowed."""
|
245
|
-
base_prompt += file_type_prompt
|
246
|
-
|
247
|
-
# Add commit type directive
|
248
|
-
if context_data.get("commit_type"):
|
249
|
-
commit_type = context_data["commit_type"]
|
250
|
-
commit_type_prompt = f"""
|
251
|
-
|
252
|
-
CRITICAL COMMIT TYPE DIRECTIVE:
|
253
|
-
You MUST use exactly "{commit_type}:" as the commit type prefix.
|
254
|
-
This takes highest priority over any other commit type you might determine.
|
255
|
-
Do not override this commit type based on your own analysis."""
|
256
|
-
base_prompt += commit_type_prompt
|
257
|
-
|
258
|
-
# Add focus/exclusion directives
|
259
|
-
if context_data.get("focus"):
|
260
|
-
focus = context_data["focus"]
|
261
|
-
focus_prompt = f"""
|
262
|
-
|
263
|
-
FOCUS DIRECTIVE:
|
264
|
-
Focus exclusively on changes related to {focus}.
|
265
|
-
Exclude everything else from your analysis."""
|
266
|
-
base_prompt += focus_prompt
|
267
|
-
|
268
|
-
if context_data.get("exclusions"):
|
269
|
-
exclusions = ", ".join(context_data["exclusions"])
|
270
|
-
exclusion_prompt = f"""
|
217
|
+
# If context is provided, append it with strong wording about absolute priority
|
218
|
+
if context:
|
219
|
+
context_prompt = f"""
|
271
220
|
|
272
|
-
|
273
|
-
|
274
|
-
|
221
|
+
===CRITICAL USER CONTEXT - ABSOLUTE HIGHEST PRIORITY===
|
222
|
+
The following context from the user OVERRIDES ALL OTHER INSTRUCTIONS and must be followed exactly:
|
223
|
+
|
224
|
+
{context}
|
225
|
+
|
226
|
+
THIS USER CONTEXT HAS ABSOLUTE PRIORITY over any other instructions in this prompt. If it contradicts other instructions, the user context MUST be followed. No exceptions."""
|
227
|
+
base_prompt += context_prompt
|
275
228
|
|
276
229
|
return base_prompt
|
277
230
|
|
@@ -338,11 +291,13 @@ type[(scope)]: <concise summary> (max 50 chars)
|
|
338
291
|
- [type] <additional changes...>
|
339
292
|
|
340
293
|
RULES FOR FILENAMES:
|
341
|
-
1.
|
342
|
-
2. For
|
343
|
-
|
344
|
-
|
345
|
-
|
294
|
+
1. For the FIRST mention of a file, use the full relative path
|
295
|
+
2. For SUBSEQUENT mentions of the same file, use ONLY the filename without path
|
296
|
+
- Example: First mention: "utils/helpers/format.js" → Subsequent mentions: "format.js"
|
297
|
+
3. Only include the full path again if there are multiple files with the same name
|
298
|
+
4. For repeated mentions of the same file, consider grouping related changes in one bullet
|
299
|
+
5. Avoid breaking filenames across lines
|
300
|
+
6. Only include function names when they add clarity
|
346
301
|
|
347
302
|
COMMIT TYPES:
|
348
303
|
- feat: New user-facing features
|
@@ -364,6 +319,39 @@ COMMIT TYPES:
|
|
364
319
|
- ui: User interface changes
|
365
320
|
- api: API-related changes
|
366
321
|
|
322
|
+
EXAMPLES:
|
323
|
+
|
324
|
+
1. Bug fix with UI scope:
|
325
|
+
fix(ui): correct primary button focus style
|
326
|
+
|
327
|
+
- [fix] Add :focus outline to Button component (Button.jsx:Button())
|
328
|
+
- [chore] Bump Tailwind config to include ring-offset (tailwind.config.js:1-8)
|
329
|
+
- [refactor] Extract common styles into buttonStyles util (styles/buttons.js:1-15)
|
330
|
+
|
331
|
+
2. Feature with API scope:
|
332
|
+
feat(api): add authentication endpoint for OAuth
|
333
|
+
|
334
|
+
- [feat] Implement OAuth authentication route (auth/routes.js:createOAuthRoute())
|
335
|
+
- [feat] Add token validation middleware (middleware/auth.js:validateToken())
|
336
|
+
- [test] Add integration tests for OAuth flow (tests/auth.test.js:45-87)
|
337
|
+
|
338
|
+
3. Multiple types in one commit:
|
339
|
+
refactor(core): simplify data processing pipeline
|
340
|
+
|
341
|
+
- [refactor] Replace nested loops with map/reduce (utils/process.js:transformData())
|
342
|
+
- [perf] Optimize memory usage in large dataset handling (utils/memory.js:optimize())
|
343
|
+
- [fix] Correct edge case in null value handling (utils/validators.js:checkNull())
|
344
|
+
- [test] Update tests for new pipeline structure (tests/pipeline.test.js)
|
345
|
+
|
346
|
+
4. Multiple changes to the same file:
|
347
|
+
refactor(core): simplify context handling for commit prompts
|
348
|
+
|
349
|
+
- [refactor] Remove process_context function (cli/modes/gitcommsg.py:69-124)
|
350
|
+
- [refactor] Update all functions to accept raw context string (gitcommsg.py:create_system_prompt())
|
351
|
+
- [refactor] Replace context_data usages with context (gitcommsg.py)
|
352
|
+
- [docs] Update library usage doc (docs/usage/library_usage.md:516,531-537)
|
353
|
+
- [chore] Bump project version to 2.15.1 (pyproject.toml:3, uv.lock:137)
|
354
|
+
|
367
355
|
BULLET POINT FORMAT:
|
368
356
|
- Each bullet MUST start with a type in square brackets: [type]
|
369
357
|
- DO NOT use the format "- type: description" (without square brackets)
|
@@ -461,13 +449,13 @@ def handle_api_call(client, prompt, system_prompt=None, logger=None, max_retries
|
|
461
449
|
# Exponential backoff
|
462
450
|
wait_seconds *= 2
|
463
451
|
|
464
|
-
def process_with_chunking(client, diff_content,
|
452
|
+
def process_with_chunking(client, diff_content, context, chunk_size=200, recursive=False, logger=None, max_msg_lines=20, max_recursion_depth=3, analyses_chunk_size=None):
|
465
453
|
"""Process diff with chunking to handle large diffs.
|
466
454
|
|
467
455
|
Args:
|
468
456
|
client: The NGPTClient instance
|
469
457
|
diff_content: The diff content to process
|
470
|
-
|
458
|
+
context: The raw context string
|
471
459
|
chunk_size: Maximum number of lines per chunk
|
472
460
|
recursive: Whether to use recursive chunking
|
473
461
|
logger: Optional logger instance
|
@@ -483,8 +471,8 @@ def process_with_chunking(client, diff_content, context_data, chunk_size=200, re
|
|
483
471
|
analyses_chunk_size = chunk_size
|
484
472
|
|
485
473
|
# Create different system prompts for different stages
|
486
|
-
technical_system_prompt = create_technical_analysis_system_prompt(
|
487
|
-
commit_system_prompt = create_system_prompt(
|
474
|
+
technical_system_prompt = create_technical_analysis_system_prompt(context)
|
475
|
+
commit_system_prompt = create_system_prompt(context)
|
488
476
|
|
489
477
|
# Log initial diff content
|
490
478
|
if logger:
|
@@ -549,7 +537,7 @@ def process_with_chunking(client, diff_content, context_data, chunk_size=200, re
|
|
549
537
|
return recursive_chunk_analysis(
|
550
538
|
client,
|
551
539
|
combined_analyses,
|
552
|
-
|
540
|
+
context,
|
553
541
|
analyses_chunk_size,
|
554
542
|
logger,
|
555
543
|
max_msg_lines,
|
@@ -586,13 +574,13 @@ def process_with_chunking(client, diff_content, context_data, chunk_size=200, re
|
|
586
574
|
logger.error(f"Error combining analyses: {str(e)}")
|
587
575
|
return None
|
588
576
|
|
589
|
-
def recursive_chunk_analysis(client, combined_analysis,
|
577
|
+
def recursive_chunk_analysis(client, combined_analysis, context, chunk_size, logger=None, max_msg_lines=20, max_recursion_depth=3, current_depth=1):
|
590
578
|
"""Recursively chunk and process large analysis results until they're small enough.
|
591
579
|
|
592
580
|
Args:
|
593
581
|
client: The NGPTClient instance
|
594
582
|
combined_analysis: The combined analysis to process
|
595
|
-
|
583
|
+
context: The raw context string
|
596
584
|
chunk_size: Maximum number of lines per chunk
|
597
585
|
logger: Optional logger instance
|
598
586
|
max_msg_lines: Maximum number of lines in commit message before condensing
|
@@ -603,8 +591,8 @@ def recursive_chunk_analysis(client, combined_analysis, context_data, chunk_size
|
|
603
591
|
str: Generated commit message
|
604
592
|
"""
|
605
593
|
# Create different system prompts for different stages
|
606
|
-
technical_system_prompt = create_technical_analysis_system_prompt(
|
607
|
-
commit_system_prompt = create_system_prompt(
|
594
|
+
technical_system_prompt = create_technical_analysis_system_prompt(context)
|
595
|
+
commit_system_prompt = create_system_prompt(context)
|
608
596
|
|
609
597
|
print(f"\n{COLORS['cyan']}Recursive analysis chunking level {current_depth}...{COLORS['reset']}")
|
610
598
|
|
@@ -737,7 +725,7 @@ SECTION OF ANALYSIS TO CONDENSE:
|
|
737
725
|
return recursive_chunk_analysis(
|
738
726
|
client,
|
739
727
|
combined_condensed,
|
740
|
-
|
728
|
+
context,
|
741
729
|
chunk_size,
|
742
730
|
logger,
|
743
731
|
max_msg_lines,
|
@@ -888,6 +876,29 @@ The analyses to combine:
|
|
888
876
|
|
889
877
|
{all_analyses}
|
890
878
|
|
879
|
+
RULES FOR FILENAMES:
|
880
|
+
1. For the FIRST mention of a file, use the full relative path
|
881
|
+
2. For SUBSEQUENT mentions of the same file, use ONLY the filename without path
|
882
|
+
- Example: First mention: "utils/helpers/format.js" → Subsequent mentions: "format.js"
|
883
|
+
3. Only include the full path again if there are multiple files with the same name
|
884
|
+
4. For repeated mentions of the same file, consider grouping related changes in one bullet
|
885
|
+
|
886
|
+
BULLET POINT FORMAT:
|
887
|
+
- Each bullet MUST start with a type in square brackets: [type]
|
888
|
+
- DO NOT use the format "- type: description" (without square brackets)
|
889
|
+
- Instead, ALWAYS use "- [type] description" (with square brackets)
|
890
|
+
- Example: "- [feat] Add new login component" (correct)
|
891
|
+
- Not: "- feat: Add new login component" (incorrect)
|
892
|
+
|
893
|
+
EXAMPLE OF PROPERLY FORMATTED COMMIT MESSAGE:
|
894
|
+
refactor(core): simplify context handling for commit prompts
|
895
|
+
|
896
|
+
- [refactor] Remove process_context function (cli/modes/gitcommsg.py:69-124)
|
897
|
+
- [refactor] Update all functions to accept raw context string (gitcommsg.py:create_system_prompt())
|
898
|
+
- [refactor] Replace context_data usages with context (gitcommsg.py)
|
899
|
+
- [docs] Update library usage doc (docs/usage/library_usage.md:516,531-537)
|
900
|
+
- [chore] Bump project version to 2.15.1 (pyproject.toml:3, uv.lock:137)
|
901
|
+
|
891
902
|
REMINDER:
|
892
903
|
- First line must be under 50 characters
|
893
904
|
- Include a blank line after the first line
|
@@ -958,16 +969,16 @@ def gitcommsg_mode(client, args, logger=None):
|
|
958
969
|
active_logger.log_diff("DEBUG", diff_content)
|
959
970
|
|
960
971
|
# Process context if provided
|
961
|
-
|
972
|
+
context = None
|
962
973
|
if args.message_context:
|
963
|
-
|
974
|
+
context = args.message_context
|
964
975
|
if active_logger:
|
965
|
-
active_logger.debug(f"
|
966
|
-
active_logger.log_content("DEBUG", "
|
976
|
+
active_logger.debug(f"Using raw context: {context}")
|
977
|
+
active_logger.log_content("DEBUG", "CONTEXT", context)
|
967
978
|
|
968
979
|
# Create system prompts for different stages
|
969
|
-
technical_system_prompt = create_technical_analysis_system_prompt(
|
970
|
-
commit_system_prompt = create_system_prompt(
|
980
|
+
technical_system_prompt = create_technical_analysis_system_prompt(context)
|
981
|
+
commit_system_prompt = create_system_prompt(context)
|
971
982
|
|
972
983
|
# Log system prompts
|
973
984
|
if active_logger:
|
@@ -1006,7 +1017,7 @@ def gitcommsg_mode(client, args, logger=None):
|
|
1006
1017
|
result = process_with_chunking(
|
1007
1018
|
client,
|
1008
1019
|
diff_content,
|
1009
|
-
|
1020
|
+
context,
|
1010
1021
|
chunk_size=args.chunk_size,
|
1011
1022
|
recursive=True,
|
1012
1023
|
logger=active_logger,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ngpt
|
3
|
-
Version: 2.15.
|
3
|
+
Version: 2.15.1
|
4
4
|
Summary: A lightweight Python CLI and library for interacting with OpenAI-compatible APIs, supporting both official and self-hosted LLM endpoints.
|
5
5
|
Project-URL: Homepage, https://github.com/nazdridoy/ngpt
|
6
6
|
Project-URL: Repository, https://github.com/nazdridoy/ngpt
|
@@ -12,7 +12,7 @@ ngpt/cli/ui.py,sha256=iMinm_QdsmwrEUpb7CBRexyyBqf4sviFI9M3E8D-hhA,5303
|
|
12
12
|
ngpt/cli/modes/__init__.py,sha256=R3aO662RIzWEOvr3moTrEI8Tpg0zDDyMGGh1-OxiRgM,285
|
13
13
|
ngpt/cli/modes/chat.py,sha256=4a5EgM_5A1zCSrLrjgQMDnBwIHd1Rnu5_BjSKSm7p24,4255
|
14
14
|
ngpt/cli/modes/code.py,sha256=RjOAj7BDO5vLUdIPkUfPtyIkI_W6qEHsZvYh-sIdVaM,4293
|
15
|
-
ngpt/cli/modes/gitcommsg.py,sha256=
|
15
|
+
ngpt/cli/modes/gitcommsg.py,sha256=Kx9pWGWB2bMNFhpBPAa4q7VwHmJQwnZ2qoFrWK7t3gs,45080
|
16
16
|
ngpt/cli/modes/rewrite.py,sha256=Zb0PFvWRKXs4xJCF3GEdYc-LSmy6qRszz8-QJuldHc0,8595
|
17
17
|
ngpt/cli/modes/shell.py,sha256=lF9f7w-0bl_FdZl-WJnZuV736BKrWQtrwoKr3ejPXFE,2682
|
18
18
|
ngpt/cli/modes/text.py,sha256=ncYnfLFMdTPuHiOvAaHNiOWhox6GF6S-2fTwMIrAz-g,3140
|
@@ -20,8 +20,8 @@ ngpt/utils/__init__.py,sha256=E46suk2-QgYBI0Qrs6WXOajOUOebF3ETAFY7ah8DTWs,942
|
|
20
20
|
ngpt/utils/cli_config.py,sha256=tQxR3a2iXyc5TfRBPQHSUXPInO2dv_zTPGn04eWfmoo,11285
|
21
21
|
ngpt/utils/config.py,sha256=WYOk_b1eiYjo6hpV3pfXr2RjqhOnmKqwZwKid1T41I4,10363
|
22
22
|
ngpt/utils/log.py,sha256=f1jg2iFo35PAmsarH8FVL_62plq4VXH0Mu2QiP6RJGw,15934
|
23
|
-
ngpt-2.15.
|
24
|
-
ngpt-2.15.
|
25
|
-
ngpt-2.15.
|
26
|
-
ngpt-2.15.
|
27
|
-
ngpt-2.15.
|
23
|
+
ngpt-2.15.1.dist-info/METADATA,sha256=vKoeQ_IrjV2UtPpEGsThb-i8wg6OE46qXw-UDZdj9YQ,23523
|
24
|
+
ngpt-2.15.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
25
|
+
ngpt-2.15.1.dist-info/entry_points.txt,sha256=SqAAvLhMrsEpkIr4YFRdUeyuXQ9o0IBCeYgE6AVojoI,44
|
26
|
+
ngpt-2.15.1.dist-info/licenses/LICENSE,sha256=mQkpWoADxbHqE0HRefYLJdm7OpdrXBr3vNv5bZ8w72M,1065
|
27
|
+
ngpt-2.15.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|