import type { ConnectionDraft, DraftStatus } from "./configuration.ts"; import { CONNECTION_HELD } from "./configuration.ts"; /** Fixture preparation only. The connection button cannot become enabled from format checks. */ export function mountConfiguration(root: HTMLElement, check: (draft: ConnectionDraft) => Promise) { root.innerHTML = `

Prepare an agent connection

LOCAL FIXTURE ONLY ยท enter synthetic values. No credentials are verified or saved.

`; const form = root.querySelector("form")!; const status = root.querySelector('[role="status"]')!; status.textContent = CONNECTION_HELD; const submit = form.querySelector("button")!; const field = (name: string) => form.querySelector(`input[name="${name}"]`)!; let closed = false; const onSubmit = async (event: Event) => { event.preventDefault(); if (submit.disabled) return; submit.disabled = true; try { const result = await check({ coreOrigin: field("coreOrigin").value, project: field("project").value, agentCredential: field("agentCredential").value }); if (!closed) status.textContent = `Format checked for ${result.project}. ${CONNECTION_HELD}`; } catch { if (!closed) status.textContent = "Draft format check failed. Check the fields; no connection was created."; } finally { field("agentCredential").value = ""; if (!closed) submit.disabled = false; } }; form.addEventListener("submit", onSubmit); // The OS frame permits scripts, not form submissions. Use a local button event. submit.addEventListener("click", onSubmit); return { dispose() { closed = true; field("agentCredential").value = ""; form.removeEventListener("submit", onSubmit); submit.removeEventListener("click", onSubmit); } }; }