MCPcopy
hub / github.com/di-sukharev/opencommit / generateCommitMessageByDiff

Function generateCommitMessageByDiff

out/cli.cjs:85494–85552  ·  view source on GitHub ↗
(diff, fullGitMojiSpec = false, context = "", retryWithModel)

Source from the content-addressed store, hash-verified

85492 ...existingConfig,
85493 OCO_MODEL: newModel
85494 });
85495 console.log(source_default.green("\u221A") + " Model saved as default\n");
85496 }
85497 return newModel;
85498}
85499var ADJUSTMENT_FACTOR = 20;
85500var generateCommitMessageByDiff = async (diff, fullGitMojiSpec = false, context = "", retryWithModel) => {
85501 const currentConfig = getConfig();
85502 const provider = currentConfig.OCO_AI_PROVIDER || "openai";
85503 const currentModel = retryWithModel || currentConfig.OCO_MODEL;
85504 try {
85505 const INIT_MESSAGES_PROMPT = await getMainCommitPrompt(
85506 fullGitMojiSpec,
85507 context
85508 );
85509 const INIT_MESSAGES_PROMPT_LENGTH = INIT_MESSAGES_PROMPT.map(
85510 (msg) => tokenCount(msg.content) + 4
85511 ).reduce((a4, b7) => a4 + b7, 0);
85512 const MAX_REQUEST_TOKENS = MAX_TOKENS_INPUT - ADJUSTMENT_FACTOR - INIT_MESSAGES_PROMPT_LENGTH - MAX_TOKENS_OUTPUT;
85513 if (tokenCount(diff) >= MAX_REQUEST_TOKENS) {
85514 const commitMessagePromises = await getCommitMsgsPromisesFromFileDiffs(
85515 diff,
85516 MAX_REQUEST_TOKENS,
85517 fullGitMojiSpec,
85518 context
85519 );
85520 const commitMessages = await Promise.all(commitMessagePromises);
85521 return commitMessages.join("\n\n");
85522 }
85523 const messages = await generateCommitMessageChatCompletionPrompt(
85524 diff,
85525 fullGitMojiSpec,
85526 context
85527 );
85528 const engine = getEngine();
85529 const commitMessage = await engine.generateCommitMessage(messages);
85530 if (!commitMessage)
85531 throw new Error("EMPTY_MESSAGE" /* emptyMessage */);
85532 return commitMessage;
85533 } catch (error) {
85534 if (isModelNotFoundError(error)) {
85535 const newModel = await handleModelNotFoundError(
85536 error,
85537 provider,
85538 currentModel
85539 );
85540 if (newModel) {
85541 console.log(source_default.cyan(`Retrying with ${newModel}...
85542`));
85543 const existingConfig = getGlobalConfig();
85544 setGlobalConfig({
85545 ...existingConfig,
85546 OCO_MODEL: newModel
85547 });
85548 return generateCommitMessageByDiff(
85549 diff,
85550 fullGitMojiSpec,
85551 context,

Callers 2

prepareCommitMessageHookFunction · 0.70

Calls 11

getConfigFunction · 0.70
getMainCommitPromptFunction · 0.70
tokenCountFunction · 0.70
getEngineFunction · 0.70
isModelNotFoundErrorFunction · 0.70
handleModelNotFoundErrorFunction · 0.70
getGlobalConfigFunction · 0.70
setGlobalConfigFunction · 0.70
generateCommitMessageMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…