@axiom-lattice/gateway 8.2.0 → 8.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (21) hide show
  1. package/dist/embed/{embed-page-AgentDetailSideApp-WDDE7BEH.js → embed-page-AgentDetailSideApp-7YTMN643.js} +1 -1
  2. package/dist/embed/{embed-page-AgentGovernanceWorkbench-7YPU3QB2.js → embed-page-AgentGovernanceWorkbench-YWJ4ZLEV.js} +1 -1
  3. package/dist/embed/embed-page-MessageGraph-N2DXVMEK.js +6 -0
  4. package/dist/embed/{embed-page-ReactChart-D7RZQB2H.js → embed-page-ReactChart-3QDZX2WG.js} +1 -1
  5. package/dist/embed/{embed-page-TasksSideApp-KD4S22SL.js → embed-page-TasksSideApp-MYIRJWFM.js} +1 -1
  6. package/dist/embed/{embed-page-TopologyRuntimeView-Z7MY6U5T.js → embed-page-TopologyRuntimeView-3O6VJUZR.js} +1 -1
  7. package/dist/embed/{embed-page-WorkflowAutomationView-4MY4HG7R.js → embed-page-WorkflowAutomationView-YHOS4WQR.js} +1 -1
  8. package/dist/embed/{embed-page-chunk-GSUSX54K.js → embed-page-chunk-FE6KYRCO.js} +1 -1
  9. package/dist/embed/{embed-page-chunk-CFFDP526.js → embed-page-chunk-IBRMWDHE.js} +184 -184
  10. package/dist/embed/{embed-page-chunk-EM6VGUZ2.js → embed-page-chunk-IELKCYQX.js} +1 -1
  11. package/dist/embed/{embed-page-chunk-BZKAPY7M.js → embed-page-chunk-JTL73EBV.js} +1 -1
  12. package/dist/embed/{embed-page-chunk-G5MXFDNZ.js → embed-page-chunk-PROZXFWS.js} +1 -1
  13. package/dist/embed/{embed-page-chunk-HZZ5HNTF.js → embed-page-chunk-WGEXK773.js} +2 -2
  14. package/dist/embed/{embed-page-chunk-G5PDHDBZ.js → embed-page-chunk-YMVKQQXJ.js} +1 -1
  15. package/dist/embed/embed-page.js +3 -3
  16. package/dist/index.js +58 -15
  17. package/dist/index.js.map +1 -1
  18. package/dist/index.mjs +58 -15
  19. package/dist/index.mjs.map +1 -1
  20. package/package.json +4 -4
  21. package/dist/embed/embed-page-MessageGraph-LNNMCH6I.js +0 -6
package/dist/index.mjs CHANGED
@@ -12018,15 +12018,25 @@ var ProjectAccessService = class {
12018
12018
  input.projectId,
12019
12019
  input.userId
12020
12020
  );
