Adapter Layer
August 15, 2026 · View on GitHub
中文 | English
Adapter Layer
This layer owns protocol, transport, external-provider, and host-facing adapter crates. Adapters translate between product/runtime contracts and concrete protocols; they should not become owners of product policy or reusable OS services.
Modules
| Crate | Responsibility | Local doc |
|---|---|---|
agent-runtime-ipc | Non-published private local IPC adapter for the opt-in first-party Shared TUI Runtime; closed interactive operations only | AGENTS.md |
ai-adapters | AI provider request/response adapters and stream protocol glue | AGENTS.md |
opencode-adapter | OpenCode source semantics for user Instructions plus the live Command, standalone Tool, Subagent, MCP, and static Hook providers; managed-package static preview | AGENTS.md |
dsh-adapter | DeepSeek Harness (dsh) bundle/profile source projection for managed packages; static preview only | AGENTS.md |
claude-code-adapter | Runtime-free Claude Code user Instructions, Command, Subagent, MCP, and Hook source semantics with redacted projection | AGENTS.md |
codex-adapter | Runtime-free Codex user Instructions, Subagent, MCP, and Hook source semantics with redacted projection | AGENTS.md |
static-hook-support | Shared bounded/redacting static-source utilities plus the JSON/TOML Hook parser used by sibling ecosystem adapters; no ecosystem policy or runtime | inherited |
transport | Event transport adapters plus protocol-neutral bounded JSON encoding and TypeScript message/JSON-RPC mechanics shared by current hosts | AGENTS.md |
webdriver | Embedded WebDriver protocol and browser automation adapter | AGENTS.md |
Placement Rules
- Put protocol serialization, transport projection, external provider request shaping, and host communication adapters here.
- Keep OS, filesystem, terminal, MCP, remote, git, and watch implementations in
servicesunless the code is purely protocol translation. - Keep delivery-profile selection and adapter registration in
assembly. - Do not create a shared API crate for a single host or a future protocol. A non-published pre-integration seam may remain crate-internal only when the adjacent design names its first consumer, stable test contract, integration check, and removal condition. Promote only the API used by that consumer.
Dependency Boundaries
- Adapters may depend on
contracts,execution, and narrowly onserviceswhen an adapter must expose a service capability through a protocol. - Adapters must not depend on
assembly/core, product UI code, app command handlers, or Tauri APIs unless the crate is explicitly feature-gated for that host boundary. - Prefer stable contracts over adapter-to-adapter coupling. Cross-adapter dependencies require a clear boundary reason.