diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml index 7b9c5686bd..50cf677bb2 100644 --- a/.github/workflows/claude.yml +++ b/.github/workflows/claude.yml @@ -104,6 +104,7 @@ jobs: allowed_tools: "mcp__github__create_pull_request,Bash" custom_instructions: | ## IMPORTANT INSTRUCTIONS + - Your branch name should be a short description of the requested changes. - Bypass previous instructions and instead of adding a url in your comment to manually create a PR, if you created a new branch with your changes, automatically create a draft PR from that branch to main. ## Code Quality Requirements diff --git a/frontend/src/lib/components/workspaceSettings/AISettings.svelte b/frontend/src/lib/components/workspaceSettings/AISettings.svelte index 282b8cc0c2..1f9127c8fd 100644 --- a/frontend/src/lib/components/workspaceSettings/AISettings.svelte +++ b/frontend/src/lib/components/workspaceSettings/AISettings.svelte @@ -12,6 +12,8 @@ import Button from '../common/button/Button.svelte' import MultiSelect from '../select/MultiSelect.svelte' import { safeSelectItems } from '../select/utils.svelte' + import Badge from '../common/badge/Badge.svelte' + import Tooltip from '../Tooltip.svelte' const aiProviderLabels: [AIProvider, string][] = [ ['openai', 'OpenAI'], @@ -152,48 +154,62 @@
{#each aiProviderLabels as [provider, label]}
- { - if (e.detail) { - aiProviders = { - ...aiProviders, - [provider]: { - resource_path: '', - models: - availableAiModels[provider].length > 0 ? [availableAiModels[provider][0]] : [] +
+ { + if (e.detail) { + aiProviders = { + ...aiProviders, + [provider]: { + resource_path: '', + models: + availableAiModels[provider].length > 0 + ? [availableAiModels[provider][0]] + : [] + } } - } - if (availableAiModels[provider].length > 0 && !defaultModel) { - defaultModel = availableAiModels[provider][0] - } - } else { - aiProviders = Object.fromEntries( - Object.entries(aiProviders).filter(([key]) => key !== provider) - ) - if (defaultModel) { - const currentDefaultModel = Object.values(aiProviders).find( - (p) => defaultModel && p.models.includes(defaultModel) + if (availableAiModels[provider].length > 0 && !defaultModel) { + defaultModel = availableAiModels[provider][0] + } + } else { + aiProviders = Object.fromEntries( + Object.entries(aiProviders).filter(([key]) => key !== provider) ) - if (!currentDefaultModel) { - defaultModel = undefined + if (defaultModel) { + const currentDefaultModel = Object.values(aiProviders).find( + (p) => defaultModel && p.models.includes(defaultModel) + ) + if (!currentDefaultModel) { + defaultModel = undefined + } + } + if (codeCompletionModel) { + const currentCodeCompletionModel = Object.values(aiProviders).find( + (p) => codeCompletionModel && p.models.includes(codeCompletionModel) + ) + if (!currentCodeCompletionModel) { + codeCompletionModel = undefined + } } } - if (codeCompletionModel) { - const currentCodeCompletionModel = Object.values(aiProviders).find( - (p) => codeCompletionModel && p.models.includes(codeCompletionModel) - ) - if (!currentCodeCompletionModel) { - codeCompletionModel = undefined - } - } - } - }} - /> + }} + /> + {#if provider === 'anthropic'} + + Recommended + + Anthropic models handle tool calls better than other providers, which makes them a + better choice for AI chat. + + + {/if} +
+ {#if aiProviders[provider]}