fix(member-work-sync): infer codex settled env from model

This commit is contained in:
777genius 2026-04-29 21:18:48 +03:00
parent 55ffb185c3
commit 27a38034cc
2 changed files with 24 additions and 3 deletions

View file

@ -4453,10 +4453,13 @@ export class TeamProvisioningService {
): Promise<Record<string, string>> {
const resolvedPrimaryProviderId = resolveTeamProviderId(primaryProviderId);
const needsCodexTurnSettledEnv = memberSpecs.some((member) => {
const memberProviderId = resolveTeamProviderId(
normalizeTeamMemberProviderId(member.providerId) ?? resolvedPrimaryProviderId
const configuredProviderId = normalizeTeamMemberProviderId(member.providerId);
const inferredProviderId = inferTeamProviderIdFromModel(member.model);
return (
resolvedPrimaryProviderId === 'codex' ||
configuredProviderId === 'codex' ||
inferredProviderId === 'codex'
);
return memberProviderId === 'codex';
});
if (!needsCodexTurnSettledEnv) {

View file

@ -1988,6 +1988,24 @@ describe('TeamProvisioningService prepare/auth behavior', () => {
});
});
it('adds Codex turn-settled env when a secondary member infers Codex from model', async () => {
const svc = new TeamProvisioningService();
svc.setRuntimeTurnSettledEnvironmentProvider(async ({ provider }) =>
provider === 'codex'
? { AGENT_TEAMS_RUNTIME_TURN_SETTLED_SPOOL_ROOT: '/tmp/runtime-hooks' }
: null
);
const result = await (svc as any).buildRuntimeTurnSettledEnvironmentForMembers('anthropic', [
{ name: 'alice', providerId: 'anthropic' },
{ name: 'jack', model: 'gpt-5.4' },
]);
expect(result).toEqual({
AGENT_TEAMS_RUNTIME_TURN_SETTLED_SPOOL_ROOT: '/tmp/runtime-hooks',
});
});
it('does not add Codex turn-settled env when no member uses Codex', async () => {
const svc = new TeamProvisioningService();
const provider = vi.fn(async () => ({