(diff, fullGitMojiSpec = false, context = "", retryWithModel)
| 85492 | ...existingConfig, |
| 85493 | OCO_MODEL: newModel |
| 85494 | }); |
| 85495 | console.log(source_default.green("\u221A") + " Model saved as default\n"); |
| 85496 | } |
| 85497 | return newModel; |
| 85498 | } |
| 85499 | var ADJUSTMENT_FACTOR = 20; |
| 85500 | var 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, |
no test coverage detected
searching dependent graphs…