mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
chore: add client_type field to chats and telemetry (#24342)
Add a `chat_client_type` enum (`ui` | `api`) and `client_type` column to the `chats` table. The column defaults to `api` for new rows so API callers don't need to set it explicitly. Existing rows are backfilled to `ui`. The field flows through `CreateChatRequest`, `chatd.CreateOptions`, `InsertChat`, and is returned in the `Chat` response via `db2sdk`. <details> <summary>Implementation notes (Coder Agents generated)</summary> ### Changes **Database migration (000469)** - New enum `chat_client_type` with values `ui`, `api`. - New `client_type` column, `NOT NULL DEFAULT 'api'`. - Backfill: `UPDATE chats SET client_type = 'ui'`. **SQL query** — `InsertChat` now includes `client_type`. **SDK** — `ChatClientType` type added; `ClientType` field added to both `CreateChatRequest` (optional, defaults server-side to `api`) and `Chat` response. **Handler** — `postChats` maps the request field (defaulting to `api`) and passes it through `chatd.CreateOptions`. **Sub-agent** — Child chats inherit their parent's `client_type`. **db2sdk** — Maps the database value to the SDK type. ### Decision log - Default is `api` (not `ui`) so existing API integrations get the correct value without code changes. - Backfill sets existing rows to `ui` per requirement. - Child chats inherit `client_type` from parent rather than defaulting. </details>
This commit is contained in:
@@ -56,7 +56,8 @@ The response is the newly created `Chat` object:
|
||||
"pin_order": 0,
|
||||
"mcp_server_ids": [],
|
||||
"labels": {},
|
||||
"has_unread": false
|
||||
"has_unread": false,
|
||||
"client_type": "api"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -89,6 +90,7 @@ A typical integration follows three steps:
|
||||
| `model_config_id` | `uuid` | no | Override the default model configuration. |
|
||||
| `mcp_server_ids` | `uuid[]` | no | Attach MCP servers to this chat. |
|
||||
| `labels` | `map[string]string` | no | Key-value labels for the chat (max 50). |
|
||||
| `client_type` | `string` | no | `"ui"` or `"api"`. Defaults to `"api"`. |
|
||||
|
||||
Each `ChatInputPart` has a `type` field. The simplest form is a text part:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user