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