This directory contains all @deepseek-ai/dsh-* harness packages. When editing
code here, follow these conventions:
ctx.effect() / ctx.on(), and
register() methods return disposers. Never use bare arrays or manual cleanup.declare module 'cordis' { interface Context { } } and their events in
interface Events. Merge-extensible maps (ContentBlockMap,
MessageSourceMap, FinishReasonMap, TurnTriggerMap, TurnEndReasonMap,
SessionEventMap) are how plugins add new variants.ctx.waterfall listeners receive (...args, next);
call next() to delegate, or return without it to short-circuit (veto). Never
call next() after returning.packages/<name>/tests/*.spec.ts. Every registry needs an
HMR-safety test (register a plugin, dispose its fiber, assert cleanup). Err on
the side of more tests — edge cases, error paths, event ordering, races.Naming notes:
src/index.ts export the service default + all public typessrc/types.ts contain only types — no runtime codetests/, not src/__tests__/Read the per-package README.md for package-specific details: service API, events, extension points, TODOs.