Agentic AI Atlasby a5c.ai
OverviewWikiGraphFor AgentsEdgesSearchWorkspace
/
GitHubDocsDiscord
i.4Wiki
Agentic AI Atlas · Adapter Architecture — Graph vs Packages Deep Dive
docs/v6-spec-and-roadmap/v6-1/mux-architecture-gapsa5c.ai
Search the atlas/
Wiki · linked records

Article and nearby pages

I.Current articlepp. 1 - 1
Agent Layer Capabilities — What agent-core, agent-runtime, and agent-platform Should Actually DoAgent Stack Decomposition — agent-platform, agent-core, SDK, and adaptersGap Inventory — Graph vs ImplementationGraph Alignment Tasks — Make the Repo Match the GraphNaming Alignment — Graph Concepts vs Package NamesStack Layer Map — Atlas Graph to Package Mapping
I.
Wiki article

docs/v6-spec-and-roadmap/v6-1/mux-architecture-gaps

Reading · 8 min

Adapter Architecture — Graph vs Packages Deep Dive reference

The Atlas graph defines 9 canonical muxes as the bridging abstractions of the a5c agent stack. Each adapter normalizes one concern across all supported agent products. This document maps each graph adapter to its implementing package(s) and identifies concrete gaps.

Page nodewiki/docs/v6-spec-and-roadmap/v6.1/mux-architecture-gaps.mdNearby pages · 7Documents · 0

Continue reading

Nearby pages in the same section.

Agent Layer Capabilities — What agent-core, agent-runtime, and agent-platform Should Actually DoAgent Stack Decomposition — agent-platform, agent-core, SDK, and adaptersGap Inventory — Graph vs ImplementationGraph Alignment Tasks — Make the Repo Match the GraphNaming Alignment — Graph Concepts vs Package NamesStack Layer Map — Atlas Graph to Package Mappingv6.1 Priorities — Actionable Work Items

Adapter Architecture — Graph vs Packages Deep Dive

The Atlas graph defines **9 canonical muxes** as the bridging abstractions of the a5c agent stack. Each adapter normalizes one concern across all supported agent products. This document maps each graph adapter to its implementing package(s) and identifies concrete gaps.

The 9 Canonical Muxes (from `extensions/muxes/canonical-muxes.yaml`)

Graph AdapterProtocol TypeCanonical SidePackage(s)
agent-launch-adapterspawnInvocationOptions → SpawnArgs → lifecycleadapters-cli (launch.ts)
agent-comm-adapterevent-streamHarness-specific events → canonical shapeagent-comm-adapter (client.ts)
agent-config-adapterconfigPer-agent config/auth/install → unified opsadapters-cli (install.ts), adapters-adapters
hooks-adapterlifecycle-hookNative hook names → canonical taxonomyhooks-adapter-cli, hooks-adapter-core, hooks-adapter-adapter-*
transport-adapterinferenceWire protocols → canonical request/responsetransport-adapter
extensions-adapterpluginPortable Extension → per-agent native formatsextensions-adapter
session-storage-adapterstorageSession files at restbabysitter-sdk (session module)
tasks-adapterapprovalTrust chain for breakpoint answerstasks-adapter
tools-adaptertool-dispatchTool calls across MCP, CLI, hooksNo dedicated package

---

Adapter-to-Package Detailed Mapping

1. agent-launch-adapter → `adapters-cli/src/commands/launch.ts`

**Graph description:** Spawns and supervises Invocations across all supported agent products. Owns the 9-state Invocation lifecycle (spawned → running → paused → interrupted → aborted | timed-out | completed | crashed | killed).

**Bridging concerns (from graph):**

  • spawn args per agent (positional prompt vs --prompt, model flag formats)
  • env-var conventions per agent (ANTHROPIC_API_KEY vs OPENAI_API_KEY)
  • working-directory mapping
  • subprocess management (Unix pgroups vs Windows Job Objects)
  • signal propagation
  • retry policy and lifecycle hooks
  • min-version enforcement (semver gate)
  • execution-mode dispatch (local / docker / ssh / k8s / cloud)

**Implementation reality:**

  • launch.ts is ~1600 lines handling spawn, proxy, PTY, bridge modes
  • Adapter-specific args come from agent-catalog graph data (getYoloLaunchArgs, getLaunchConfig)
  • Subprocess management: Unix pgroups ✅, Windows Job Objects ❌ (uses taskkill)
  • Signal propagation: basic SIGTERM/SIGKILL ✅, SSH/docker/k8s ❌
  • Retry policy: not implemented
  • Min-version enforcement: not implemented
  • Execution-mode dispatch: local only, no docker/ssh/k8s

**Gaps:**

