35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import type { AiProviderRequest, AiProviderStatusRequest, AiProviderUpdateRequest } from "../api/types";
|
|
import { completeAiProviderForm, type AiProviderFormState } from "../contracts/aiProviders";
|
|
|
|
export function aiProviderCreateRequestFromForm(form: AiProviderFormState): AiProviderRequest {
|
|
const completed = completeAiProviderForm(form);
|
|
return {
|
|
id: completed.id,
|
|
...aiProviderUpdateRequestFromForm(completed)
|
|
};
|
|
}
|
|
|
|
export function aiProviderUpdateRequestFromForm(form: AiProviderFormState): AiProviderUpdateRequest {
|
|
const completed = completeAiProviderForm(form);
|
|
const models = completed.modelsText
|
|
.split(",")
|
|
.map((model) => model.trim())
|
|
.filter(Boolean);
|
|
|
|
return {
|
|
name: completed.name,
|
|
kind: completed.kind,
|
|
baseUrl: completed.baseUrl,
|
|
apiKeyRef: completed.apiKeyRef,
|
|
models,
|
|
defaultModel: completed.defaultModel || models[0],
|
|
relayMode: completed.relayMode,
|
|
timeoutMs: Number.parseInt(completed.timeoutMs, 10),
|
|
redactionPolicy: completed.redactionPolicy
|
|
};
|
|
}
|
|
|
|
export function aiProviderRetireRequest(): AiProviderStatusRequest {
|
|
return { status: "disabled" };
|
|
}
|