Make task state store-owned and signal its changes to the lead
This commit is contained in:
Vendored
+10
-5
@@ -56,6 +56,12 @@ export function findTask(id) {
|
||||
export function currentSession(taskId) {
|
||||
return state.sessions.get(taskId)?.findLast((s) => s.state !== "completed") ?? state.sessions.get(taskId)?.at(-1);
|
||||
}
|
||||
const workingTitles = {
|
||||
running: "The agent is mid-turn",
|
||||
review_pending: "A review of the turn's work is about to start",
|
||||
reviewing: "A review is running",
|
||||
discarding: "Discarding",
|
||||
};
|
||||
export function taskState(task) {
|
||||
const open = state.inbox.filter((item) => item.task_id === task.id);
|
||||
if (open.some((item) => item.kind === "question")) {
|
||||
@@ -73,8 +79,9 @@ export function taskState(task) {
|
||||
if (open.length > 0) {
|
||||
return { kind: "error", label: "Error", title: "The agent's session failed or hit a rate limit; see the inbox" };
|
||||
}
|
||||
if (task.discarding || task.reviewing || currentSession(task.id)?.state === "running") {
|
||||
return { kind: "working", label: "Working", title: task.discarding ? "Discarding" : task.reviewing ? "A review is running" : "The agent is mid-turn" };
|
||||
const working = workingTitles[task.state];
|
||||
if (working !== undefined) {
|
||||
return { kind: "working", label: "Working", title: working };
|
||||
}
|
||||
return { kind: "idle", label: "Idle", title: "Waiting for a message" };
|
||||
}
|
||||
@@ -360,6 +367,7 @@ export function handleEvent(ev) {
|
||||
case "task.discard_started":
|
||||
case "task.merged":
|
||||
case "task.discarded":
|
||||
case "task.state":
|
||||
if (ev.project_id) {
|
||||
void loadTasks(ev.project_id);
|
||||
}
|
||||
@@ -395,9 +403,6 @@ export function handleEvent(ev) {
|
||||
break;
|
||||
case "review.started":
|
||||
case "review.finished":
|
||||
if (ev.project_id) {
|
||||
void loadTasks(ev.project_id);
|
||||
}
|
||||
if (state.inbox.some((i) => i.task_id === ev.task_id && i.kind === "question")) {
|
||||
void loadInbox();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user