feat: add the /aitasks/prompts endpoint (#18464)

Add an endpoint to fetch AI task prompts for multiple workspace builds
at the same time. A prompt is the value of the "AI Prompt" workspace
build parameter. On main, the only way our API allows fetching workspace
build parameters is by using the `/workspacebuilds/$build_id/parameters`
endpoint, requiring a separate API call for every build.

The Tasks dashboard fetches Task workspaces in order to show them in a
list, and then needs to fetch the value of the `AI Prompt` parameter for
every task workspace (using its latest build id), requiring an
additional API call for each list item. This endpoint will allow the
dashboard to make just 2 calls to render the list: one to fetch task
workspaces, the other to fetch prompts.

<img width="1512" alt="Screenshot 2025-06-20 at 11 33 11"
src="https://github.com/user-attachments/assets/92899999-e922-44c5-8325-b4b23a0d2bff"
/>

Related to https://github.com/coder/internal/issues/660.
This commit is contained in:
Hugo Dutka
2025-06-24 13:06:02 +02:00
committed by GitHub
parent 0238f2926d
commit 670fa4a3cc
16 changed files with 493 additions and 1 deletions

View File

@ -41,3 +41,18 @@ FROM (
) q1
ORDER BY created_at DESC, name
LIMIT 100;
-- name: GetWorkspaceBuildParametersByBuildIDs :many
SELECT
workspace_build_parameters.*
FROM
workspace_build_parameters
JOIN
workspace_builds ON workspace_builds.id = workspace_build_parameters.workspace_build_id
JOIN
workspaces ON workspaces.id = workspace_builds.workspace_id
WHERE
workspace_build_parameters.workspace_build_id = ANY(@workspace_build_ids :: uuid[])
-- Authorize Filter clause will be injected below in GetAuthorizedWorkspaceBuildParametersByBuildIDs
-- @authorize_filter
;