feat(host,client): compose directory picking through slots — dual-face -native, no wire advertisement
ui-workspace's two trigger surfaces each declare a single-kind directory-flow hole (conversation.hero.workspace.directoryFlow / sidebar.workspaces.directoryFlow, same owner contract) and keep only the trigger and the adoption: the Open-local- folder entry renders while the surface's hole is occupied, and the occupant reports one picked path per open through the hole's owner conversation (open/busy/onPicked/onCancel/onError). directory-picker-native becomes dual-face: its browser half fills both holes with a renderless occupant driving host.pickDirectory, so the cordis.yml row that mounts the backend also composes the client interaction — a mismatch is impossible and a second flow package fails at client load. With composition wiring both sides, the host.describe.directoryPicker advertisement and the client's kind branching lose their last consumer: the field, WorkspacesService.directoryPickerKind(), the DirectoryPickerKind wire type, and the picker's per-open describe read are deleted. The connection fixture now serves a deterministic pickDirectory path so the keyless snapshot drives the full pick-then-adopt flow. ui-workspace's hand-rolled declaration deferral is replaced by the deferRegistration helper it duplicated.
This commit is contained in:
@@ -19,6 +19,8 @@
|
||||
"packages/client/*/src/css-modules.d.ts",
|
||||
"packages/client/*/tests/**/*.ts",
|
||||
"packages/client/*/tests/**/*.tsx",
|
||||
"packages/host/directory-picker-native/tests/**/*.ts",
|
||||
"packages/host/directory-picker-native/tests/**/*.tsx",
|
||||
"packages/client/tsdown.client.ts",
|
||||
"scripts/client-bundle-purity.spec.ts"
|
||||
],
|
||||
@@ -27,6 +29,10 @@
|
||||
// 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" },
|
||||
// Dual-face host leaf: the node half is the native picking backend, the
|
||||
// browser half registers the picking flow into ui-workspace's slot —
|
||||
// client-side Context merges keep it out of the host program.
|
||||
{ "path": "./packages/host/directory-picker-native" },
|
||||
{ "path": "./packages/client/ui-slots" },
|
||||
{ "path": "./packages/client/ui-primitives" },
|
||||
{ "path": "./packages/client/web-react" },
|
||||
|
||||
Reference in New Issue
Block a user