docs(heicode): finalize client integration doc for gap-analysis closure

- Add 2026-06-02 changelog summarizing P0/P1 closure at the top.
- New error codes: ARTIFACT_ARCHIVE_NOT_READY/_FAILED, FILE_PATH_REQUIRED,
  with retryable column and the unified error envelope note.
- §9 auth bullet now reflects encrypted-body writes + no-body signed GET.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-02 12:04:54 +08:00
co-authored by Claude Opus 4.8
parent 856c184421
commit fd4ea0335b
@@ -7,6 +7,15 @@ Manager 生产地址:`https://code.xinghanlab.com`
> 本文取代旧的 `heicode-desktop-sub-agile-api.md`(其 `/api/agnet/*` 路由已废弃)。新客户端一律使用本文的 `/api/heicode/*` 与 `/api/agent/*` 接口。
> **2026-06-02 更新(已对照客户端 gap-analysis 闭环 P0/P1 并在运行时实跑验证)**:
> - GET 全程无 cookie 的「无 body 设备签名」(§1,P0-1);
> - 审批列表 `GET .../approvals?status=`(§3.2,P0-2);
> - 产物列表归一化 `display_artifact_type=project_folder` + `is_project`(§5,P0-3);
> - `/archive` 下载契约(zip 头 + `ARTIFACT_ARCHIVE_NOT_READY`,§5,P0-4);
> - 单文件改 `?path=` 编码(§5,P1-1);
> - revision `accepted`/`applied` 语义 + `/messages`·`/execute` 自动用最新 accepted(§6,P1-2/P1-3);
> - Swarm 全量同形显式声明(§3,P1-4)。
## 0. 命名与总原则
- **命名统一**:`agnet` 是历史拼写错误,已全量改为 `agent`。所有新接口为 `/api/agent/*`、`/api/heicode/*`;旧 `/api/agnet/*` 已下线(404)。
@@ -344,15 +353,18 @@ Schema 查询:`GET /api/agent/callbacks/runtime-events/schema`。
- 生产包禁用 mock 任务/审批/产物。
- 只消费 Manager 的 `display_status` / manifest / diagnostics。
- 普通用户文案不出现 `newapi`、上游厂商、模型网关字眼。
- 任务接口认证用 deviceToken / Manager session;base_url 来自 preset。
- 任务接口认证:写请求用 V2 加密 body + 设备签名,GET 用 V2 无 body 设备签名(见 §1),均复用模型调用同一套实现;base_url 来自 preset。
## 10. 错误码(新增)
| code | 场景 |
|---|---|
| `ARTIFACT_REVISION_CONFLICT` | 本地修改基于旧版本 |
| `RESOURCE_BINDING_INVALID` | resource_binding_id 不存在或非本人 |
| `DEPLOY_TARGET_DISABLED` | 云目标未启用 |
| `FILE_NOT_FOUND` | 项目文件不存在 |
| code | 场景 | retryable |
|---|---|---|
| `ARTIFACT_REVISION_CONFLICT` | 本地修改基于旧版本(`data.current_project_revision` 给出最新版本) | false |
| `ARTIFACT_ARCHIVE_NOT_READY` | zip 产物尚未就绪(无文件),稍后重试 | true |
| `ARTIFACT_ARCHIVE_FAILED` | 打包失败 | false |
| `RESOURCE_BINDING_INVALID` | resource_binding_id 不存在或非本人 | false |
| `DEPLOY_TARGET_DISABLED` | 云目标未启用 | false |
| `FILE_NOT_FOUND` | 项目文件不存在 | false |
| `FILE_PATH_REQUIRED` | 取单文件未带 `?path=` | false |
其余错误码沿用旧文档 §13。
其余错误码沿用旧文档 §13。所有错误统一形如 `{"success":false,"error":{"code","message","retryable"}}`,可读 `error.retryable` 决定是否重试。