/** * tsdown build for dsh-better-sidebar: the host-half lib (lib/index.js and * the lib/invariant.js companion, ESM node) plus the two browser client * bundles (lib/client.js and lib/client-registry.js, CJS closure factory) — * one per install channel: * * - `lib/client.js` serves the official profile channel, registering with * the package-name id `dsh-better-sidebar` (the client-modules compose * keys on the package name; keep it in sync with package.json `name`), * - `lib/client-registry.js` serves the plugin-registry channel * (dsh.plugin.json), registering with the manifest id * `dsh-external/dsh-better-sidebar` (the registry browser-side `arrive()` * check requires bundle id === plugin id). * * Both bundles replicate the official DSH client-bundle preset * (packages/client/tsdown.client.ts) and are compiled from the same * src/client/index.tsx source — only the registered id and the output file * name differ, so they cannot drift: * - externals resolve through the loader module table at runtime (the * PLATFORM_MODULES seed list from apps/web's platform.ts, plus the * runtime/client exemption), * - everything else is inlined into the bundle (xterm, clsx, ...), * - the purity gate rejects any other @deepseek-ai value import: cross-plugin * collaboration goes through cordis services, never value imports, * - CSS Modules compile to hashed class maps and inject