4.3 KiB
title, status, normative
| title | status | normative |
|---|---|---|
| Client и server assembly domain | draft | true |
Client и Server Assembly
client и server создают готовые runtime-specific instances одного domain поверх его business factory и adapters.
Client assembly
domains/{group...}/{domain}/client/
├── create-{domain}-client-runtime.ts
└── index.ts
export const createAuthClientRuntime = (): AuthRuntime => {
return authFactory({
phoneAuth: browserPhoneAuthAdapter,
session: browserSessionAdapter,
})
}
SLM-ASM-001 - ОБЯЗАН. Client assembly может импортировать только собственную business factory, собственные client adapters, собственную React surface и необходимые runtime-specific technical inputs.
SLM-ASM-002 - ОБЯЗАН. Client assembly должна возвращать готовый runtime собственного domain.
SLM-ASM-003 - ЗАПРЕЩЕНО. Client assembly одного domain не может импортировать creator или runtime другого domain.
SLM-ASM-004 - МОЖЕТ. Client assembly может принимать готовую внешнюю capability через собственный input contract.
createUserClientRuntime({ auth: auth.session })
Такой input не даёт user domain права создавать AuthRuntime или импортировать его client entrypoint.
Server assembly
domains/{group...}/{domain}/server/
├── create-{domain}-server-runtime.ts
└── index.ts
SLM-ASM-005 - ОБЯЗАН. Server assembly должна создавать новый runtime в scope, соответствующем request или другой явно выбранной server lifetime.
SLM-ASM-006 - ЗАПРЕЩЕНО. Request credentials, cookies, headers и user-specific state не могут сохраняться в process-level mutable singleton.
SLM-ASM-007 - ОБЯЗАН. Framework/request input используется только для создания server adapters и не протекает как raw framework object в business API.
SLM-ASM-008 - ОБЯЗАН. Server entrypoint должен иметь явный server-only marker, если framework предоставляет такой механизм.
SLM-ASM-015 - МОЖЕТ. Server assembly может принимать готовую внешнюю capability через собственный input contract на тех же условиях, что и client assembly.
SLM-ASM-016 - ОБЯЗАН. Server assembly может импортировать только собственную business factory, собственные server adapters и необходимые server technical inputs; импорт React/client surface запрещён.
Constructor и activation
Assembly определяет способ создания, но не владеет полным cross-domain graph.
SLM-ASM-009 - ЗАПРЕЩЕНО. Вызов runtime creator не должен выполнять product request, открывать socket или запускать background resource.
module import
→ определяет creator
creator call
→ создаёт runtime instance
explicit start
→ запускает resources
SLM-ASM-010 - ОБЯЗАН. Resources запускает graph owner в выбранном scope согласно lifecycle rules.
Public entrypoints
SLM-ASM-011 - ОБЯЗАН. Client и server assembly должны иметь разные public entrypoints.
SLM-ASM-012 - ЗАПРЕЩЕНО. Общий domain barrel не может runtime-реэкспортировать одновременно client и server surfaces.
Server/client bridge
Client и server runtimes являются разными instances над общей business semantics.
SLM-ASM-013 - ЗАПРЕЩЕНО. DomainRuntime, functions, Context, store или query client нельзя передавать через serializable server/client boundary.
SLM-ASM-014 - МОЖЕТ. Server может передать client assembly только serializable business-owned bootstrap data без secrets и mutable runtime objects.