diff --git a/messages/en-US.json b/messages/en-US.json
index 660ffa5c9..e7b7f3c12 100644
--- a/messages/en-US.json
+++ b/messages/en-US.json
@@ -1777,7 +1777,7 @@
"aiProviderTypeMicrosoftFoundryDescription": "Microsoft Foundry; upstream URL required",
"aiProviderTypeOpenRouterDescription": "OpenRouter API",
"aiProviderTypeVercelAiGatewayDescription": "Vercel AI Gateway",
- "aiProviderTypeCustomDescription": "Bring your own OpenAI-compatible endpoint or route via Pangolin targets",
+ "aiProviderTypeCustomDescription": "Bring your own endpoint or route via site targets",
"aiProviderUpstreamUrl": "Upstream URL",
"aiProviderUpstreamUrlDescription": "Base URL for the provider API",
"aiProviderUpstreamUrlOptionalDescription": "Leave blank to use the default upstream URL for this provider",
diff --git a/src/app/[orgId]/settings/ai-providers/[providerId]/network/page.tsx b/src/app/[orgId]/settings/ai-providers/[providerId]/network/page.tsx
index e685bc560..fafbdf49f 100644
--- a/src/app/[orgId]/settings/ai-providers/[providerId]/network/page.tsx
+++ b/src/app/[orgId]/settings/ai-providers/[providerId]/network/page.tsx
@@ -41,7 +41,6 @@ import {
createAiProviderFormSchema,
showsUpstreamUrlField,
toAiProviderNetworkPayload,
- upstreamUrlRequired,
type AiProviderFormValues
} from "@app/lib/aiProviderFormSchema";
import { aiProviderQueries } from "@app/lib/queries";
@@ -91,7 +90,6 @@ export default function AiProviderNetworkPage() {
const providerType = form.watch("type");
const routingMode = form.watch("routingMode");
const showUpstream = showsUpstreamUrlField(providerType, routingMode);
- const requireUpstream = upstreamUrlRequired(providerType, routingMode);
const showRoutingMode = providerType === "custom";
const isTargetModeSelected = routingMode === "target";
const isTargetModeSaved =
@@ -218,22 +216,9 @@ export default function AiProviderNetworkPage() {
field.value ??
"url"
}
- onChange={(
- value
- ) => {
- field.onChange(
- value
- );
- if (
- value ===
- "target"
- ) {
- form.setValue(
- "upstreamUrl",
- ""
- );
- }
- }}
+ onChange={
+ field.onChange
+ }
/>
@@ -284,14 +269,10 @@ export default function AiProviderNetworkPage() {
{t(
"aiProviderUpstreamUrl"
)}
- {requireUpstream
- ? ""
- : " (optional)"}
- {requireUpstream
- ? t(
- "aiProviderUpstreamUrlDescription"
- )
- : t(
- "aiProviderUpstreamUrlOptionalDescription"
- )}
+ {t(
+ "aiProviderUpstreamUrlDescription"
+ )}
diff --git a/src/app/[orgId]/settings/ai-providers/create/page.tsx b/src/app/[orgId]/settings/ai-providers/create/page.tsx
index 6b47146a5..c9125659d 100644
--- a/src/app/[orgId]/settings/ai-providers/create/page.tsx
+++ b/src/app/[orgId]/settings/ai-providers/create/page.tsx
@@ -49,7 +49,6 @@ import {
emptyUpstreamForType,
showsUpstreamUrlField,
toAiProviderCreatePayload,
- upstreamUrlRequired,
type AiProviderFormValues
} from "@app/lib/aiProviderFormSchema";
import { zodResolver } from "@hookform/resolvers/zod";
@@ -95,7 +94,6 @@ export default function CreateAiProviderPage() {
const authType = form.watch("authType");
const showUpstream = showsUpstreamUrlField(providerType, routingMode);
- const requireUpstream = upstreamUrlRequired(providerType, routingMode);
const showRoutingMode = providerType === "custom";
const showTargets = providerType === "custom" && routingMode === "target";
const showApiKey = authTypeRequiresApiKey(authType ?? "bearer");
@@ -436,14 +434,9 @@ export default function CreateAiProviderPage() {
value
);
if (
- value ===
+ value !==
"target"
) {
- form.setValue(
- "upstreamUrl",
- ""
- );
- } else {
targetsRef.current =
[];
}
@@ -498,14 +491,10 @@ export default function CreateAiProviderPage() {
{t(
"aiProviderUpstreamUrl"
)}
- {requireUpstream
- ? ""
- : " (optional)"}
- {requireUpstream
- ? t(
- "aiProviderUpstreamUrlDescription"
- )
- : t(
- "aiProviderUpstreamUrlOptionalDescription"
- )}
+ {t(
+ "aiProviderUpstreamUrlDescription"
+ )}
diff --git a/src/lib/aiProviderDefaults.ts b/src/lib/aiProviderDefaults.ts
index da4c43739..96fbb5e18 100644
--- a/src/lib/aiProviderDefaults.ts
+++ b/src/lib/aiProviderDefaults.ts
@@ -85,13 +85,8 @@ export function providerRequiresUpstreamUrl(
type: AiProviderType,
routingMode: AiProviderRoutingMode = "url"
): boolean {
- if (routingMode === "target") {
- return false;
- }
- if (type === "custom") {
- return true;
- }
- return AI_PROVIDER_DEFAULTS[type].upstreamUrl === null;
+ const mode = type === "custom" ? routingMode : "url";
+ return mode !== "target";
}
export function defaultsForProviderType(
diff --git a/src/lib/aiProviderFormSchema.ts b/src/lib/aiProviderFormSchema.ts
index e033c0185..a425fb0e3 100644
--- a/src/lib/aiProviderFormSchema.ts
+++ b/src/lib/aiProviderFormSchema.ts
@@ -148,17 +148,6 @@ export function emptyUpstreamForType(type: AiProviderType): string {
export function showsUpstreamUrlField(
type: AiProviderType,
routingMode: "url" | "target" | undefined
-): boolean {
- const mode = type === "custom" ? (routingMode ?? "url") : "url";
- if (mode === "target") {
- return false;
- }
- return true;
-}
-
-export function upstreamUrlRequired(
- type: AiProviderType,
- routingMode: "url" | "target" | undefined
): boolean {
const mode = type === "custom" ? (routingMode ?? "url") : "url";
return providerRequiresUpstreamUrl(type, mode);