mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat: include agent metadata in workspace list responses (#27934)
Closes #27933. Related: #27897 (single-agent GET). Agent metadata is only readable via a per-agent watch stream, so reading it across N workspaces costs N+1 requests. This adds a batch read to the list endpoint: ```text GET /api/v2/workspaces?q=param:"pool=demo" include_agent_metadata:task_status ``` - New `include_agent_metadata` search key, repeatable and key-scoped. It expands the response, it does not filter workspaces. - `GetWorkspaces` aggregates the requested keys as JSON behind a `CASE`: without opt-in the response is unchanged and the subquery never runs. Runs only for the returned page, inside the same authorized query. - Agents in the response gain `metadata` (`[]codersdk.WorkspaceAgentMetadata`, `omitempty`), mapped by the `workspace_agent_id` each element carries. The collection script is omitted; it can be long. - `codersdk.WorkspaceFilter` gains `IncludeAgentMetadata []string`. - No wildcard, no schema change, no migration. --- Authored by Coder Agents on behalf of @Emyrk.
This commit is contained in:
@@ -69,6 +69,10 @@ The following filters are supported:
|
||||
`connecting|connected|timeout|disconnected`, e.g, `has-agent:connecting`
|
||||
- `id` - Workspace UUID
|
||||
- `healthy` - Only applicable for workspaces in "start" transition. `healthy:false` is an alias for `has-agent:timeout,disconnected`, `healthy:true` is an alias for `has-agent:connected`.
|
||||
- `include_agent_metadata` - Not a filter: expands each agent in the API
|
||||
response with the named agent metadata keys, e.g,
|
||||
`include_agent_metadata:cpu_usage`. Repeat the key to request multiple
|
||||
metadata items. Keys match case-insensitively.
|
||||
|
||||
## Updating workspaces
|
||||
|
||||
|
||||
Reference in New Issue
Block a user