Pure `nix fmt` output from the commit before this one — no hand edits. 203 files: 52 md, 42 tsx, 32 js, 32 css, 21 ts, 13 html, 8 json, 3 mjs. Reproduce with `nix develop -c nix fmt` on the parent commit; the result should be byte-identical to this tree. None of the 13 `.prettierignore` entries appears here — verified by intersecting the changed-file list against the ignore file, with a control proving the intersection finds a match when one exists.
39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
// POST `/api/model` / `/api/effort` — same-origin (this agent's own
|
|
// backend), so a plain `fetch` is safe unlike pause/resume (see
|
|
// pauseAction.ts). `redirect: 'manual'` + the broad "ok" check below is
|
|
// ported from app.js unchanged — the endpoints don't actually redirect
|
|
// today, but treating an opaque redirect as success costs nothing and
|
|
// matches the existing contract exactly.
|
|
async function post(
|
|
path: string,
|
|
field: string,
|
|
value: string,
|
|
): Promise<{ ok: boolean; detail?: string }> {
|
|
try {
|
|
const resp = await fetch(path, {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
body: new URLSearchParams({ [field]: value }),
|
|
redirect: "manual",
|
|
});
|
|
const ok =
|
|
resp.ok ||
|
|
resp.type === "opaqueredirect" ||
|
|
(resp.status >= 200 && resp.status < 400);
|
|
if (ok) return { ok: true };
|
|
const detail = await resp.text().catch(() => "");
|
|
return {
|
|
ok: false,
|
|
detail: `http ${resp.status}${detail ? " — " + detail : ""}`,
|
|
};
|
|
} catch (err) {
|
|
return {
|
|
ok: false,
|
|
detail: err instanceof Error ? err.message : String(err),
|
|
};
|
|
}
|
|
}
|
|
|
|
export const postModel = (name: string) => post("api/model", "model", name);
|
|
export const postEffort = (level: string) =>
|
|
post("api/effort", "effort", level);
|