AGENTS.md@src/host/api · git:20260928.0bc633c · 2026-09-28 · sha256 4315338b6d284be0

AGENTS.md@src/host/api git:20260928.0bc633cA

Immutable. This exact content never changes and is served at /api/v1/blob/4315338b6d284be0.

# API Boundary Module Rules

## 范围与职责

适用于 `src/host/api/`。

把 GUI 的 HTTP 请求翻译成对 Host 领域能力的调用,并把结果与失败翻译回稳定的对外响应契约(端点名、响应包形状、错误码、HTTP 状态)。

判断归属:该改动是否改变「请求如何被翻译成领域调用」或「对外响应契约」?只改变领域语义判断(合法性、状态机推进、冲突策略、持久化形状)应放到对应领域模块。

## 契约

- 端点名以共享协议常量为唯一来源;新增端点必须同时进入共享常量与白名单,两者零漂移;
- 未知端点 404、参数缺失 400;调用方错误不得被响应成 500;
- 领域模块只抛稳定错误码,HTTP 状态映射只发生在边界;领域模块不得引用传输层错误类型;
- 响应包形状、错误码语义与端点名属对外契约,变更必须同步客户端、协议常量与测试。

## 状态与副作用

- 本层不持有业务状态:不缓存领域数据、不自建持久化、不保存跨请求可变的实例字段;
- 领域能力只经宿主能力缝注入;能力缺失必须给出明确错误或降级响应,不得静默失效;
- 流式端点必须绑定请求中止信号,在请求结束或断连时释放上游资源;
- 副作用(落盘、子进程、网络调用)必须经对应领域模块的入口,不得在端点或辅助函数中直接实施。

## 依赖边界

- 端点组之间不得互相依赖——新增端点组只登记到汇聚清单;
- 跨模块协作只经能力缝、命令、事件或服务;不得直接修改其他模块的内部状态。

## 核心原则

薄边界、单向依赖、契约稳定、无状态、错误可翻译。