## Problem Tasks currently only expose a machine-friendly name field (e.g. `task-python-debug-a1b2`), but this value is primarily an identifier rather than a clean, descriptive label. We need a separate display-friendly name for use in the UI. This PR introduces a new `display_name` field and updates the task-name generation flow. The Claude system prompt was updated to return valid JSON with both `name` and `display_name`. The name generation logic follows a fallback chain (Anthropic > prompt sanitization > random fallback). To make task names more closely resemble their display names, the legacy `task-` prefix has been removed. For context, PR https://github.com/coder/coder/pull/20834 introduced a small Task icon to the workspace list to help identify workspaces associated to tasks. ## Changes - Database migration: Added `display_name` column to tasks table - Updated system prompt to generate both task name and display name as valid JSON - Task name generation now follows a fallback chain: Anthropic > prompt sanitization > random fallback - Removed `task-` prefix from task names to allow more descriptive names - Note: PR https://github.com/coder/coder/pull/20834 adds a Task icon to workspaces in the workspace list to distinguish task-created workspaces **Note:** UI changes will be addressed in a follow-up PR Related to: https://github.com/coder/coder/issues/20801
9.5 KiB
Generated
Experimental
List AI tasks
Code samples
# Example request using curl
curl -X GET http://coder-server:8080/api/v2/api/experimental/tasks \
-H 'Accept: */*' \
-H 'Coder-Session-Token: API_KEY'
GET /api/experimental/tasks
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
q |
query | string | false | Search query for filtering tasks. Supports: owner:<username/uuid/me>, organization:<org-name/uuid>, status: |
Example responses
200 Response
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | OK | codersdk.TasksListResponse |
To perform this operation, you must be authenticated. Learn more.
Create a new AI task
Code samples
# Example request using curl
curl -X POST http://coder-server:8080/api/v2/api/experimental/tasks/{user} \
-H 'Content-Type: application/json' \
-H 'Accept: */*' \
-H 'Coder-Session-Token: API_KEY'
POST /api/experimental/tasks/{user}
Body parameter
{
"display_name": "string",
"input": "string",
"name": "string",
"template_version_id": "0ba39c92-1f1b-4c32-aa3e-9925d7713eb1",
"template_version_preset_id": "512a53a7-30da-446e-a1fc-713c630baff1"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
user |
path | string | true | Username, user ID, or 'me' for the authenticated user |
body |
body | codersdk.CreateTaskRequest | true | Create task request |
Example responses
201 Response
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 201 | Created | Created | codersdk.Task |
To perform this operation, you must be authenticated. Learn more.
Get AI task by ID
Code samples
# Example request using curl
curl -X GET http://coder-server:8080/api/v2/api/experimental/tasks/{user}/{task} \
-H 'Accept: */*' \
-H 'Coder-Session-Token: API_KEY'
GET /api/experimental/tasks/{user}/{task}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
user |
path | string | true | Username, user ID, or 'me' for the authenticated user |
task |
path | string | true | Task ID, or task name |
Example responses
200 Response
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | OK | codersdk.Task |
To perform this operation, you must be authenticated. Learn more.
Delete AI task by ID
Code samples
# Example request using curl
curl -X DELETE http://coder-server:8080/api/v2/api/experimental/tasks/{user}/{task} \
-H 'Coder-Session-Token: API_KEY'
DELETE /api/experimental/tasks/{user}/{task}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
user |
path | string | true | Username, user ID, or 'me' for the authenticated user |
task |
path | string | true | Task ID, or task name |
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 202 | Accepted | Task deletion initiated |
To perform this operation, you must be authenticated. Learn more.
Update AI task input
Code samples
# Example request using curl
curl -X PATCH http://coder-server:8080/api/v2/api/experimental/tasks/{user}/{task}/input \
-H 'Content-Type: application/json' \
-H 'Coder-Session-Token: API_KEY'
PATCH /api/experimental/tasks/{user}/{task}/input
Body parameter
{
"input": "string"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
user |
path | string | true | Username, user ID, or 'me' for the authenticated user |
task |
path | string | true | Task ID, or task name |
body |
body | codersdk.UpdateTaskInputRequest | true | Update task input request |
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 204 | No Content | No Content |
To perform this operation, you must be authenticated. Learn more.
Get AI task logs
Code samples
# Example request using curl
curl -X GET http://coder-server:8080/api/v2/api/experimental/tasks/{user}/{task}/logs \
-H 'Accept: */*' \
-H 'Coder-Session-Token: API_KEY'
GET /api/experimental/tasks/{user}/{task}/logs
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
user |
path | string | true | Username, user ID, or 'me' for the authenticated user |
task |
path | string | true | Task ID, or task name |
Example responses
200 Response
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | OK | codersdk.TaskLogsResponse |
To perform this operation, you must be authenticated. Learn more.
Send input to AI task
Code samples
# Example request using curl
curl -X POST http://coder-server:8080/api/v2/api/experimental/tasks/{user}/{task}/send \
-H 'Content-Type: application/json' \
-H 'Coder-Session-Token: API_KEY'
POST /api/experimental/tasks/{user}/{task}/send
Body parameter
{
"input": "string"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
user |
path | string | true | Username, user ID, or 'me' for the authenticated user |
task |
path | string | true | Task ID, or task name |
body |
body | codersdk.TaskSendRequest | true | Task input request |
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 204 | No Content | Input sent successfully |
To perform this operation, you must be authenticated. Learn more.