diff --git a/src/app/[orgId]/settings/resources/private/[niceId]/inference/page.tsx b/src/app/[orgId]/settings/resources/private/[niceId]/inference/page.tsx
index 78f13370c..48304d350 100644
--- a/src/app/[orgId]/settings/resources/private/[niceId]/inference/page.tsx
+++ b/src/app/[orgId]/settings/resources/private/[niceId]/inference/page.tsx
@@ -20,6 +20,7 @@ import {
type SelectedAiProvider
} from "@app/components/AiProvidersSelector";
import DomainPicker from "@app/components/DomainPicker";
+import { SwitchInput } from "@app/components/SwitchInput";
import { Button } from "@app/components/ui/button";
import {
Form,
@@ -67,7 +68,8 @@ export default function PrivateResourceInferencePage() {
providerIds: z.array(z.number().int().positive()),
httpConfigSubdomain: z.string().nullish(),
httpConfigDomainId: z.string().nullish(),
- httpConfigFullDomain: z.string().nullish()
+ httpConfigFullDomain: z.string().nullish(),
+ ssl: z.boolean().optional()
}),
[]
);
@@ -90,7 +92,8 @@ export default function PrivateResourceInferencePage() {
providerIds: [],
httpConfigSubdomain: siteResource.subdomain ?? null,
httpConfigDomainId: siteResource.domainId ?? null,
- httpConfigFullDomain: siteResource.fullDomain ?? null
+ httpConfigFullDomain: siteResource.fullDomain ?? null,
+ ssl: siteResource.ssl ?? false
}
});
@@ -121,7 +124,8 @@ export default function PrivateResourceInferencePage() {
mode: "inference",
httpConfigSubdomain: data.httpConfigSubdomain,
httpConfigDomainId: data.httpConfigDomainId,
- httpConfigFullDomain: data.httpConfigFullDomain
+ httpConfigFullDomain: data.httpConfigFullDomain,
+ ssl: data.ssl
});
await api.post(`/site-resource/${siteResource.id}/ai-providers`, {
@@ -296,6 +300,33 @@ export default function PrivateResourceInferencePage() {
}}
/>
+
+ (
+
+
+
+
+
+ )}
+ />
+
diff --git a/src/app/[orgId]/settings/resources/private/create/page.tsx b/src/app/[orgId]/settings/resources/private/create/page.tsx
index 9420da17b..da3c968b6 100644
--- a/src/app/[orgId]/settings/resources/private/create/page.tsx
+++ b/src/app/[orgId]/settings/resources/private/create/page.tsx
@@ -368,56 +368,58 @@ export default function CreatePrivateResourcePage() {
/>
- {mode === "http" && (
-
-
- {
- if (!res) {
+ {mode === "http" ||
+ (mode === "inference" && (
+
+
+ {
+ if (!res) {
+ form.setValue(
+ "httpConfigSubdomain",
+ null
+ );
+ form.setValue(
+ "httpConfigDomainId",
+ null
+ );
+ form.setValue(
+ "httpConfigFullDomain",
+ null
+ );
+ return;
+ }
form.setValue(
"httpConfigSubdomain",
- null
+ res.subdomain ??
+ null
);
form.setValue(
"httpConfigDomainId",
- null
+ res.domainId
);
form.setValue(
"httpConfigFullDomain",
- null
+ res.fullDomain
);
- return;
- }
- form.setValue(
- "httpConfigSubdomain",
- res.subdomain ??
- null
- );
- form.setValue(
- "httpConfigDomainId",
- res.domainId
- );
- form.setValue(
- "httpConfigFullDomain",
- res.fullDomain
- );
- }}
- />
-
-
- {t(
- "resourceDomainDescription"
- )}
-
-
-
- )}
+ }}
+ />
+
+
+ {t(
+ "resourceDomainDescription"
+ )}
+
+
+
+ ))}
{(mode === "host" ||
- mode === "inference" ||
(mode === "ssh" && !isNativeSsh)) && (
- {t("sshServer")}
+ {t("sshSettings")}
{t("sshServerDescription")}
diff --git a/src/components/PrivateResourcesTable.tsx b/src/components/PrivateResourcesTable.tsx
index 87eddb921..cb7d2645c 100644
--- a/src/components/PrivateResourcesTable.tsx
+++ b/src/components/PrivateResourcesTable.tsx
@@ -332,7 +332,7 @@ export default function PrivateResourcesTable({
},
{
accessorKey: "mode",
- friendlyName: t("editInternalResourceDialogMode"),
+ friendlyName: t("type"),
header: () => (
),
diff --git a/src/components/PublicResourcesTable.tsx b/src/components/PublicResourcesTable.tsx
index 48d7b4486..af89b878b 100644
--- a/src/components/PublicResourcesTable.tsx
+++ b/src/components/PublicResourcesTable.tsx
@@ -280,7 +280,7 @@ export default function PublicResourcesTable({
},
{
accessorKey: "protocol",
- friendlyName: t("protocol"),
+ friendlyName: t("type"),
enableHiding: true,
header: () => (
),
@@ -747,7 +747,6 @@ export default function PublicResourcesTable({
enableColumnVisibility
columnVisibility={{
niceId: false,
- protocol: false,
labels: true
}}
stickyLeftColumn="name"
diff --git a/src/lib/privateResourceForm.ts b/src/lib/privateResourceForm.ts
index 3eb83cce3..f186ffb9d 100644
--- a/src/lib/privateResourceForm.ts
+++ b/src/lib/privateResourceForm.ts
@@ -216,16 +216,17 @@ export function buildCreateSiteResourcePayload(
})
}),
...(data.mode === "inference" && {
- alias:
- data.alias &&
- typeof data.alias === "string" &&
- data.alias.trim()
- ? data.alias
- : undefined,
aiProviders: (data.providerIds ?? []).map((providerId) => ({
providerId,
modelAccessMode: "catalog" as const
- }))
+ })),
+ ssl: data.ssl ?? false,
+ domainId: data.httpConfigDomainId
+ ? data.httpConfigDomainId
+ : undefined,
+ subdomain: data.httpConfigSubdomain
+ ? data.httpConfigSubdomain
+ : undefined
}),
...((data.mode === "host" || data.mode === "cidr") && {
tcpPortRangeString: data.tcpPortRangeString,
@@ -306,6 +307,7 @@ export function buildUpdateSiteResourcePayload(
data.alias.trim()
? data.alias
: null,
+ ssl: data.ssl ?? false,
domainId: data.httpConfigDomainId
? data.httpConfigDomainId
: undefined,
@@ -464,16 +466,6 @@ export function createCreateFormSchema(t: TranslateFn) {
path: ["siteIds"]
});
}
- if (data.mode === "inference") {
- const trimmedAlias = data.alias?.trim();
- if (!trimmedAlias) {
- ctx.addIssue({
- code: z.ZodIssueCode.custom,
- message: t("aiResourceAliasRequired"),
- path: ["alias"]
- });
- }
- }
if (
data.mode !== "ssh" &&
data.mode !== "inference" &&