chore: add AI-tasks-specific fields to codersdk.WorkspaceBuild (#18436)

This will be needed by the frontend on the `/task/$id` page to display
the app in the sidebar.

Related to https://github.com/coder/coder/issues/18158
This commit is contained in:
Hugo Dutka
2025-06-20 10:59:34 +02:00
committed by GitHub
parent d788ab9e55
commit 32239b29cb
8 changed files with 60 additions and 0 deletions
+7
View File
@@ -18091,6 +18091,10 @@ const docTemplate = `{
"codersdk.WorkspaceBuild": {
"type": "object",
"properties": {
"ai_task_sidebar_app_id": {
"type": "string",
"format": "uuid"
},
"build_number": {
"type": "integer"
},
@@ -18105,6 +18109,9 @@ const docTemplate = `{
"type": "string",
"format": "date-time"
},
"has_ai_task": {
"type": "boolean"
},
"id": {
"type": "string",
"format": "uuid"
+7
View File
@@ -16530,6 +16530,10 @@
"codersdk.WorkspaceBuild": {
"type": "object",
"properties": {
"ai_task_sidebar_app_id": {
"type": "string",
"format": "uuid"
},
"build_number": {
"type": "integer"
},
@@ -16544,6 +16548,9 @@
"type": "string",
"format": "date-time"
},
"has_ai_task": {
"type": "boolean"
},
"id": {
"type": "string",
"format": "uuid"
+10
View File
@@ -1078,6 +1078,14 @@ func (api *API) convertWorkspaceBuild(
if build.TemplateVersionPresetID.Valid {
presetID = &build.TemplateVersionPresetID.UUID
}
var hasAITask *bool
if build.HasAITask.Valid {
hasAITask = &build.HasAITask.Bool
}
var aiTasksSidebarAppID *uuid.UUID
if build.AITasksSidebarAppID.Valid {
aiTasksSidebarAppID = &build.AITasksSidebarAppID.UUID
}
apiJob := convertProvisionerJob(job)
transition := codersdk.WorkspaceTransition(build.Transition)
@@ -1105,6 +1113,8 @@ func (api *API) convertWorkspaceBuild(
DailyCost: build.DailyCost,
MatchedProvisioners: &matchedProvisioners,
TemplateVersionPresetID: presetID,
HasAITask: hasAITask,
AITaskSidebarAppID: aiTasksSidebarAppID,
}, nil
}
+2
View File
@@ -75,6 +75,8 @@ type WorkspaceBuild struct {
DailyCost int32 `json:"daily_cost"`
MatchedProvisioners *MatchedProvisioners `json:"matched_provisioners,omitempty"`
TemplateVersionPresetID *uuid.UUID `json:"template_version_preset_id" format:"uuid"`
HasAITask *bool `json:"has_ai_task,omitempty"`
AITaskSidebarAppID *uuid.UUID `json:"ai_task_sidebar_app_id,omitempty" format:"uuid"`
}
// WorkspaceResource describes resources used to create a workspace, for instance:
+12
View File
@@ -27,10 +27,12 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/workspace/{workspacenam
```json
{
"ai_task_sidebar_app_id": "852ddafb-2cb9-4cbf-8a8c-075389fb3d3d",
"build_number": 0,
"created_at": "2019-08-24T14:15:22Z",
"daily_cost": 0,
"deadline": "2019-08-24T14:15:22Z",
"has_ai_task": true,
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "06588898-9a84-4b35-ba8f-f9cbd64946f3",
"initiator_name": "string",
@@ -262,10 +264,12 @@ curl -X GET http://coder-server:8080/api/v2/workspacebuilds/{workspacebuild} \
```json
{
"ai_task_sidebar_app_id": "852ddafb-2cb9-4cbf-8a8c-075389fb3d3d",
"build_number": 0,
"created_at": "2019-08-24T14:15:22Z",
"daily_cost": 0,
"deadline": "2019-08-24T14:15:22Z",
"has_ai_task": true,
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "06588898-9a84-4b35-ba8f-f9cbd64946f3",
"initiator_name": "string",
@@ -977,10 +981,12 @@ curl -X GET http://coder-server:8080/api/v2/workspacebuilds/{workspacebuild}/sta
```json
{
"ai_task_sidebar_app_id": "852ddafb-2cb9-4cbf-8a8c-075389fb3d3d",
"build_number": 0,
"created_at": "2019-08-24T14:15:22Z",
"daily_cost": 0,
"deadline": "2019-08-24T14:15:22Z",
"has_ai_task": true,
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "06588898-9a84-4b35-ba8f-f9cbd64946f3",
"initiator_name": "string",
@@ -1285,10 +1291,12 @@ curl -X GET http://coder-server:8080/api/v2/workspaces/{workspace}/builds \
```json
[
{
"ai_task_sidebar_app_id": "852ddafb-2cb9-4cbf-8a8c-075389fb3d3d",
"build_number": 0,
"created_at": "2019-08-24T14:15:22Z",
"daily_cost": 0,
"deadline": "2019-08-24T14:15:22Z",
"has_ai_task": true,
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "06588898-9a84-4b35-ba8f-f9cbd64946f3",
"initiator_name": "string",
@@ -1501,10 +1509,12 @@ Status Code **200**
| Name | Type | Required | Restrictions | Description |
|----------------------------------|--------------------------------------------------------------------------------------------------------|----------|--------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `[array item]` | array | false | | |
| `» ai_task_sidebar_app_id` | string(uuid) | false | | |
| `» build_number` | integer | false | | |
| `» created_at` | string(date-time) | false | | |
| `» daily_cost` | integer | false | | |
| `» deadline` | string(date-time) | false | | |
| `» has_ai_task` | boolean | false | | |
| `» id` | string(uuid) | false | | |
| `» initiator_id` | string(uuid) | false | | |
| `» initiator_name` | string | false | | |
@@ -1771,10 +1781,12 @@ curl -X POST http://coder-server:8080/api/v2/workspaces/{workspace}/builds \
```json
{
"ai_task_sidebar_app_id": "852ddafb-2cb9-4cbf-8a8c-075389fb3d3d",
"build_number": 0,
"created_at": "2019-08-24T14:15:22Z",
"daily_cost": 0,
"deadline": "2019-08-24T14:15:22Z",
"has_ai_task": true,
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "06588898-9a84-4b35-ba8f-f9cbd64946f3",
"initiator_name": "string",
+8
View File
@@ -8588,10 +8588,12 @@ If the schedule is empty, the user will be updated to use the default schedule.|
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
},
"latest_build": {
"ai_task_sidebar_app_id": "852ddafb-2cb9-4cbf-8a8c-075389fb3d3d",
"build_number": 0,
"created_at": "2019-08-24T14:15:22Z",
"daily_cost": 0,
"deadline": "2019-08-24T14:15:22Z",
"has_ai_task": true,
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "06588898-9a84-4b35-ba8f-f9cbd64946f3",
"initiator_name": "string",
@@ -9690,10 +9692,12 @@ If the schedule is empty, the user will be updated to use the default schedule.|
```json
{
"ai_task_sidebar_app_id": "852ddafb-2cb9-4cbf-8a8c-075389fb3d3d",
"build_number": 0,
"created_at": "2019-08-24T14:15:22Z",
"daily_cost": 0,
"deadline": "2019-08-24T14:15:22Z",
"has_ai_task": true,
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "06588898-9a84-4b35-ba8f-f9cbd64946f3",
"initiator_name": "string",
@@ -9896,10 +9900,12 @@ If the schedule is empty, the user will be updated to use the default schedule.|
| Name | Type | Required | Restrictions | Description |
|------------------------------|-------------------------------------------------------------------|----------|--------------|---------------------------------------------------------------------|
| `ai_task_sidebar_app_id` | string | false | | |
| `build_number` | integer | false | | |
| `created_at` | string | false | | |
| `daily_cost` | integer | false | | |
| `deadline` | string | false | | |
| `has_ai_task` | boolean | false | | |
| `id` | string | false | | |
| `initiator_id` | string | false | | |
| `initiator_name` | string | false | | |
@@ -10416,10 +10422,12 @@ If the schedule is empty, the user will be updated to use the default schedule.|
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
},
"latest_build": {
"ai_task_sidebar_app_id": "852ddafb-2cb9-4cbf-8a8c-075389fb3d3d",
"build_number": 0,
"created_at": "2019-08-24T14:15:22Z",
"daily_cost": 0,
"deadline": "2019-08-24T14:15:22Z",
"has_ai_task": true,
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "06588898-9a84-4b35-ba8f-f9cbd64946f3",
"initiator_name": "string",
+12
View File
@@ -82,10 +82,12 @@ of the template will be used.
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
},
"latest_build": {
"ai_task_sidebar_app_id": "852ddafb-2cb9-4cbf-8a8c-075389fb3d3d",
"build_number": 0,
"created_at": "2019-08-24T14:15:22Z",
"daily_cost": 0,
"deadline": "2019-08-24T14:15:22Z",
"has_ai_task": true,
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "06588898-9a84-4b35-ba8f-f9cbd64946f3",
"initiator_name": "string",
@@ -366,10 +368,12 @@ curl -X GET http://coder-server:8080/api/v2/users/{user}/workspace/{workspacenam
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
},
"latest_build": {
"ai_task_sidebar_app_id": "852ddafb-2cb9-4cbf-8a8c-075389fb3d3d",
"build_number": 0,
"created_at": "2019-08-24T14:15:22Z",
"daily_cost": 0,
"deadline": "2019-08-24T14:15:22Z",
"has_ai_task": true,
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "06588898-9a84-4b35-ba8f-f9cbd64946f3",
"initiator_name": "string",
@@ -676,10 +680,12 @@ of the template will be used.
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
},
"latest_build": {
"ai_task_sidebar_app_id": "852ddafb-2cb9-4cbf-8a8c-075389fb3d3d",
"build_number": 0,
"created_at": "2019-08-24T14:15:22Z",
"daily_cost": 0,
"deadline": "2019-08-24T14:15:22Z",
"has_ai_task": true,
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "06588898-9a84-4b35-ba8f-f9cbd64946f3",
"initiator_name": "string",
@@ -963,10 +969,12 @@ curl -X GET http://coder-server:8080/api/v2/workspaces \
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
},
"latest_build": {
"ai_task_sidebar_app_id": "852ddafb-2cb9-4cbf-8a8c-075389fb3d3d",
"build_number": 0,
"created_at": "2019-08-24T14:15:22Z",
"daily_cost": 0,
"deadline": "2019-08-24T14:15:22Z",
"has_ai_task": true,
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "06588898-9a84-4b35-ba8f-f9cbd64946f3",
"initiator_name": "string",
@@ -1231,10 +1239,12 @@ curl -X GET http://coder-server:8080/api/v2/workspaces/{workspace} \
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
},
"latest_build": {
"ai_task_sidebar_app_id": "852ddafb-2cb9-4cbf-8a8c-075389fb3d3d",
"build_number": 0,
"created_at": "2019-08-24T14:15:22Z",
"daily_cost": 0,
"deadline": "2019-08-24T14:15:22Z",
"has_ai_task": true,
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "06588898-9a84-4b35-ba8f-f9cbd64946f3",
"initiator_name": "string",
@@ -1631,10 +1641,12 @@ curl -X PUT http://coder-server:8080/api/v2/workspaces/{workspace}/dormant \
"workspace_id": "0967198e-ec7b-4c6b-b4d3-f71244cadbe9"
},
"latest_build": {
"ai_task_sidebar_app_id": "852ddafb-2cb9-4cbf-8a8c-075389fb3d3d",
"build_number": 0,
"created_at": "2019-08-24T14:15:22Z",
"daily_cost": 0,
"deadline": "2019-08-24T14:15:22Z",
"has_ai_task": true,
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "06588898-9a84-4b35-ba8f-f9cbd64946f3",
"initiator_name": "string",
+2
View File
@@ -3653,6 +3653,8 @@ export interface WorkspaceBuild {
readonly daily_cost: number;
readonly matched_provisioners?: MatchedProvisioners;
readonly template_version_preset_id: string | null;
readonly has_ai_task?: boolean;
readonly ai_task_sidebar_app_id?: string;
}
// From codersdk/workspacebuilds.go