English | 中文
Bin-only app that boots an external cordis.yml; its jsonrpc entry serves SDK clients over newline-delimited stdio. The config composes the spine, backends, and serving plugin. The published dsh-jsonrpc-agent bin resolves bare plugins from the configuration project. The Python SDK's dsh-jsonrpc-agent-pkg single-executable runtime uses lib/packaged-bin.js instead: packaged bare plugins resolve from its closed runtime tree, while relative plugins remain configuration-relative.
The first non-empty channel wins: $DSH_CORDIS_CONFIG, then positional argv[2]. If neither names an existing file, the bin prints one-line usage to stderr and exits 1; there is no working-directory or built-in fallback. dsh-app-boot makes plugin load failures fatal. This protocol does not use DSH_SNAPSHOT.
A config without dsh-sdk-jsonrpc-server is valid and serves nothing; the bin does not designate a server plugin.
stdin EOF and SIGTERM dispose the root to quiescence and exit 0; SIGINT exits 130 after the same disposal. EOF may cut off an in-flight turn as documented in the distribution Agent Note. The jsonrpc plugin owns response-before-exit protocol shutdown; both paths are idempotent and safe to race.
stdout carries only JSON-RPC frames. The bin and boot guards diagnose on stderr, and the config must omit stdout loggers.
Indirectly, through the plugins loaded from the external cordis.yml, which own every model-bound prompt, schema, message, and result; this bin adds none of its own.
No direct invalidation; the named consumer owns any request-prefix changes.
dsh-sdk-jsonrpc-server entry boots successfully and serves nothing.DSH_CORDIS_CONFIG or a positional path, and deployment owns the complete plugin tree and stdout discipline.shutdown request.