Unify utility model settings and align git generation (#486)

* refactor(api): extend git generation payload types

* refactor(settings): add git provider model fields

* feat(config): persist git provider model defaults

* feat(git-api): send provider and model ids

* fix(git-api): forward generation options in runtime

* feat(git-view): use configured model for commit generation

* feat(git-view): pass configured model for PR generation

* feat(vscode): forward model selection in git bridge payload

* feat(vscode): align PR generation with session model flow

* feat(web): resolve and generate git text with provider model

* refactor(settings): unify utility model picker across providers

* chore(settings): rename sidebar item to utility model

* fix(git-model): validate and auto-heal stale utility selections

---------

Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
Nelson Pires
2026-02-24 10:23:57 +02:00
committed by GitHub
co-authored by Bohdan Triapitsyn
parent 8647e0c1a4
commit 7a11867a19
11 changed files with 978 additions and 335 deletions
@@ -1128,13 +1128,25 @@ export const PullRequestSection: React.FC<{
if (!directory) return;
setIsGenerating(true);
try {
const zenModel = useConfigStore.getState().settingsZenModel;
const generated = await generatePullRequestDescription(directory, {
const { getResolvedGitGenerationModel, settingsZenModel } = useConfigStore.getState();
const resolvedModel = getResolvedGitGenerationModel();
const payload: { base: string; head: string; context?: string; zenModel?: string; providerId?: string; modelId?: string } = {
base: targetBaseBranch,
head: branch,
context: additionalContext,
...(zenModel ? { zenModel } : {}),
});
};
if (additionalContext) {
payload.context = additionalContext;
}
if (resolvedModel) {
payload.providerId = resolvedModel.providerId;
payload.modelId = resolvedModel.modelId;
if (resolvedModel.providerId === 'zen') {
payload.zenModel = resolvedModel.modelId;
}
} else if (settingsZenModel) {
payload.zenModel = settingsZenModel;
}
const generated = await generatePullRequestDescription(directory, payload);
if (generated.title?.trim()) {
setTitle(generated.title.trim());