fix(web): correct Add Provider form to match fleet-settings DTO (#626)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful

Co-authored-by: Jason Woltje <jason@diversecanvas.com>
Co-committed-by: Jason Woltje <jason@diversecanvas.com>
This commit was merged in pull request #626.
This commit is contained in:
2026-03-01 20:00:50 +00:00
committed by jason.woltje
parent 3607554902
commit e898551814
3 changed files with 40 additions and 40 deletions

View File

@@ -85,12 +85,16 @@ const INITIAL_FORM: ProviderFormState = {
isActive: true,
};
function mapProviderTypeToApi(type: string): "ollama" | "openai" | "claude" {
if (type === "ollama" || type === "claude") {
return type;
}
function buildProviderName(displayName: string, type: string): string {
const slug = displayName
.trim()
.toLowerCase()
.replace(/[^a-z0-9]+/g, "-")
.replace(/^-+/, "")
.replace(/-+$/, "");
return "openai";
const candidate = `${type}-${slug.length > 0 ? slug : "provider"}`;
return candidate.slice(0, 100);
}
function getErrorMessage(error: unknown, fallback: string): string {
@@ -299,27 +303,24 @@ export default function ProvidersSettingsPage(): ReactElement {
await updateFleetProvider(editingProvider.id, updatePayload);
setSuccessMessage(`Updated provider "${displayName}".`);
} else {
const config: CreateFleetProviderRequest["config"] = {};
const createPayload: CreateFleetProviderRequest = {
name: buildProviderName(displayName, form.type),
displayName,
type: form.type,
};
if (baseUrl.length > 0) {
config.endpoint = baseUrl;
createPayload.baseUrl = baseUrl;
}
if (apiKey.length > 0) {
config.apiKey = apiKey;
createPayload.apiKey = apiKey;
}
if (models.length > 0) {
config.models = models;
if (providerModels.length > 0) {
createPayload.models = providerModels;
}
const createPayload: CreateFleetProviderRequest = {
displayName,
providerType: mapProviderTypeToApi(form.type),
config,
isEnabled: form.isActive,
};
await createFleetProvider(createPayload);
setSuccessMessage(`Added provider "${displayName}".`);
}