IDSeverityGap
M-LAUNCH-01S2No 9-state lifecycle — only spawned/running/completed/crashed
M-LAUNCH-02S2No retry policy — process crash = immediate failure
M-LAUNCH-03S4No remote execution modes (docker, ssh, k8s)
M-LAUNCH-04S2Windows subprocess management uses taskkill instead of Job Objects
M-LAUNCH-05S3No semver min-version gate — any installed version is accepted

---

2. agent-comm-adapter → `agent-comm-adapter/src/client.ts`

**Graph description:** Bridges every in-flight event shape. Channels are absorbed here because the underlying primitive is a structured communication channel between two participants.

**Implementation reality:**

  • AgentMuxClient in agent-comm-adapter handles event streaming
  • Events are normalized to a common shape across harnesses
  • Session-flow projections in adapters-ui consume these events

**Gaps:**

IDSeverityGap
M-COMM-01S3Graph defines "Channel" concept; code uses "event stream" — no first-class Channel abstraction
M-COMM-02S2Event schema not formalized — each adapter emits slightly different shapes

---

3. agent-config-adapter → `adapters-cli` + `adapters-adapters`

**Graph description:** Wraps each agent's idiosyncratic config/auth/install conventions into one set of operations callable from orchestrator or user.

**Implementation reality:**

  • install.ts handles install/uninstall/update/detect per adapter
  • Each adapter in adapters-adapters defines install methods, config paths
  • agent-catalog provides install metadata from the graph

**Gaps:**

