Caller-side bridge from Codex and other agent frameworks to DeepSeek Harness, with observable sessions, follow-up, cancellation, and human-gated approvals.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
tools
-
dsh_answer_question
typed answer for a pending question rpcId
-
dsh_cancel
scope="turn"
-
dsh_continue
compatibility alias for dsh_followup
-
dsh_delegate
create a root session and queue the initial prompt; detached by default (waitSeconds=0)
-
dsh_followup
continue the same root session with explicit mode="queue"
-
dsh_host_status
connect-only Host state and capabilities
-
dsh_list
task mappings enriched with current derived status
-
dsh_observe
compatibility alias around dsh_wait; bridge cursors replace raw session seq cursors
-
dsh_release_workspace
explicitly release a persistent bridge workspace claim without closing the DSH session
-
dsh_resolve_approval
typed allow_once
-
dsh_status
availability, execution, lineage, queue, pending interactions, final message, and cursors
-
dsh_tail
bounded event digests using a bridge task cursor
-
dsh_wait
wait up to 30 seconds for a new event/state/pending/terminal change
analyzed commit 32c963a · analyzer v32 · 2h ago
skills & prompt files 1
code files: 27
filesystem 15
- fs hootandy321-dsh-Agentlink-32c963a/src/bridge-service.ts :1
import { realpath, stat } from "node:fs/promises"; - fs hootandy321-dsh-Agentlink-32c963a/src/event-ledger.ts :1
import { appendFile, chmod, mkdir, readFile } from "node:fs/promises"; - fs hootandy321-dsh-Agentlink-32c963a/src/file-lock.ts :2
import { mkdir, readFile, rename, rm, stat, writeFile } from "node:fs/promises"; - fs hootandy321-dsh-Agentlink-32c963a/src/setup-codex.ts :4
import { constants as fsConstants } from "node:fs"; - fs hootandy321-dsh-Agentlink-32c963a/src/task-store.ts :2
import { chmod, link, mkdir, readFile, readdir, unlink, writeFile } from "node:fs/promises"; - fs hootandy321-dsh-Agentlink-32c963a/src/workspace-claim.ts :1
import { chmod, mkdir, readFile, readdir, unlink, writeFile } from "node:fs/promises"; - fs (weak) hootandy321-dsh-Agentlink-32c963a/test/bridge-service.test.ts :2
import { mkdtemp, readFile, realpath, rm } from "node:fs/promises"; - fs (weak) hootandy321-dsh-Agentlink-32c963a/test/connection-manager.test.ts :2
import { mkdtemp, rm } from "node:fs/promises"; - fs (weak) hootandy321-dsh-Agentlink-32c963a/test/docs-security.test.ts :2
import { readFile } from "node:fs/promises"; - fs (weak) hootandy321-dsh-Agentlink-32c963a/test/event-ledger.test.ts :3
import { mkdtemp, readFile, rm } from "node:fs/promises"; - fs (weak) hootandy321-dsh-Agentlink-32c963a/test/mcp-server.test.ts :2
import { mkdtemp, rm } from "node:fs/promises"; - fs (weak) hootandy321-dsh-Agentlink-32c963a/test/process-reconnect.test.ts :2
import { mkdtemp, rm } from "node:fs/promises"; - fs (weak) hootandy321-dsh-Agentlink-32c963a/test/setup-codex.test.ts :2
import { chmod, mkdtemp, readFile, rm, stat, symlink, writeFile } from "node:fs/promises"; - fs (weak) hootandy321-dsh-Agentlink-32c963a/test/task-store.test.ts :2
import { mkdtemp, readFile, rm, stat, writeFile, mkdir } from "node:fs/promises"; - fs (weak) hootandy321-dsh-Agentlink-32c963a/test/workspace-claim.test.ts :2
import { mkdir, mkdtemp, readFile, rm, stat, writeFile } from "node:fs/promises";
shell / exec 2
- shell hootandy321-dsh-Agentlink-32c963a/src/doctor.ts :3
import { execFile } from "node:child_process"; - shell (weak) hootandy321-dsh-Agentlink-32c963a/test/event-ledger.test.ts :2
import { spawn } from "node:child_process";
network 1
- net (weak) hootandy321-dsh-Agentlink-32c963a/test/support/mock-dsh-host.ts :1
import { createServer, type IncomingMessage, type Server, type ServerResponse } from "node:http";
install hooks 1
- prepack hootandy321-dsh-Agentlink-32c963a/package.json :50
npm run check
declared dependencies 7
- @modelcontextprotocol/sdk@^1.17.5
- zod@^3.25.76
- @types/node@^24.0.0
- @types/ws@^8.18.1
- tsx@^4.20.3
- typescript@^5.8.3
- ws@^8.18.3