peiyuwang54/deepseek-harness-cli--packages-client-hmr ↗★ 62

@deepseek-ai/dsh-client-hmr

Dev-only hot-reload driver for script-loaded client entries: SSE rebuilt frames → invalidate/prefetch → fiber swap through the vendored Loader entry 适合开发调试客户端插件时使用,需配合重建监听进程,否则保持空闲。

Package
@deepseek-ai/dsh-client-hmr
Compatibility
Unverified
Harness peer range
workspace:^
Cordis peer range
workspace:^
Version
0.1.0-rc.14
License
MIT
Last updated
Sep 13, 2026

Other repositories with this package name

Install

This plugin has no verified bundle, or compatibility checks failed. Read the repository notes first. Read the full README ↗

@deepseek-ai/dsh-client-hmr

English | 中文

Hot reload for script-loaded client plugins. The web bundle mounts the row unconditionally; without a rebuild watcher (pnpm run dev:web) rewriting client bundles, the poll observes no changes and the chain stays idle.

The browser half subscribes to the system SSE channel (GET /plugins/events) and reloads one plugin per rebuilt frame through a serialized queue. The sequence per frame — invalidate, prefetch (load and register the new bundle while the old fiber still serves), registry.delete (before the fiber: a bare fiber dispose trips the vendored Loader's self-dispose branch, which would mark the entry disabled), drain the old fiber, delete entry.fiber, remove owned `` tags, entry.refresh() re-imports and remounts, fiber.await() rethrows startup failures loud. Dependents reload through cordis itself: a fiber's activation epoch strings its service providers' uids, so replacing a provider's fiber cascades every dependent with zero client-side graph analysis. The node half detects rebuilds with one interval that stat-polls each graph bundle from a synchronous baseline, immediately re-hashes after adding a row, retains missing rows as dirty, and broadcasts only real rev changes; any tsdown watch process producing the bundle therefore triggers HMR with no builder→host channel.

Model Experience

None, as the reload driver is browser-side machinery; nothing here reaches a model request.

KV Cache effect

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

Known Limitations and Deferred Work

  • Reload is coarse by design — a fresh fiber and fresh components; React state inside the reloaded plugin is lost while the data layer (connection/runtime fibers, Session objects) is untouched. react-refresh-grade state preservation conflicts with "re-executing the bundle re-runs the factory" and is deliberately out.
  • No failure rollback — a reload that fails leaves the entry FAILED and visible in the loader status projection; the previous bundle is not restored automatically.
  • Graph rev is not refreshed by rebuilt frames — the stale rev is harmless because the bundle endpoint serves no-cache; only reconnect refreshes it.