fix(team): keep launch summary aligned with persisted members

This commit is contained in:
777genius 2026-04-23 02:01:56 +03:00
parent 72517418d9
commit 400eaf9acd
2 changed files with 34 additions and 2 deletions

View file

@ -105,8 +105,14 @@ export function summarizePersistedLaunchMembers(
let failedCount = 0;
let runtimeAlivePendingCount = 0;
const normalizedExpected = expectedMembers.map(normalizeMemberName).filter(Boolean);
const memberNames = Array.from(
new Set([
...normalizedExpected,
...Object.keys(members).map(normalizeMemberName).filter(Boolean),
])
);
for (const memberName of normalizedExpected) {
for (const memberName of memberNames) {
const entry = members[memberName];
if (!entry) {
pendingCount += 1;

View file

@ -1,6 +1,9 @@
import { describe, expect, it } from 'vitest';
import { snapshotToMemberSpawnStatuses } from '../../../../src/main/services/team/TeamLaunchStateEvaluator';
import {
snapshotToMemberSpawnStatuses,
summarizePersistedLaunchMembers,
} from '../../../../src/main/services/team/TeamLaunchStateEvaluator';
describe('TeamLaunchStateEvaluator', () => {
it('keeps member spawn statuses for persisted members even when expectedMembers is stale', () => {
@ -55,4 +58,27 @@ describe('TeamLaunchStateEvaluator', () => {
pendingPermissionRequestIds: ['req-1'],
});
});
it('counts persisted members in launch summary even when expectedMembers is stale', () => {
const summary = summarizePersistedLaunchMembers(
['alice'],
{
alice: {
launchState: 'runtime_pending_bootstrap',
runtimeAlive: false,
},
bob: {
launchState: 'runtime_pending_permission',
runtimeAlive: true,
},
} as any
);
expect(summary).toEqual({
confirmedCount: 0,
pendingCount: 2,
failedCount: 0,
runtimeAlivePendingCount: 1,
});
});
});