12021
- if (membership?.status === "active") {
12021
+ if (project.kind === "personal") {
12022
+ if (!this.isActiveMembership(membership, input)) this.accessDenied();
12022
12023
  this.requireCapability(membership, input.capability);
12023
12024
  return { project, membership };
12024
12025
  }
12026
+ if (this.isActiveMembership(membership, input) && this.hasCapability(membership, input.capability)) {
12027
+ return { project, membership };
12028
+ }
12029
+ const tenantAdmin = await this.tenantAdminMembership(project, input);
12030
+ if (this.isActiveMembership(membership, input)) {
12031
+ if (tenantAdmin) return { project, membership: tenantAdmin };
12032
+ this.requireCapability(membership, input.capability);
12033
+ }
12025
12034
  const memberships = await this.deps.membershipStore.list(input.tenantId, input.projectId);
12026
- if (memberships.length !== 0) this.accessDenied();
12027
- if (project.kind === "personal") this.accessDenied();
12028
- const tenantLink = await this.deps.userTenantLinkStore.getLink(input.userId, input.tenantId);
12029
- if (tenantLink?.role !== "owner" && tenantLink?.role !== "admin") this.accessDenied();
12035
+ if (memberships.length !== 0) {
12036
+ if (tenantAdmin) return { project, membership: tenantAdmin };
12037
+ this.accessDenied();
12038
+ }
12039
+ if (!tenantAdmin) this.accessDenied();
12030
12040
  let claim;
12031
12041
  try {
12032
12042
  claim = await this.deps.membershipStore.createInitialOwner({
@@ -12069,9 +12079,19 @@ var ProjectAccessService = class {
12069
12079
  input.projectId,
12070
12080
  input.userId
12071
12081
  );
12072
- if (!membership || membership.tenantId !== input.tenantId || membership.projectId !== input.projectId || membership.userId !== input.userId || membership.status !== "active") this.accessDenied();
12073
- this.requireCapability(membership, input.capability);
12074
- return { project, membership };
12082
+ const activeMembership = this.isActiveMembership(membership, input) ? membership : void 0;
12083
+ if (project.kind === "personal") {
12084
+ if (!activeMembership) this.accessDenied();
12085
+ this.requireCapability(activeMembership, input.capability);
12086
+ return { project, membership: activeMembership };
12087
+ }
12088
+ if (activeMembership && this.hasCapability(activeMembership, input.capability)) {
12089
+ return { project, membership: activeMembership };
12090
+ }
12091
+ const tenantAdmin = await this.tenantAdminMembership(project, input);
12092
+ if (tenantAdmin) return { project, membership: tenantAdmin };
12093
+ if (activeMembership) this.requireCapability(activeMembership, input.capability);
12094
+ this.accessDenied();
12075
12095
  }
12076
12096
  /**
12077
12097
  * Authorizes roster visibility for any active participant (owner/admin/member/viewer).
@@ -12093,6 +12113,9 @@ var ProjectAccessService = class {
12093
12113
  input.userId
12094
12114
  );
12095
12115
  if (membership?.status === "active") {
12116
+ if (this.hasCapability(membership, input.capability)) return { project, membership };
12117
+ const tenantAdmin = await this.tenantAdminMembership(project, input);
12118
+ if (tenantAdmin) return { project, membership: tenantAdmin };
12096
12119
  this.requireCapability(membership, input.capability);
12097
12120
  return { project, membership };
12098
12121
  }
@@ -12107,6 +12130,9 @@ var ProjectAccessService = class {
12107
12130
  input.userId
12108
12131
  );
12109
12132
  if (membership?.status === "active") {
12133
+ if (this.hasCapability(membership, input.capability)) return { project, membership };
12134
+ const tenantAdmin = await this.tenantAdminMembership(project, input);
12135
+ if (tenantAdmin) return { project, membership: tenantAdmin };
12110
12136
  this.requireCapability(membership, input.capability);
12111
12137
  return { project, membership };
12112
12138
  }
@@ -12158,8 +12184,29 @@ var ProjectAccessService = class {
12158
12184
  throw error;
12159
12185
  }
12160
12186
  }
12187
+ hasCapability(membership, capability2) {
12188
+ return allowedRoles[capability2].has(membership.role);
12189
+ }
12161
12190
  requireCapability(membership, capability2) {
12162
- if (!allowedRoles[capability2].has(membership.role)) this.accessDenied();
12191
+ if (!this.hasCapability(membership, capability2)) this.accessDenied();
12192
+ }
12193
+ async tenantAdminMembership(project, input) {
12194
+ if (project.kind === "personal") return void 0;
12195
+ const tenantLink = await this.deps.userTenantLinkStore.getLink(input.userId, input.tenantId);
12196
+ if (tenantLink?.role !== "owner" && tenantLink?.role !== "admin") return void 0;
12197
+ return {
12198
+ id: `tenant-admin:${input.userId}`,
12199
+ tenantId: input.tenantId,
12200
+ projectId: project.id,
12201
+ userId: input.userId,
12202
+ role: "admin",
12203
+ status: "active",
12204
+ joinedAt: project.createdAt,
12205
+ updatedAt: project.updatedAt
12206
+ };
12207
+ }
12208
+ isActiveMembership(membership, input) {
12209
+ return membership != null && membership.tenantId === input.tenantId && membership.projectId === input.projectId && membership.userId === input.userId && membership.status === "active";
12163
12210
  }
12164
12211
  accessDenied() {
12165
12212
  throw new ProjectCollaborationError("PROJECT_ACCESS_DENIED", 403, "Project access denied");
@@ -23449,8 +23496,6 @@ var ProjectMembershipService = class {
23449
23496
  }
23450
23497
  async list(actor3) {
23451
23498
  await this.deps.accessService.requireRosterAccess(actor3);
23452
- const membership = await this.deps.membershipStore.findByUser(actor3.tenantId, actor3.projectId, actor3.userId);
23453
- if (!membership || membership.status !== "active") this.accessDenied();
23454
23499
  return this.deps.membershipStore.list(actor3.tenantId, actor3.projectId);
23455
23500
  }
23456
23501
  async add(actor3, input) {
@@ -23508,10 +23553,8 @@ var ProjectMembershipService = class {
23508
23553
  });
23509
23554
  }
23510
23555
  async authorize(actor3) {
23511
- await this.deps.accessService.requireProjectAccess({ ...actor3, capability: "manage" });
23512
- const membership = await this.deps.membershipStore.findByUser(actor3.tenantId, actor3.projectId, actor3.userId);
23513
- if (!membership || membership.status !== "active") this.accessDenied();
23514
- return membership;
23556
+ const access = await this.deps.accessService.requireProjectAccess({ ...actor3, capability: "manage" });
23557
+ return access.membership;
23515
23558
  }
23516
23559
  async target(actor3, id3) {
23517
23560
  const target = (await this.deps.membershipStore.list(actor3.tenantId, actor3.projectId)).find((item) => item.id === id3);