Skip to content

Space abilities

Контроль доступа внутри space: кто может читать артефакты, создавать, удалять, менять политики, вызывать agent edit и т.д.

Модель

  1. Core role на SpaceMember: owner | editor | viewer.
  2. Extension roles на SpaceMember.extensionRoles: string[] (например workflow-engine.reviewer).
  3. Abilities — строковые ID (artifact.create, my-ext.approve). Core + расширения.
  4. SpaceAbilityPolicy — persisted grants per space per role key: Record<abilityId, boolean | { granted, config? }>.
  5. Effective grants для пользователя = union по core role + extension roles, с учётом policy.

При создании space политики seed-ятся из core defaults + merged defaults всех загруженных расширений.

Enforcement

Единая точка — buildSpaceAbility / assertSpaceAbility в сервисах:

  • artifact-access.service.ts — read vs mutate
  • artifact-tree.service.tsartifact.read
  • working-copy.service.ts — edit vs preview
  • SpaceMember mutations — space.manageMembers
  • Keystone access.filter на Space / Artifact — safety net

Раньше проверялось только membership; сейчас viewer не может создавать/редактировать артефакты.

GraphQL (кратко)

Query / MutationНазначение
mySpaceAbilities(spaceId)effective grants текущего пользователя
spaceAbilityCatalogкаталог всех abilities (core + extensions)
spaceAbilityPolicyRows(spaceId)сырые policy rows (нужен space.read)
setSpaceAbilityPolicy(spaceId, roleKey, grants)правка policy (space.managePolicies, owner)
updateSpaceMemberExtensionRoles(spaceMemberId, extensionRoles)назначение extension roles

Дальше

См. также краткий registry guide.

AI workspace для командных материалов и знаний