Refresh stale device capability timestamps

This commit is contained in:
kris
2026-04-06 14:38:18 +08:00
parent 5789707072
commit 5782804df3
2 changed files with 106 additions and 15 deletions

View File

@@ -240,3 +240,56 @@ test("device heartbeat does not overwrite the preferred execution mode chosen in
assert.ok(device);
assert.equal(device.preferredExecutionMode, "gui");
});
test("device heartbeat without capability payload refreshes stale gui cli lastSeenAt", async () => {
await setup();
const staleCapabilityTime = "2026-03-25T11:52:00+08:00";
const staleState = await readState();
await writeState({
...staleState,
devices: staleState.devices.map((device) =>
device.id === "mac-studio"
? {
...device,
lastSeenAt: staleCapabilityTime,
capabilities: {
gui: {
...device.capabilities?.gui,
connected: true,
lastSeenAt: staleCapabilityTime,
lastActiveProjectId: "master-agent",
},
cli: {
...device.capabilities?.cli,
connected: true,
lastSeenAt: staleCapabilityTime,
lastActiveProjectId: "master-agent",
},
},
}
: device,
),
});
await upsertDeviceHeartbeat({
deviceId: "mac-studio",
name: "Mac Studio",
avatar: "M",
account: "17600003315",
status: "online",
quota5h: 72,
quota7d: 86,
preferredExecutionMode: "cli",
projects: ["硬件审计协作"],
endpoint: "mac://kris.local",
});
const state = await readState();
const device = state.devices.find((item) => item.id === "mac-studio");
assert.ok(device);
assert.notEqual(device.lastSeenAt, staleCapabilityTime);
assert.equal(device.capabilities?.gui.lastSeenAt, device.lastSeenAt);
assert.equal(device.capabilities?.cli.lastSeenAt, device.lastSeenAt);
});