fix: address final lifecycle review findings (#122)

This commit is contained in:
harshitsinghbhandari 2026-04-17 19:52:15 +05:30
parent ca8c4cc7ab
commit f1769ec910
3 changed files with 62 additions and 7 deletions

View File

@ -10,13 +10,13 @@
"packageManager": "pnpm@9.15.4",
"type": "module",
"scripts": {
"build": "pnpm -r --workspace-concurrency=1 build",
"build": "pnpm -r build",
"dev": "pnpm --filter @aoagents/ao-web dev",
"lint": "eslint .",
"lint:fix": "eslint . --fix",
"format": "prettier --write .",
"format:check": "prettier --check .",
"typecheck": "pnpm -r --workspace-concurrency=1 typecheck",
"typecheck": "pnpm -r typecheck",
"test": "pnpm -r --filter '!@aoagents/ao-web' test",
"test:integration": "pnpm --filter @aoagents/ao-integration-tests test:integration",
"clean": "pnpm -r clean",

View File

@ -5,6 +5,8 @@
import { describe, it, expect } from "vitest";
import {
getAttentionLevel,
getActivitySignalLabel,
getActivitySignalReasonLabel,
isPRMergeReady,
TERMINAL_STATUSES,
TERMINAL_ACTIVITIES,
@ -779,3 +781,35 @@ describe("constants sync with core", () => {
expect(NON_RESTORABLE_STATUSES).toBe(CORE_NON_RESTORABLE_STATUSES);
});
});
describe("activity signal fallback", () => {
it("treats legacy idle activity without a timestamp as stale", () => {
const session = createSession({
activity: "idle",
activitySignal: undefined,
});
expect(getActivitySignalLabel(session)).toBe("idle (stale)");
expect(getActivitySignalReasonLabel(session)).toBe("missing timestamp");
});
it("treats legacy blocked activity without a timestamp as stale", () => {
const session = createSession({
activity: "blocked",
activitySignal: undefined,
});
expect(getActivitySignalLabel(session)).toBe("blocked (stale)");
expect(getActivitySignalReasonLabel(session)).toBe("missing timestamp");
});
it("keeps legacy active activity valid", () => {
const session = createSession({
activity: "active",
activitySignal: undefined,
});
expect(getActivitySignalLabel(session)).toBe("active");
expect(getActivitySignalReasonLabel(session)).toBeNull();
});
});

View File

@ -295,14 +295,35 @@ export function getLifecycleEvidence(session: DashboardSession): string | null {
}
function resolveActivitySignal(session: DashboardSession): DashboardActivitySignal {
return (
session.activitySignal ?? {
state: session.activity === null ? "unavailable" : "valid",
if (session.activitySignal) {
return session.activitySignal;
}
if (session.activity === null) {
return {
state: "unavailable",
activity: null,
timestamp: null,
source: "none",
};
}
if (session.activity === "idle" || session.activity === "blocked") {
return {
state: "stale",
activity: session.activity,
timestamp: null,
source: "none",
}
);
detail: "missing_timestamp",
};
}
return {
state: "valid",
activity: session.activity,
timestamp: null,
source: "none",
};
}
export function getActivitySignalLabel(session: DashboardSession): string {