# Internal Reference

本文档记录 `xworkmate-bridge` 当前内部模块边界，只覆盖当前保留的 control-plane 主链。

## 1. 总体分层

当前内部结构分为五层：

1. `bridge_contract`
2. `capability_catalog`
3. `routing_engine`
4. `session_orchestrator`
5. `provider_compat` / `gateway compat`

核心原则：

- bridge core 不再承担 reverse proxy public surface
- bridge core 不再承担 multi-agent 业务分叉
- stdio / process / framing / restart 细节下沉到 adapter runtime

## 2. `internal/acp`

### 包职责

APP-facing ACP control plane。

负责：

- `/acp` App-facing WebSocket JSON-RPC 主入口
- `/acp/rpc` HTTP JSON-RPC fallback / CI / 调试 / OpenClaw task submit 入口
- JSON-RPC / hybrid envelope
- `acp.capabilities`
- `xworkmate.routing.resolve`
- `session.*`
- `xworkmate.gateway.*`

### 关键类型

- `type Server struct`
  - bridge 聚合根
  - 持有 `routingEngine`、`providers`、`catalog`、`orchestrator`、`gateway`

- `type ProviderCompat interface`
  - bridge 依赖的唯一 provider 接口
  - 方法：
    - `ID()`
    - `Metadata()`
    - `Probe(ctx)`
    - `StartSession(...)`
    - `SendMessage(...)`
    - `CancelSession(...)`
    - `CloseSession(...)`

- `type RoutingResult struct`
  - routing 输出 contract
  - 包括：
    - `TargetID`
    - `ProviderID`
    - `GatewayProviderID`
    - `Model`
    - `Skills`
    - `Status`
    - `UnavailableCode`
    - `UnavailableMsg`

- `type CapabilityCatalog struct`
  - bridge-owned capabilities 真源
  - 包括：
    - `ProviderCatalog`
    - `GatewayProviders`
    - `AvailableExecutionTargets`
    - `ProviderProbeSummary`

### 关键主链

- `func NewServer() *Server`
  - 初始化 routing engine、catalog、providers、orchestrator、gateway manager

- `func (s *Server) Handler() http.Handler`
  - 只挂载：
    - `/`
    - `/api/ping`
    - `/acp`
    - `/acp/rpc`

- `func (s *Server) handleRequest(...)`
  - 统一分派：
    - `acp.capabilities`
    - `session.*`
    - `xworkmate.routing.resolve`
    - `xworkmate.gateway.*`

- `func (o *SessionOrchestrator) Process(...)`
  - bridge session 主语义入口
  - 流程：
    - resolve routing
    - get/create session state
    - dispatch to gateway or provider compat
    - normalize result
    - emit `session.update`
    - record project memory only when routing mode is explicitly auto

### 当前删除或收紧的旧路径

以下逻辑不属于当前 APP-facing contract：

- `/acp-server/*`
- `/gateway/openclaw`
- multi-agent 执行路径
- provider-specific alias handler

OpenClaw task submit 使用 `/acp/rpc` 和 routing metadata，不再保留独立 app-facing handler。

## 3. `provider_compat`

bridge 当前通过 compat 层吸收 provider 差异：

- `codex compat`
- `opencode compat`
- `gemini compat`
- `hermes compat`

这些 compat 共享同一套 external ACP 调用基座，但对 bridge core 暴露统一接口。

### compat 负责什么

- 调上游 ACP HTTP / WS
- 解析 JSON-RPC result / error
- 转换 upstream notification
- 吸收 provider transport 差异

### compat 不负责什么

- catalog ownership
- routing ownership
- session state ownership
- app-facing contract 设计

## 4. `routing_engine`

当前 routing 只围绕 bridge 核心能力做决策：

- `single-agent`
- `gateway`

不再升级到 multi-agent。

输入来源：

- prompt
- workingDirectory
- explicit routing
- preferred gateway provider
- available bridge providers
- available skills
- memory preferences

输出由 bridge 统一整形成 `RoutingResult`。

## 5. `gatewayruntime`

`internal/gatewayruntime` 仍负责 openclaw runtime 的连接态、请求配对、快照与 push event。

这个包是 gateway runtime 层，不是 public API 层。

bridge 只通过 `xworkmate.gateway.*` 把它暴露为 control-plane contract。

## 6. `internal/router`

任务：

- normalize routing intent
- resolve execution target
- resolve provider
- resolve gateway provider
- resolve skills
- shape unavailable reason

当前只产出：

- `single-agent`
- `gateway`

## 7. `internal/shared`

保留的 bridge_contract 基础能力：

- JSON-RPC request decode
- hybrid result/error envelope
- notification envelope
- CORS / origin helper
- shared HTTP / WS helper

这里是 envelope 与共用 transport helper，不承载 provider-specific 控制逻辑。
