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.
86 lines
4.2 KiB
JSON
86 lines
4.2 KiB
JSON
{
|
|
// Client-side typecheck aggregate: packages/client tests (.ts and .tsx).
|
|
// Split from the host aggregate because both sides merge cordis Context
|
|
// under the same keys (sessions, loader) with different services; shared
|
|
// leaves (session/llm/tools/apiproxy/...) build once and are referenced by
|
|
// both programs through each client package's own references.
|
|
"extends": "./tsconfig.base.client.json",
|
|
"compilerOptions": {
|
|
"noEmit": true,
|
|
"rewriteRelativeImportExtensions": false,
|
|
// Tests execute under vitest on node (e2e files spawn processes); browser
|
|
// purity of package src is each package's own tsconfig plus
|
|
// scripts/client-bundle-purity.spec.ts.
|
|
"types": ["node"]
|
|
},
|
|
"include": [
|
|
// Source-subpath test imports can arrive through workspace links whose
|
|
// realpath semantics vary by host. Load package CSS declarations directly.
|
|
"packages/client/*/src/css-modules.d.ts",
|
|
"packages/client/*/tests/**/*.ts",
|
|
"packages/client/*/tests/**/*.tsx",
|
|
"packages/api/gateway/tests/client.spec.ts",
|
|
"packages/client/tsdown.client.ts",
|
|
"scripts/client-bundle-css.spec.ts",
|
|
"scripts/client-bundle-purity.spec.ts"
|
|
],
|
|
"references": [
|
|
// Shared leaf: web e2e boots the real host webserver (fixture + real-host
|
|
// smoke policy). webserver has zero workspace deps and no cordis merge,
|
|
// so it cannot drag host-side Context augmentation into this program.
|
|
{ "path": "./packages/host/webserver" },
|
|
// Compaction seam: the client-runtime pin test value-imports the canonical
|
|
// checkpoint const from the cordis-free dsh-compact/checkpoint leaf and
|
|
// deliberately never loads the dsh-compact package root or the host-side
|
|
// Context merges reachable through it. The client package pins the same
|
|
// leaf through a type-only import in transcript-adapter.ts; composite
|
|
// rootDir rules make both paths depend on this runtime project reference.
|
|
{ "path": "./packages/compact/compact" },
|
|
{ "path": "./packages/client/ui-slots" },
|
|
{ "path": "./packages/client/schema-form" },
|
|
{ "path": "./packages/client/ui-attachment" },
|
|
{ "path": "./packages/client/ui-primitives" },
|
|
{ "path": "./packages/client/web-react" },
|
|
{ "path": "./packages/client/modules" },
|
|
{ "path": "./packages/client/hmr" },
|
|
{ "path": "./packages/client/connection/tsconfig.client.json" },
|
|
// The carrier's node-half spec rides this aggregate's package test glob, so
|
|
// its Host face is referenced here too — the mirror of the webserver leaf.
|
|
{ "path": "./packages/client/connection/tsconfig.host.json" },
|
|
{ "path": "./packages/typert/registry" },
|
|
{ "path": "./packages/api/gateway/tsconfig.client.json" },
|
|
{ "path": "./packages/api/remotes/tsconfig.client.json" },
|
|
{ "path": "./packages/client/runtime" },
|
|
{ "path": "./packages/client/test-runtime" },
|
|
{ "path": "./packages/client/ui-layout" },
|
|
{ "path": "./packages/client/ui-sidebar" },
|
|
{ "path": "./packages/client/ui-conversation" },
|
|
{ "path": "./packages/client/ui-tool" },
|
|
{ "path": "./packages/client/ui-deliverables" },
|
|
{ "path": "./packages/client/ui-workflow-run" },
|
|
{ "path": "./packages/client/ui-workspace" },
|
|
{ "path": "./packages/client/ui-slash" },
|
|
{ "path": "./packages/client/ui-command" },
|
|
{ "path": "./packages/client/ui-skill" },
|
|
{ "path": "./packages/client/ui-subagent" },
|
|
{ "path": "./packages/client/ui-task" },
|
|
{ "path": "./packages/client/ui-directory-picker" },
|
|
{ "path": "./packages/client/ui-directory-picker-native" },
|
|
{ "path": "./packages/client/ui-goal" },
|
|
{ "path": "./packages/client/ui-model" },
|
|
{ "path": "./packages/client/ui-agent-preset" },
|
|
{ "path": "./packages/client/ui-permission" },
|
|
{ "path": "./packages/client/ui-plan" },
|
|
{ "path": "./packages/client/ui-plugin-config" },
|
|
{ "path": "./packages/client/ui-question" },
|
|
{ "path": "./packages/client/ui-trajectory" },
|
|
{ "path": "./packages/client/ui-theme" },
|
|
{ "path": "./packages/client/ui-settings" },
|
|
{ "path": "./packages/client/ui-settings-general" },
|
|
{ "path": "./packages/client/ui-models" },
|
|
{ "path": "./packages/client/locale" },
|
|
{ "path": "./packages/client/web" },
|
|
{ "path": "./apps/web" }
|
|
]
|
|
}
|