Run tasks on Codex beside Claude; drop turn caps and mid-turn snapshots
This commit is contained in:
+5
-33
@@ -108,42 +108,14 @@ function mountStatus(root: HTMLElement): () => void {
|
||||
}
|
||||
|
||||
function turnsSection(s: Status): HTMLElement {
|
||||
const vendors = [...new Set([...Object.keys(s.caps.per_vendor), ...s.running_turns.map((t) => t.vendor), ...s.queued_turns.map((t) => t.vendor)])].sort();
|
||||
const runningFor = (vendor: string) => s.running_turns.filter((t) => t.vendor === vendor).length;
|
||||
|
||||
return h(
|
||||
"section",
|
||||
{ class: "status-section" },
|
||||
h("h2", {}, "Turns"),
|
||||
h(
|
||||
"div",
|
||||
{ class: "caps" },
|
||||
capTile("All vendors", s.running_turns.length, s.caps.global),
|
||||
...vendors.map((v) => capTile(v, runningFor(v), s.caps.per_vendor[v])),
|
||||
h("div", { class: "cap-tile" }, h("div", { class: "cap-label" }, "Queued"), h("div", { class: s.queued_turns.length > 0 ? "cap-value warn" : "cap-value" }, s.queued_turns.length)),
|
||||
),
|
||||
h("h3", {}, "Running"),
|
||||
turnList(s.running_turns, "running", "No turns running.", s.agent_processes),
|
||||
h("h3", {}, "Queued"),
|
||||
turnList(s.queued_turns, "queued", "Nothing queued.", []),
|
||||
);
|
||||
return h("section", { class: "status-section" }, h("h2", {}, "Running turns"), turnList(s.running_turns, s.agent_processes));
|
||||
}
|
||||
|
||||
function capTile(label: string, running: number, cap: number | undefined): HTMLElement {
|
||||
const full = cap !== undefined && running >= cap;
|
||||
return h(
|
||||
"div",
|
||||
{ class: "cap-tile" },
|
||||
h("div", { class: "cap-label" }, label),
|
||||
h("div", { class: full ? "cap-value warn" : "cap-value" }, running, h("span", { class: "cap-max" }, cap === undefined ? " / no cap" : ` / ${cap}`)),
|
||||
);
|
||||
}
|
||||
|
||||
function turnList(turns: TurnRef[], kind: "running" | "queued", empty: string, procs: AgentProcess[]): HTMLElement {
|
||||
function turnList(turns: TurnRef[], procs: AgentProcess[]): HTMLElement {
|
||||
return h(
|
||||
"ul",
|
||||
{ class: "task-list" },
|
||||
...turns.map((t, i) => {
|
||||
...turns.map((t) => {
|
||||
const task = findTask(t.task_id);
|
||||
const project = task ? state.projects.find((p) => p.id === task.project_id) : undefined;
|
||||
return h(
|
||||
@@ -152,14 +124,14 @@ function turnList(turns: TurnRef[], kind: "running" | "queued", empty: string, p
|
||||
h(
|
||||
"a",
|
||||
{ href: `#/task/${t.task_id}` },
|
||||
kind === "queued" ? h("span", { class: "queue-pos" }, `${i + 1}.`) : h("span", { class: "dot running", title: "running" }),
|
||||
h("span", { class: "dot running", title: "running" }),
|
||||
h("span", { class: "task-title" }, project && h("span", { class: "project-name" }, `${project.name} ▸ `), h("span", { class: "task-name" }, task?.title ?? t.task_id)),
|
||||
liveness(procs.find((p) => p.session_id === t.session_id)),
|
||||
h("span", { class: "task-state" }, t.vendor),
|
||||
),
|
||||
);
|
||||
}),
|
||||
turns.length === 0 && h("li", { class: "empty-row" }, empty),
|
||||
turns.length === 0 && h("li", { class: "empty-row" }, "No turns running."),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user