dsh integration: config dsh + skills sync --agent dsh #141
Reference in New Issue
Block a user
Delete Branch "feat/dsh-integration"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
dsh (the DeepSeek harness) joins claude, pi, prime-agent and opencode as a first-class host, with the same shape of integration each of them got.
What
mcpctl config dsh --project Xdoes@deepseek-ai/dsh-mcp-cliententry (idmcp-mcpctl, mount namemcpctl, bridgemcpctl mcp -p X) into the profile's user patch layer (~/.dsh/profiles/<profile>/cordis.patch.yml,--profiledefaults toweb). The stdio bridge keeps auth in~/.mcpctl/credentials, exactly like the Claude integration — the patch file is 0644 and commonly committed to dotfiles, so the HTTP mount's bearer header is not an option there. Tools surface asmcp__mcpctl__<tool>.yamlDocument API (new dep on the cli package; already used by mcplocal). dsh appends runtime UI state to the same file and bundles/users own the rest, so every other entry, comment and blank line survives byte-for-byte; a corrupt or non-array file aborts instead of being overwritten. Re-runs re-point the bridge args in place and keep user-added keys (env:etc); a same-mount entry under another id is adopted; a hand-configured server with its ownserverNameis never touched..mcpctl-projectwith the prime-agent semantics (explicit-pis authoritative, never from$HOME,--skip-markeropts out) and syncs skills into~/.dsh/skills— the user rootdsh-skill-filesystemscans AND watches, so synced skills appear without a restart.dshbecomes askills sync --agenttarget with the shared-tree semantics, state in~/.mcpctl/skills-state-dsh.json.Verification
tests/config/dsh-patch.test.ts(create/merge/re-point/adopt/refuse/preserve-comments); cli suite green; completions regenerated (their freshness test covers the new subcommand).webprofile boots, spawnsmcpctl mcp -p sreas its child within a second, and serves with the mount active; the patch file's comments and dsh's own appended entries survived repeated re-runs. Note the first MCP connect can delay dsh's startup banner noticeably (dsh-mcp-client's documented behaviour).docs/dsh-integration.md+ a README "Connect dsh" section beside the other hosts.Pre-existing failure, not touched
tests/commands/prime-agent.test.ts > does not write a .mcpctl-project marker when run from $HOMEfails on main too on this machine and leaks a real~/.mcpctl-project(proj-x) — a test-isolation issue worth its own fix.🤖 Generated with Claude Code
https://claude.ai/code/session_01V6HNx6cyr4J4CiMGCy1wkF
dsh (the DeepSeek harness) joins claude, pi, prime-agent and opencode as a first-class host. `mcpctl config dsh --project X`: - merges ONE dsh-mcp-client entry (id mcp-mcpctl, mount name mcpctl, stdio bridge `mcpctl mcp -p X`) into the profile's user patch layer (~/.dsh/profiles/<profile>/cordis.patch.yml). The stdio bridge keeps auth in ~/.mcpctl/credentials — the patch file is 0644 and commonly committed to dotfiles, so the HTTP mount's bearer header is not an option there. - edits with the comment-preserving `yaml` Document API and touches only its own entry: dsh appends runtime UI state to the same file, bundles and users own the rest, and a corrupt or non-array file aborts instead of being overwritten. Re-runs re-point the bridge args in place and keep user-added keys; a same-mount entry under another id is adopted, a hand-configured server with its own serverName is never touched. - writes the .mcpctl-project marker with the prime-agent semantics and syncs skills into ~/.dsh/skills — the user root dsh-skill-filesystem scans AND watches, so synced skills appear without a restart. `dsh` becomes a skills sync target with the shared-tree semantics, state in ~/.mcpctl/skills-state-dsh.json. Verified against dsh 0.2.0-rc.2: the web profile boots, spawns the bridge as its child within a second, and serves with the mount active; patch-file comments and dsh's own appended entries survive re-runs. Completions regenerated for the new subcommand. Note: tests/commands/prime-agent.test.ts ("does not write a marker when run from $HOME") fails on main too on this machine and leaks a real ~/.mcpctl-project — pre-existing test-isolation issue, untouched here. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V6HNx6cyr4J4CiMGCy1wkF5f6d054ffato2ed6d38784