feat(agent): listAgents 契约零 controller —— 新建的 agent 建完之后在 HTTP 层读不回来
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 0
- Avg merge
- 1h 7m
- Merged PRs (30d)
- 969
Description
## 发现经过
在 #617(补 `POST /agents` 真实 HTTP 路径)的实现与实测中确认:`GET /agents`(`listAgents` 契约操作)**同样零 controller 挂载**——用真实 HTTP curl 实测过,404。
## 影响面
- #617 落地后,新建 agent 能通过真实 HTTP 写入 `agents` 表(DB 可见),但**没有任何 HTTP 读路径能把它读回来**——不是「UI 没画」,是契约操作本身没有 controller。
- 直接挡住 #617 里「clone 已有 agent」这个 UI 分支:clone 前必须能列出可选源 agent,而列表本身不可达,所以 #617 的实现里这块 UI 特意跳过了(说明见 PR #647)。
- 可能是 #595(后台管理面)「目录浏览」能力缺失的具体病灶之一,但范围比 #595 窄很多——这里只是最基础的「建完能不能读回来」,不涉及导入/编辑/测试。
## 要求
1. 确认 `packages/contracts/src/agent-runtime.ts` 里 `listAgents` 契约的确切形状(分页/过滤参数)。
2. 补 `GET /agents` controller,复用已签契约,不新造契约。
3. 补完后 #617 里被跳过的 clone-picker UI 可以补上(不强制在本 issue 内做,视范围决定是否拆开)。
## 相关
- 由 #617 的实测过程发现,PR #647 是 #617 的实现(未合并时归档本 issue)。
- 与 #595(后台管理面 P0)方向一致但范围更窄,两者谁先做不冲突。
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reading packages/contracts/src/agent-runtime.ts to confirm the listAgents contract, including its pagination and filtering parameters. Trace the existing POST /agents path and PR #647 for the controller conventions, then add the GET /agents path using the existing contract. Done means a real HTTP request can list newly created agents with the contract-defined shape; the clone-picker UI is optional and may be split out.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100