fix(backend): restart idle Pi sessions on resume

This commit is contained in:
User
2026-07-14 20:44:59 +02:00
parent aba8666f16
commit b1d1284cc8
2 changed files with 58 additions and 4 deletions
+8 -4
View File
@@ -100,10 +100,14 @@ export function sessionRoutes(
});
app.post("/sessions/:id/resume", async (req, reply) => {
const id = (req.params as any).id;
if (d.mgr.get(id)) {
// Idempotent resume: reattach the browser to the existing Pi runtime.
// Do not respawn it (which would discard a pending reviewer widget).
return reply.code(200).send({ id, alreadyActive: true });
const existing = d.mgr.get(id);
if (existing) {
const state = existing.bridge.turnState();
if (state === "running" || state === "waiting") {
return reply.code(200).send({ id, alreadyActive: true });
}
d.mgr.teardown(id);
d.hub.clear(id);
}
const manifest = (await d.tht.sessionShow(id, d.getSettings().workspace)) as { status?: string; archived?: boolean } | null;
if (manifest?.status === "finalized" || manifest?.archived) {