diff --git a/ee/apps/den-api/src/routes/org/llm-providers.ts b/ee/apps/den-api/src/routes/org/llm-providers.ts index eb91f026..7b8f7efd 100644 --- a/ee/apps/den-api/src/routes/org/llm-providers.ts +++ b/ee/apps/den-api/src/routes/org/llm-providers.ts @@ -60,6 +60,7 @@ const customProviderSchema = z.object({ }).passthrough() const llmProviderWriteSchema = z.object({ + name: z.string().trim().min(1).max(255), source: z.enum(["models_dev", "custom"]), providerId: z.string().trim().min(1).max(255).optional(), modelIds: z.array(z.string().trim().min(1).max(255)).min(1).optional(), @@ -288,7 +289,7 @@ async function normalizeLlmProviderInput(input: z.infer ({ id: model.id, @@ -320,7 +321,7 @@ async function normalizeLlmProviderInput(input: z.infer ({ id: model.id, diff --git a/ee/apps/den-web/app/(den)/o/[orgSlug]/dashboard/_components/llm-provider-editor-screen.tsx b/ee/apps/den-web/app/(den)/o/[orgSlug]/dashboard/_components/llm-provider-editor-screen.tsx index 974bc4c7..15070eaf 100644 --- a/ee/apps/den-web/app/(den)/o/[orgSlug]/dashboard/_components/llm-provider-editor-screen.tsx +++ b/ee/apps/den-web/app/(den)/o/[orgSlug]/dashboard/_components/llm-provider-editor-screen.tsx @@ -81,6 +81,7 @@ export function LlmProviderEditorScreen({ useState(null); const [detailBusy, setDetailBusy] = useState(false); const [detailError, setDetailError] = useState(null); + const [providerName, setProviderName] = useState(""); const [selectedModelIds, setSelectedModelIds] = useState([]); const [modelQuery, setModelQuery] = useState(""); const [customConfigText, setCustomConfigText] = useState( @@ -131,6 +132,7 @@ export function LlmProviderEditorScreen({ if (provider) { setSource(provider.source); setSelectedProviderId(provider.providerId); + setProviderName(provider.name); setSelectedModelIds(provider.models.map((entry) => entry.id)); setSelectedMemberIds( provider.access.members.map((entry) => entry.orgMembershipId), @@ -149,6 +151,7 @@ export function LlmProviderEditorScreen({ setSource("models_dev"); setSelectedProviderId(""); + setProviderName(""); setSelectedModelIds([]); setSelectedMemberIds( orgContext?.currentMember.id ? [orgContext.currentMember.id] : [], @@ -261,6 +264,11 @@ export function LlmProviderEditorScreen({ return; } + if (!providerName.trim()) { + setSaveError("Give this provider a name."); + return; + } + if (source === "models_dev") { if (!selectedProviderId) { setSaveError("Select a provider."); @@ -281,6 +289,7 @@ export function LlmProviderEditorScreen({ setSaveError(null); try { const body: Record = { + name: providerName.trim(), source, memberIds: [...new Set(selectedMemberIds)], teamIds: [...new Set(selectedTeamIds)], @@ -396,7 +405,7 @@ export function LlmProviderEditorScreen({

{provider - ? provider.name + ? (providerName.trim() || provider.name) : "Add a new LLM provider"}

@@ -435,6 +444,24 @@ export function LlmProviderEditorScreen({

) : null} +
+ +

+ Pick a clear label so teammates know which key or provider + setup they are using. +

+
+

Provider type diff --git a/ee/apps/den-web/docs/screenshots/llm-provider-detail-after-create.png b/ee/apps/den-web/docs/screenshots/llm-provider-detail-after-create.png new file mode 100644 index 00000000..8173d742 Binary files /dev/null and b/ee/apps/den-web/docs/screenshots/llm-provider-detail-after-create.png differ diff --git a/ee/apps/den-web/docs/screenshots/llm-provider-detail-after-rename.png b/ee/apps/den-web/docs/screenshots/llm-provider-detail-after-rename.png new file mode 100644 index 00000000..62f6e783 Binary files /dev/null and b/ee/apps/den-web/docs/screenshots/llm-provider-detail-after-rename.png differ diff --git a/ee/apps/den-web/docs/screenshots/llm-provider-edit-name-prefilled.png b/ee/apps/den-web/docs/screenshots/llm-provider-edit-name-prefilled.png new file mode 100644 index 00000000..35c247ad Binary files /dev/null and b/ee/apps/den-web/docs/screenshots/llm-provider-edit-name-prefilled.png differ diff --git a/ee/apps/den-web/docs/screenshots/llm-provider-list-after-rename.png b/ee/apps/den-web/docs/screenshots/llm-provider-list-after-rename.png new file mode 100644 index 00000000..870075da Binary files /dev/null and b/ee/apps/den-web/docs/screenshots/llm-provider-list-after-rename.png differ diff --git a/ee/apps/den-web/docs/screenshots/llm-provider-new-filled.png b/ee/apps/den-web/docs/screenshots/llm-provider-new-filled.png new file mode 100644 index 00000000..2630df6d Binary files /dev/null and b/ee/apps/den-web/docs/screenshots/llm-provider-new-filled.png differ diff --git a/ee/apps/den-web/docs/screenshots/llm-provider-new-name-field.png b/ee/apps/den-web/docs/screenshots/llm-provider-new-name-field.png new file mode 100644 index 00000000..8b82e46a Binary files /dev/null and b/ee/apps/den-web/docs/screenshots/llm-provider-new-name-field.png differ