mara on #5034: "effort shares /models fate". The per-agent web UI no longer sets effort: the `/effort` slash command, the effort picker, `POST /api/effort`, `Bus::set_effort`, the `hyperhive-effort` writer, `EFFORT_LEVELS`/`is_valid_effort` and the ACP effort-list payload are gone, and `lib/modelEffort.ts` with them. The effort chip is display-only and shows its source (`effort_source` in `/api/state`); on ACP it stays hidden while the session offers no effort level. The read side is unchanged: with no swarm value an agent runs an existing `hyperhive-effort` file, else its agent.nix effort, else medium. Existing files are not touched. Refs #5034
39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
// Same-origin fetch POST helpers for the term-input slash commands
|
|
// ({ ok, detail } rather than throwing), reused by TermInput.tsx.
|
|
async function post(
|
|
path: string,
|
|
body?: URLSearchParams,
|
|
): Promise<{ ok: boolean; detail?: string }> {
|
|
try {
|
|
const resp = await fetch(path, {
|
|
method: "POST",
|
|
headers: body
|
|
? { "Content-Type": "application/x-www-form-urlencoded" }
|
|
: undefined,
|
|
body,
|
|
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 postCancelTurn = () => post("api/cancel");
|
|
export const postCompact = () => post("api/compact");
|
|
export const postNewSession = () => post("api/new-session");
|
|
export const postLogout = () => post("api/logout");
|
|
export const postSend = (body: string) =>
|
|
post("send", new URLSearchParams({ body }));
|