fix: persist activity state to metadata so API serves real-time activity

- lifecycle-manager: write detected activity to metadata on each poll
- session-manager: read activity from metadata instead of hardcoding idle
- Fixes: API always returned activity=idle because metadataToSession
  hardcoded it and lifecycle manager never persisted the detected value
This commit is contained in:
sjd9021 2026-02-16 01:56:56 +05:30
parent fad2938804
commit ec36f3b3a7
2 changed files with 11 additions and 1 deletions

View File

@ -201,6 +201,15 @@ export function createLifecycleManager(deps: LifecycleManagerDeps): LifecycleMan
// empty output means the runtime probe failed, not that the agent exited.
if (terminalOutput) {
const activity = agent.detectActivity(terminalOutput);
console.log("[LIFECYCLE DEBUG] session:", session.id, "activity:", activity, "hasEsc:", /esc to interrupt/i.test(terminalOutput), "terminalLen:", terminalOutput.length);
// Persist detected activity to metadata so the API can serve it
const projectMetaDir2 = session.projectId
? join(config.dataDir, `${session.projectId}-sessions`)
: config.dataDir;
const metaDir2 = existsSync(join(projectMetaDir2, session.id))
? projectMetaDir2
: config.dataDir;
updateMetadata(metaDir2, session.id, { activity });
if (activity === "waiting_input") return "needs_input";
// Check whether the agent process is still alive. Some agents

View File

@ -19,6 +19,7 @@ import type {
SessionId,
SessionSpawnConfig,
SessionStatus,
ActivityState,
CleanupResult,
OrchestratorConfig,
ProjectConfig,
@ -106,7 +107,7 @@ function metadataToSession(
id: sessionId,
projectId: meta["project"] ?? "",
status: validateStatus(meta["status"]),
activity: "idle",
activity: (meta["activity"] as ActivityState) || "idle",
branch: meta["branch"] || null,
issueId: meta["issue"] || null,
pr: meta["pr"]