Files
deepseek-harness/packages/client/store
imccyu e4410b2764 perf(client): read each tsdown preset's own package manifest
The client tsdown presets found a package's own manifest by name: a glob of
every packages/*/*/package.json, parsed until the name matched. tsdown's
native config loader imports each package config without module cache, so
the module-level cache never hit and all 82 configs repeated the glob
(40-125 ms each) synchronously on tsdown's main thread, where it delayed
every other package build. It was 34.5% of the client pass's main thread.

- clientBundle, staticLinked and clientLibrary take the package directory
  (import.meta.dirname at every call site) and read <dir>/package.json
  once; the package name, loader id and externals come from that manifest.
- A missing, unreadable or nameless manifest throws an actionable error.
- The glob, the name search and the module-level caches are removed.

tsdown client pass 12.78 s -> 8.73 s (median of 3 interleaved runs each,
-31.7%); all 11,566 lib outputs byte-identical; all 82 configs resolve the
same externals and banners.

Refs #5852
2026-10-11 18:19:23 +08:00
..
2026-10-09 15:13:40 +08:00

description, kind
description kind
Observable browser state stores with explicit snapshots, subscriptions, and lifecycle ownership. package-library

@deepseek-ai/dsh-client-store

English | 中文

Summary

React-free observable and snapshot-store primitives shared by Client controllers and renderer adapters. The package owns synchronous and animation-frame publication, Immer-backed updates, shallow equality, and optional browser persistence; React hook construction remains in @deepseek-ai/dsh-client-ui-renderer. Use it when Client state must publish stable snapshots without depending on React.

Table of Contents


Model Experience

None, as this package provides browser-side state primitives and registers nothing model-facing.

KV Cache effect

None; the stores neither assemble nor send model requests.

Known Limitations and Deferred Work

  • Persistence is browser-local — persisted stores use JSON in localStorage; non-browser runtimes disable persistence, and the package provides no cross-device synchronization.
  • Web-shell build input — the static ESM retains third-party imports for Vite; independent consumers supply its development dependencies (dependency rules).

Dev Note

Working context for maintainers — click to expand

None.