Skip to content

Extension Platform Core

Поверх v3-ядра и классических реестров (app.sidebar, ai.artifactDrivers, …) платформа даёт четыре опоры для кросс-расширенческой логики без прямых зависимостей между пакетами:

СтолпЗадачаRegistry IDs
Space typesТип Space + UI создания и runtime per typebackend.spaceTypes, app.spaceCreatePanels, app.spaceTypeViews
Space abilitiesРоли и абилки внутри space (CASL), персистентные политикиbackend.spaceAbilities, backend.spaceRoles
Entity fieldsКастомные поля сущностей (EAV, значения — строки)backend.entityFields
Entity hooksExpress-like middleware на CRUD entry pointsbackend.entityHooks

ADR и краткая заметка для миграции: architecture-v3/migration-notes/extension-platform.md.

Сценарий: продуктовые расширения

РасширениеSpace typeCreate panel
(ядро)standard
AI-flowai-flow.automaticпресет + bootstrap
Required deliverablespanel на standard
Artifact review

Сценарий из коробки (hooks demo)

Расширение workflow-engine (гипотетическое):

  1. Регистрирует ability workflow-engine.enforceDeliverables и роль workflow-engine.reviewer.
  2. Регистрирует поле workflow-engine.strictMode на space (defaultValue: 'false').
  3. В хуке artifact:beforeCreate читает hookCtx.fields['workflow-engine.strictMode'] и hookCtx.ability.can('workflow-engine.enforceDeliverables')без импорта другого расширения.
mermaid
flowchart TB
  subgraph ext [Extension setup]
    R1[registerSpaceAbility / registerSpaceRole]
    R2[registerEntityField]
    R3[registerEntityHook]
  end
  subgraph host [Host runtime]
    REG[(Extension registries)]
    EAV[(EntityFieldValue)]
    POL[(SpaceAbilityPolicy)]
    HOOKS[EntityHookRunner]
    CASL[buildSpaceAbility]
  end
  subgraph entry [Request path]
    GQL[GraphQL / services]
    GQL --> CASL
    GQL --> HOOKS
    HOOKS --> CASL
    HOOKS --> EAV
    CASL --> POL
    EAV --> REG
    POL --> REG
  end
  R1 --> REG
  R2 --> REG
  R3 --> REG

Где что живёт в коде

ОбластьПуть
Space CASLapps/backend/src/modules/spaces/abilities/
EAVapps/backend/src/modules/entity-fields/
Hooks runnerapps/backend/src/modules/entity-hooks/
Extension host APIsapps/backend/src/modules/extensions/context.ts, extension-host.ts
SDK typespackages/extension-sdk/src/host/
Frontend guardsapps/frontend/src/shared/composables/useSpaceAbility.ts
GraphQLapps/backend/src/modules/spaces/graphql/schema.ts, artifacts/graphql/schema.ts

Слои abilities

СлойScopeНе путать с
Global CASLadmin / user, InstanceSettings, профильapps/backend/src/modules/casl/ability.ts
Space CASLоперации внутри конкретного spaceглобальными ролями Keystone User

Space abilities не заменяют глобальный CASL — дополняют его на уровне membership в space.

Демо

Расширение registry-test регистрирует demo field, role, ability и hook artifact:beforeCreate (abort по имени __registry_test_abort__).

Документация по фичам

Space types

Space abilities

Entity fields

Entity hooks

Вне scope платформы (v1)

  • Workflow-engine, review-gates, structured-deliverables как продуктовые фичи
  • Прямой host API entity fields / space abilities в ai-agent-service (отдельная фаза)
  • Авто-формы по registry полей (app.entityFieldEditors) — UI рисует расширение
  • Org-wide шаблоны политик across spaces

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