feat(coderd): add has_external_agent flag to template_versions and workspace_builds (#19285)

This pull request introduces support for external workspace management, allowing users to register and manage workspaces that are provisioned and managed outside of the Coder.

* Added has_external_agent field to workspace builds and template versions
This commit is contained in:
Kacper Sawicki
2025-08-19 10:29:51 +02:00
committed by GitHub
parent e67f0f6f52
commit 5e4aa79a9d
19 changed files with 522 additions and 267 deletions
+11 -2
View File
@@ -117,7 +117,8 @@ SELECT
latest_build.error as latest_build_error,
latest_build.transition as latest_build_transition,
latest_build.job_status as latest_build_status,
latest_build.has_ai_task as latest_build_has_ai_task
latest_build.has_ai_task as latest_build_has_ai_task,
latest_build.has_external_agent as latest_build_has_external_agent
FROM
workspaces_expanded as workspaces
JOIN
@@ -130,6 +131,7 @@ LEFT JOIN LATERAL (
workspace_builds.transition,
workspace_builds.template_version_id,
workspace_builds.has_ai_task,
workspace_builds.has_external_agent,
template_versions.name AS template_version_name,
provisioner_jobs.id AS provisioner_job_id,
provisioner_jobs.started_at,
@@ -370,6 +372,12 @@ WHERE
)) = (sqlc.narg('has_ai_task') :: boolean)
ELSE true
END
-- Filter by has_external_agent in latest build
AND CASE
WHEN sqlc.narg('has_external_agent') :: boolean IS NOT NULL THEN
latest_build.has_external_agent = sqlc.narg('has_external_agent') :: boolean
ELSE true
END
-- Authorize Filter clause will be injected below in GetAuthorizedWorkspaces
-- @authorize_filter
), filtered_workspaces_order AS (
@@ -439,7 +447,8 @@ WHERE
'', -- latest_build_error
'start'::workspace_transition, -- latest_build_transition
'unknown'::provisioner_job_status, -- latest_build_status
false -- latest_build_has_ai_task
false, -- latest_build_has_ai_task
false -- latest_build_has_external_agent
WHERE
@with_summary :: boolean = true
), total_count AS (