v0.2.0
Event-Driven DSH Runtime Bridge
This release converts the DSH Companion from a single-purpose shutdown channel into a versioned runtime bridge and moves the Manager from periodic probing to OS/IPC event-driven state.
Highlights
- Versioned named-pipe protocol (protocolVersion / requestId / messageType / type / payload / error) with
ping,getStatus,getRuntimeInfo, andshutdowncommands andready,stopping,exitingevents. - DSH-internal authoritative state: actual listening port (
webServer), PID, DSH version, profile, and DSH home are reported from inside the DSH process; no fabricated values. - Zero steady-state CPU: for a bridge-connected manager, liveness comes from the Windows process handle and state from named-pipe events. Measured average CPU dropped from 0.103% (0.1.0) to 0.000% on the same machine.
- Fallback discovery retained (WMI / HTTP / port / process fingerprint) for externally launched DSH, old plugins, protocol mismatch, startup, and diagnostics.
- Formal DSH plugin package:
plugins/deepseek-harness-webnow declares adsh.bundle.patch, installable as a regular DSH bundle while the per-launch patch remains the compatibility layer during the DSH API preview. - Legacy compatibility: original
{"action":"shutdown"}envelope still accepted; old DSH processes launched by 0.1.0 remain stoppable. - Security: per-launch 256-bit tokens, timing-safe comparison, no unauthenticated control, no arbitrary command execution, bridge PID/port revalidated against Windows process identity.
Verification
- C# test suite 18/18 (including real DSH graceful shutdown, bridge protocol, adoption)
- Node named-pipe bridge tests
- npm CLI integration tests
- End-to-end smoke: legacy stop, event-driven start (ready in ~6 s), versioned graceful stop
- Performance measured against 0.1.0 on the same machine (see docs/PERFORMANCE.md)