IDSeverityGap
M-CONFIG-01S2Install error reporting is opaque — installed: false with no error details (#207)
M-CONFIG-02S2Windows shell spawn issue — spawn('npm') needs shell: true (fixed)
M-CONFIG-03S3No unified auth verification — each adapter has its own auth check

---

4. hooks-adapter → `hooks-adapter-cli` + `hooks-adapter-core` + `hooks-adapter-adapter-*`

**Graph description:** Bridges per-product native hook names to the canonical hook taxonomy + applies per-axis merge policies.

**Implementation reality:**

  • hooks-adapter-core: canonical hook taxonomy, merge policies
  • hooks-adapter-cli: CLI binary (a5c-hooks-adapter invoke)
  • 10 adapter packages: claude, codex, gemini, copilot, cursor, pi, oh-my-pi, opencode, openclaw, hermes

**Gaps:**

IDSeverityGap
M-HOOKS-01S2Version hash inconsistency — adapters published with different SHA lengths
M-HOOKS-02S2Hook script path resolution — .codex/hooks/ vs ./hooks/ (fixed)
M-HOOKS-03S2npx install failures block hooks in CI — binary must be on PATH
M-HOOKS-04S3Channel concept from graph not reflected in hook API

---

5. transport-adapter → `transport-adapter`

**Graph description:** Bridges between concrete LLM wire protocols and one canonical inference request/response shape. Adding a new native impl is a Catalog edit.

**Implementation reality:**

  • HTTP proxy translating between exposed transport (what harness speaks) and target transport (what provider expects)
  • Supports: OpenAI Chat, OpenAI Responses, Anthropic, Google, Bedrock
  • Codec architecture planned but incomplete

**Gaps:**

IDSeverityGap
M-TRANSPORT-01S2Codec refactor incomplete — tool schema translation not implemented
M-TRANSPORT-02S2Codex websocket bypass (#200) — WS connections don't go through proxy
M-TRANSPORT-03S2Cost/token normalization not end-to-end
M-TRANSPORT-04S3No streaming codec — SSE/NDJSON translation is ad-hoc

---

6. extensions-adapter → `extensions-adapter`

**Graph description:** Compiles one Portable Extension manifest into per-agent native formats via per-target generators.

**Implementation reality:**

  • Mature compiler: plugin.json → 10 target formats (claude-code, codex, gemini, etc.)
  • Handles hooks, skills, commands, agents, settings per target
  • sharedSets for per-harness overrides

**Gaps:**

IDSeverityGap
M-EXTENSION-01S3Graph uses "extensions-adapter"; package is "extensions-adapter" — naming mismatch
M-EXTENSION-02S3"Portable Extension" concept exists in graph but API is "plugin manifest" in code

---

7. session-storage-adapter → `babysitter-sdk` (session module)

**Graph description:** Unified abstraction for reading and writing session files at rest.

**Implementation reality:**

  • packages/babysitter-sdk/src/session/ handles init, associate, resume, update, state
  • YAML frontmatter session state management
  • Tied to .a5c/ state directory

**Gaps:**

IDSeverityGap
M-SESSION-01S2No session storage backend abstraction — filesystem only
M-SESSION-02S2Session resume writes to wrong path (#138)
M-SESSION-03S3Graph concept is "adapter" (multiple backends); implementation is single-backend

---

8. tasks-adapter → `tasks-adapter`

**Graph description:** The lone live Trust Chain primitive — ProvenBreakpointAnswer signs decision answers with the named Authority of the responder. Bridges every backend (Linear, GitHub, Slack, etc.)

**Implementation reality:**

  • tasks-adapter: pluggable backends, cryptographic signing
  • Server-backed breakpoint routing
  • MCP integration for remote approval

**Gaps:**

IDSeverityGap
M-TASKS-01S3Graph name "tasks-adapter" ≠ package name "tasks-adapter"
M-TASKS-02S4Linear, Slack backends mentioned in graph — not implemented

---

9. tools-adapter → **No dedicated package**

**Graph description:** CLI→MCP gateway, CLI→MCP gateway, and tool-level hooks layered on hooks-adapter PreToolUse / PostToolUse.

**Implementation reality:**

  • Tool dispatch is embedded in agent-comm-adapter and agent-platform
  • MCP tool serving is in babysitter-sdk (mcp module)
  • No unified tools-adapter abstraction

**Gaps:**

IDSeverityGap
M-TOOL-01S2No dedicated package — tool dispatch scattered across 3 packages
M-TOOL-02S2No tool schema translation (MCP ↔ OpenAI function calling ↔ Anthropic tools)
M-TOOL-03S3Tool routing policies (which tool server for which tool) are implicit

---

Agent Stack Implementation Layers (L4-L6)

agent-core vs agent-comm-adapter vs agent-platform

The graph defines three implementation node kinds for the agent stack:

Node KindLayerPackageRole
AgentCoreImplL4agent-coreUnified agent loop (babysitter-native)
AgentRuntimeImplL5agent-platformHost process, CLI, seam contracts
AgentPlatformImplL6extensions-adapter + agent-catalogExtensions, distribution, ecosystem

But agent-comm-adapter also implements L4-L5 concerns (event dispatch, session management, adapter registry) without being an "AgentCoreImpl" in the graph.

**Gap:** agent-comm-adapter is the de facto agent core for harness-mediated scenarios but isn't represented as an AgentCoreImpl in the graph. The graph has agent:adapters as an AgentProduct but its internal decomposition (core/cli/adapters/gateway/tui/ui) isn't modeled.

Package Decomposition vs Graph Model

adapters PackageGraph AdapterGraph LayerNotes
agent-comm-adapteragent-comm-adapterL4-L5Event streaming, client, types
adapters-cliagent-launch-adapter + agent-config-adapterL5-L10Launch, install, detect
adapters-adapters(part of agent-config-adapter)L5Per-harness adapters
adapters-gateway(no direct adapter)L6Remote API surface
adapters-tui(no direct adapter)L11TUI presentation
adapters-ui(no direct adapter)L11Shared UI
adapters-webui(no direct adapter)L11Web presentation
adapters-observability(no direct adapter)Cross-cuttingLogging, telemetry

**Gap:** 4 of 7 adapters packages have no corresponding adapter in the graph. They implement presentation (L11) and observability concerns that the adapter model doesn't cover.

---

Summary of Critical Gaps

PriorityGapImpact
P0tools-adapter has no package (M-TOOL-01)Tool dispatch is fragmented
P1agent-launch-adapter lifecycle is 2-state not 9-state (M-LAUNCH-01)No pause/resume/retry for agent invocations
P1transport-adapter codec incomplete (M-TRANSPORT-01)Tool schemas dropped, cost tracking missing
P1agent-comm-adapter event schema not formalized (M-COMM-02)Each adapter emits different shapes
P2agent-comm-adapter not represented in graph (decomposition gap)Graph doesn't reflect reality
P2extensions-adapter ≠ extensions-adapter naming (M-EXTENSION-01)Confusing for contributors
P2tasks-adapter ≠ tasks-adapter naming (M-TASKS-01)Confusing for contributors

Trail

Wiki
Babysitter Docs
a5c.ai V6 Spec And Roadmap
v6.1 Specification — Layer-to-Package Gap Analysis

Adapter Architecture — Graph vs Packages Deep Dive

Continue reading

Agent Layer Capabilities — What agent-core, agent-runtime, and agent-platform Should Actually Do
Agent Stack Decomposition — agent-platform, agent-core, SDK, and adapters
Gap Inventory — Graph vs Implementation
Graph Alignment Tasks — Make the Repo Match the Graph
Naming Alignment — Graph Concepts vs Package Names
Stack Layer Map — Atlas Graph to Package Mapping
v6.1 Priorities — Actionable Work Items

Page record

Open node ledger

wiki/docs/v6-spec-and-roadmap/v6.1/mux-architecture-gaps.md

Documents

No documented graph nodes on this page.