import type { ServerLifecycleCommandRequest, ServerLifecycleCreateRequest, ServerInstanceResponse } from "../api/types"; import type { ServerCreateFormState } from "../contracts/serverManagement"; export function serverCreateRequestFromForm(form: ServerCreateFormState, sequence = Date.now()): ServerLifecycleCreateRequest { const id = form.id.trim(); return { id, pluginId: form.pluginId.trim(), runEndpointId: form.runEndpointId.trim(), name: form.name.trim(), idempotencyKey: lifecycleIdempotencyKey("create", id, sequence) }; } export function serverLifecycleCommandRequest(instance: ServerInstanceResponse, action: "start" | "stop", sequence = Date.now()): ServerLifecycleCommandRequest { return { expectedConfigVersion: instance.configVersion, idempotencyKey: lifecycleIdempotencyKey(action, instance.id, sequence) }; } export function lifecycleIdempotencyKey(action: "create" | "start" | "stop", serverInstanceId: string, sequence: number): string { return `web:${action}:${serverInstanceId}:${sequence}`; }