Files
deepseek-harness/packages/client/web-react
imccyu 45eee34faf test: adapt suites to the provider-hosted conversation shell
Test-side catch-up with the session-maybe conversation architecture: the
provide channel's descriptor shape and maybeProvideInfo in fakes, the shared
chat-store handle asserted on conversation.session (the session-maybe shell
carries no store), startSession fakes exposing the workspace list snapshot,
strict session slots declining (not throwing) without a session, AppFrame's
removed empty seat and loading gate, and the hero draft asserted on the
machine (the chat-store mirror binds with ConversationSession). Plus three
lint fixes (max-len split, boolean-compare, arrow-parens/unbound-method).
2026-07-27 04:28:42 +08:00
..
2026-07-26 05:06:39 +08:00
2026-07-26 05:06:39 +08:00

@deepseek-ai/dsh-client-web-react

English | 中文

Shell-side React glue for the slot terminal design: createSlotRenderer (the SlotRenderer implementation the shell installs into the runtime SlotsService), SessionProvider (framework-wired render prop, also injected as a standard seat to entries declaring session-scope children), bindSnapshotSelector (the one hook constructor — hosts and engines traffic in bare observable sources; every hook binds here, cached per source), useInvoke. Chain-slot outlets run the registered selectors in chain order at render time and mount only the elected entry, its select return joining the props as matched; the renderSlotChain binding is per-entry cached like renderSlot. The snapshot-store engine and defineStore live in runtime (store relocation); business plugins depend on ui-slots types only, never on this package.

Model Experience

None, as the ctx↔React machinery runs entirely in the browser; nothing here reaches a model request.

KV Cache effect

None; this package neither assembles nor sends a provider request.

Known Limitations and Deferred Work

  • The persist middleware corrupts primitive-state stores — it object-spreads state on save, so a SnapshotStore<string> round-trips as a character map; the engine hand-rolls persistence instead (see attachPersistence).
  • UseSession is deliberately wide (object snapshot) — the dependency direction (runtime → web-react, never the reverse) keeps the real ConversationSnapshot type out of reach; session-slot consumers narrow once at their boundary.
  • renderSlot is the single P-I form — no Suspense, no per-entry lazy loading; the progressive-rendering surface returns with its own project.