+
}
+ title="My tasks"
+ description={
+ waiting
+ ? `${waiting} waiting for you${agentsWaiting ? ` Β· ${agentsWaiting} agent${agentsWaiting === 1 ? "" : "s"} on hold until you're done` : ""}. Mark a task done and its agent picks up where it left off.`
+ : "What your agents can't do without you β a passkey, a CAPTCHA, a signature. Mark it done and the agent picks up where it left off."
+ }
+ actions={
+
+ }
+ />
+
+
+
+
+ setSearch(e.target.value)} placeholder="Search tasks" className="h-8 pl-8 text-[13px]" aria-label="Search tasks" />
+
+
+
+ {!isLoading && data.length === 0 && !adding ? (
+
+
}
+ title="Nothing waits for you"
+ description="When an agent can't go on without you β a passkey, a CAPTCHA, a login only you have β it puts the task here and tells you. Once you mark it done, the agent continues by itself."
+ action={
+
+ }
+ />
+
+ ) : (
+
create.mutateAsync(title)}
+ onOpen={(t) => open(t)}
+ onMove={(t, status, beforeId) => update.mutate({ id: t.id, patch: { status, beforeId } })}
+ onDropDone={(t) => open(t, true)}
+ />
+ )}
+
+
+
+ );
+}
+
+function Board({
+ tasks,
+ agents,
+ adding,
+ onAdding,
+ onAdd,
+ onOpen,
+ onMove,
+ onDropDone,
+}: {
+ tasks: HumanTask[];
+ agents: Map