refactor(faces): keep the generated contributions out of the Host aggregate

The Gateway and the carrier each compiled both halves under one tsconfig, so
the Host aggregate built their browser faces — including the face that owns
`ctx.remote`, the most likely future consumer of a generated `/remote`
contribution. Both packages now expose a host and a client face, and each
aggregate references only its own; three modules the halves share appear in
both file lists, as api/remotes already does.

The two apps/web specs in the Host aggregate restate the conversation engine's
Context key format instead of importing the Client runtime for it. A drift
makes the key miss its rendered node, so the assertion fails loudly.

The Host aggregate now reaches one Client project, the carrier's host face,
which the Gateway's own dispatch face needs; no generated contribution is
reachable from it.
This commit is contained in:
imccyu
2026-08-11 23:33:16 +08:00
parent 40af20cafe
commit 027cbdfe5d
12 changed files with 170 additions and 81 deletions
+2 -8
View File
@@ -89,8 +89,7 @@
],
"exclude": [
"packages/client/**",
"packages/host/directory-picker-browse/**",
"packages/host/directory-picker-native/**",
"packages/api/gateway/tests/client.spec.ts",
"scripts/client-bundle-css.spec.ts",
"packages/typert/generator/tests/fixtures/**",
"scripts/client-bundle-purity.spec.ts"
@@ -120,7 +119,7 @@
{ "path": "./packages/core/scope" },
{ "path": "./packages/typert/type-meta" },
{ "path": "./packages/typert/registry" },
{ "path": "./packages/api/gateway" },
{ "path": "./packages/api/gateway/tsconfig.host.json" },
{ "path": "./packages/api/remotes/tsconfig.host.json" },
{ "path": "./packages/typert/loader" },
{ "path": "./packages/session/session-persistence" },
@@ -270,11 +269,6 @@
{ "path": "./packages/host/apiproxy" },
{ "path": "./packages/host/directory-picker" },
{ "path": "./packages/host/directory-picker-auto" },
// Dual-face backend leaves stay client-registered (their tests and client
// halves are excluded above); these references only let the adaptive
// chooser's composition test import each backend's NODE entry, whose
// declarations carry no client-side Context merge — the mirror of the
// client aggregate's webserver reference.
{ "path": "./packages/host/directory-picker-browse" },
{ "path": "./packages/host/directory-picker-native" },
{ "path": "./packages/host/frontend-static" },