Skip to content

Commit 361327a

Browse files
committed
fix(generate): forward context through chunked large-diff prompt path
When a staged diff exceeds MAX_REQUEST_TOKENS, generateCommitMessageByDiff routes through getCommitMsgsPromisesFromFileDiffs → getMessagesPromisesByChangesInFile → generateCommitMessageChatCompletionPrompt to produce one sub-prompt per chunk. That entire chain was threading `fullGitMojiSpec` but never `context`, so `-c/--context` was silently dropped for any diff large enough to trigger chunking, even though the simple (non-chunked) path forwarded it correctly. Add a `context` parameter to each of the three helpers and thread it through to generateCommitMessageChatCompletionPrompt so the user's context is present in every sub-prompt.
1 parent 3a2fa11 commit 361327a

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

src/generateCommitMessageFromGitDiff.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ async function handleModelNotFoundError(
130130
...existingConfig,
131131
OCO_MODEL: newModel
132132
} as any);
133-
console.log(chalk.green('') + ' Model saved as default\n');
133+
console.log(chalk.green('') + ' Model saved as default\n');
134134
}
135135

136136
return newModel;
@@ -168,7 +168,8 @@ export const generateCommitMessageByDiff = async (
168168
const commitMessagePromises = await getCommitMsgsPromisesFromFileDiffs(
169169
diff,
170170
MAX_REQUEST_TOKENS,
171-
fullGitMojiSpec
171+
fullGitMojiSpec,
172+
context
172173
);
173174

174175
const commitMessages = [] as string[];
@@ -228,7 +229,8 @@ function getMessagesPromisesByChangesInFile(
228229
fileDiff: string,
229230
separator: string,
230231
maxChangeLength: number,
231-
fullGitMojiSpec: boolean
232+
fullGitMojiSpec: boolean,
233+
context: string
232234
) {
233235
const hunkHeaderSeparator = '@@ ';
234236
const [fileHeader, ...fileDiffByLines] = fileDiff.split(hunkHeaderSeparator);
@@ -256,7 +258,8 @@ function getMessagesPromisesByChangesInFile(
256258
async (lineDiff) => {
257259
const messages = await generateCommitMessageChatCompletionPrompt(
258260
separator + lineDiff,
259-
fullGitMojiSpec
261+
fullGitMojiSpec,
262+
context
260263
);
261264

262265
return engine.generateCommitMessage(messages);
@@ -305,7 +308,8 @@ function splitDiff(diff: string, maxChangeLength: number) {
305308
export const getCommitMsgsPromisesFromFileDiffs = async (
306309
diff: string,
307310
maxDiffLength: number,
308-
fullGitMojiSpec: boolean
311+
fullGitMojiSpec: boolean,
312+
context: string
309313
) => {
310314
const separator = 'diff --git ';
311315

@@ -323,14 +327,16 @@ export const getCommitMsgsPromisesFromFileDiffs = async (
323327
fileDiff,
324328
separator,
325329
maxDiffLength,
326-
fullGitMojiSpec
330+
fullGitMojiSpec,
331+
context
327332
);
328333

329334
commitMessagePromises.push(...messagesPromises);
330335
} else {
331336
const messages = await generateCommitMessageChatCompletionPrompt(
332337
separator + fileDiff,
333-
fullGitMojiSpec
338+
fullGitMojiSpec,
339+
context
334340
);
335341

336342
const engine = getEngine();

0 commit comments

Comments
 (0)