FIX - LAUNCHER: sync Codex Agent API entitlement
This commit is contained in:
parent
2618e88e83
commit
ec91821fdc
|
|
@ -168,7 +168,7 @@ export function createControlPlaneStore({ projectRoot }) {
|
|||
async function updateClient(clientId, payload, identity) {
|
||||
const data = readData();
|
||||
const actor = resolveActor(data, identity);
|
||||
const client = findById(data.clients, clientId, "client");
|
||||
const client = findClientById(data, clientId);
|
||||
|
||||
client.type = pickEnum(payload?.type, clientTypes, client.type);
|
||||
client.name = optionalString(payload?.name, client.name);
|
||||
|
|
@ -332,7 +332,7 @@ export function createControlPlaneStore({ projectRoot }) {
|
|||
async function deleteClient(clientId, identity) {
|
||||
const data = readData();
|
||||
const actor = resolveActor(data, identity);
|
||||
const client = findById(data.clients, clientId, "client");
|
||||
const client = findClientById(data, clientId);
|
||||
|
||||
if (data.clients.length <= 1) {
|
||||
throw new Error("Cannot delete the last client");
|
||||
|
|
@ -1564,16 +1564,12 @@ export function createControlPlaneStore({ projectRoot }) {
|
|||
const serviceId = requireString(payload?.serviceId, "serviceId");
|
||||
const moduleId = pickEnum(payload?.moduleId, serviceModuleIds, "codex_agents");
|
||||
const enabled = payload?.enabled === true;
|
||||
const client = findById(data.clients, clientId, "client");
|
||||
const client = findClientById(data, clientId);
|
||||
const user = findById(data.users, userId, "user");
|
||||
const service = findById(data.services, serviceId, "service");
|
||||
|
||||
const existingEntitlement = data.serviceModuleEntitlements.find(
|
||||
(entitlement) =>
|
||||
entitlement.clientId === client.id &&
|
||||
entitlement.userId === user.id &&
|
||||
entitlement.serviceId === service.id &&
|
||||
entitlement.moduleId === moduleId
|
||||
(entitlement) => entitlement.userId === user.id && entitlement.serviceId === service.id && entitlement.moduleId === moduleId
|
||||
);
|
||||
|
||||
let entitlement = null;
|
||||
|
|
@ -1583,13 +1579,13 @@ export function createControlPlaneStore({ projectRoot }) {
|
|||
existingEntitlement ??
|
||||
{
|
||||
id: uniqueId(data.serviceModuleEntitlements, "svc_module", `${client.id}-${service.slug}-${user.email}-${moduleId}`),
|
||||
clientId: client.id,
|
||||
userId: user.id,
|
||||
serviceId: service.id,
|
||||
moduleId,
|
||||
createdByUserId: actor.id,
|
||||
createdAt: now,
|
||||
};
|
||||
entitlement.clientId = client.id;
|
||||
entitlement.enabled = true;
|
||||
entitlement.updatedAt = now;
|
||||
|
||||
|
|
@ -1598,13 +1594,7 @@ export function createControlPlaneStore({ projectRoot }) {
|
|||
}
|
||||
} else {
|
||||
data.serviceModuleEntitlements = data.serviceModuleEntitlements.filter(
|
||||
(candidate) =>
|
||||
!(
|
||||
candidate.clientId === client.id &&
|
||||
candidate.userId === user.id &&
|
||||
candidate.serviceId === service.id &&
|
||||
candidate.moduleId === moduleId
|
||||
)
|
||||
(candidate) => !(candidate.userId === user.id && candidate.serviceId === service.id && candidate.moduleId === moduleId)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2581,14 +2581,10 @@ function resolveUserServiceModules(data, user, serviceSlug, clientId) {
|
|||
return { codex_agents: true };
|
||||
}
|
||||
|
||||
const normalizedClientId = normalizeOptionalText(clientId);
|
||||
if (!normalizedClientId) return {};
|
||||
|
||||
return Object.fromEntries(
|
||||
(data.serviceModuleEntitlements ?? [])
|
||||
.filter(
|
||||
(entitlement) =>
|
||||
entitlement.clientId === normalizedClientId &&
|
||||
entitlement.userId === user.id &&
|
||||
entitlement.serviceId === service.id &&
|
||||
entitlement.enabled
|
||||
|
|
@ -3287,9 +3283,7 @@ function scopeControlPlaneData(data, scope) {
|
|||
return false;
|
||||
}),
|
||||
exceptions: data.exceptions.filter((exception) => userIds.has(exception.userId)),
|
||||
serviceModuleEntitlements: data.serviceModuleEntitlements.filter(
|
||||
(entitlement) => clientIds.has(entitlement.clientId) && userIds.has(entitlement.userId)
|
||||
),
|
||||
serviceModuleEntitlements: data.serviceModuleEntitlements.filter((entitlement) => userIds.has(entitlement.userId)),
|
||||
taskManagerMemberships: data.taskManagerMemberships.filter(
|
||||
(membership) => clientIds.has(membership.clientId) && userIds.has(membership.userId)
|
||||
),
|
||||
|
|
|
|||
|
|
@ -520,7 +520,7 @@ export function LauncherApp() {
|
|||
}
|
||||
|
||||
function handleSetServiceModuleEntitlement(command: SetServiceModuleEntitlementCommand) {
|
||||
const entitlementKey = `${command.clientId}:${command.userId}:${command.serviceId}:${command.moduleId}`;
|
||||
const entitlementKey = `${command.userId}:${command.serviceId}:${command.moduleId}`;
|
||||
|
||||
if (pendingServiceModuleEntitlements[entitlementKey]) {
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -4826,14 +4826,13 @@ function accessCellKey(userId: string, serviceId: string): string {
|
|||
return `${userId}:${serviceId}`;
|
||||
}
|
||||
|
||||
function serviceModuleEntitlementKey(clientId: string, userId: string, serviceId: string, moduleId: ServiceModuleId): string {
|
||||
return `${clientId}:${userId}:${serviceId}:${moduleId}`;
|
||||
function serviceModuleEntitlementKey(_clientId: string, userId: string, serviceId: string, moduleId: ServiceModuleId): string {
|
||||
return `${userId}:${serviceId}:${moduleId}`;
|
||||
}
|
||||
|
||||
function hasServiceModuleEntitlement(data: LauncherData, clientId: string, userId: string, serviceId: string, moduleId: ServiceModuleId): boolean {
|
||||
function hasServiceModuleEntitlement(data: LauncherData, _clientId: string, userId: string, serviceId: string, moduleId: ServiceModuleId): boolean {
|
||||
return data.serviceModuleEntitlements.some(
|
||||
(entitlement) =>
|
||||
entitlement.clientId === clientId &&
|
||||
entitlement.userId === userId &&
|
||||
entitlement.serviceId === serviceId &&
|
||||
entitlement.moduleId === moduleId &&
|
||||
|
|
|
|||
Loading…
Reference in New Issue