fix(coderd/provisionerdserver): pipe through task id and prompt (#20408)

Pipes through the Task's ID and prompt into the provisioner. This is
required to support the new `coder_ai_task.prompt` field and modified
`coder_ai_task.id` field.
This commit is contained in:
Danielle Maywood
2025-10-24 09:43:48 +01:00
committed by GitHub
parent e13a34c145
commit 5a31c590e6
2 changed files with 18 additions and 9 deletions
@@ -597,13 +597,10 @@ func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJo
return nil, failJob(fmt.Sprintf("get workspace build parameters: %s", err)) return nil, failJob(fmt.Sprintf("get workspace build parameters: %s", err))
} }
// TODO(DanielleMaywood): task, err := s.Database.GetTaskByWorkspaceID(ctx, workspaceBuild.WorkspaceID)
// Plumb a task prompt into this when we have the new data-model ready if err != nil && !errors.Is(err, sql.ErrNoRows) {
var taskPrompt string return nil, xerrors.Errorf("get task by workspace id: %w", err)
}
// TODO(DanielleMaywood):
// Plumb a task ID into this when we have the new data-model ready
var taskID string
dbExternalAuthProviders := []database.ExternalAuthProvider{} dbExternalAuthProviders := []database.ExternalAuthProvider{}
err = json.Unmarshal(templateVersion.ExternalAuthProviders, &dbExternalAuthProviders) err = json.Unmarshal(templateVersion.ExternalAuthProviders, &dbExternalAuthProviders)
@@ -729,8 +726,8 @@ func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJo
WorkspaceOwnerRbacRoles: ownerRbacRoles, WorkspaceOwnerRbacRoles: ownerRbacRoles,
RunningAgentAuthTokens: runningAgentAuthTokens, RunningAgentAuthTokens: runningAgentAuthTokens,
PrebuiltWorkspaceBuildStage: input.PrebuiltWorkspaceBuildStage, PrebuiltWorkspaceBuildStage: input.PrebuiltWorkspaceBuildStage,
TaskId: taskID, TaskId: task.ID.String(),
TaskPrompt: taskPrompt, TaskPrompt: task.Prompt,
}, },
LogLevel: input.LogLevel, LogLevel: input.LogLevel,
}, },
@@ -334,6 +334,16 @@ func TestAcquireJob(t *testing.T) {
Transition: database.WorkspaceTransitionStart, Transition: database.WorkspaceTransitionStart,
Reason: database.BuildReasonInitiator, Reason: database.BuildReasonInitiator,
}) })
task := dbgen.Task(t, db, database.TaskTable{
OrganizationID: pd.OrganizationID,
OwnerID: user.ID,
WorkspaceID: uuid.NullUUID{Valid: true, UUID: workspace.ID},
TemplateVersionID: version.ID,
TemplateParameters: json.RawMessage("{}"),
Prompt: "Build me a REST API",
CreatedAt: dbtime.Now(),
DeletedAt: sql.NullTime{},
})
var agent database.WorkspaceAgent var agent database.WorkspaceAgent
if prebuiltWorkspaceBuildStage == sdkproto.PrebuiltWorkspaceBuildStage_CLAIM { if prebuiltWorkspaceBuildStage == sdkproto.PrebuiltWorkspaceBuildStage_CLAIM {
@@ -446,6 +456,8 @@ func TestAcquireJob(t *testing.T) {
WorkspaceBuildId: build.ID.String(), WorkspaceBuildId: build.ID.String(),
WorkspaceOwnerLoginType: string(user.LoginType), WorkspaceOwnerLoginType: string(user.LoginType),
WorkspaceOwnerRbacRoles: []*sdkproto.Role{{Name: rbac.RoleOrgMember(), OrgId: pd.OrganizationID.String()}, {Name: "member", OrgId: ""}, {Name: rbac.RoleOrgAuditor(), OrgId: pd.OrganizationID.String()}}, WorkspaceOwnerRbacRoles: []*sdkproto.Role{{Name: rbac.RoleOrgMember(), OrgId: pd.OrganizationID.String()}, {Name: "member", OrgId: ""}, {Name: rbac.RoleOrgAuditor(), OrgId: pd.OrganizationID.String()}},
TaskId: task.ID.String(),
TaskPrompt: task.Prompt,
} }
if prebuiltWorkspaceBuildStage == sdkproto.PrebuiltWorkspaceBuildStage_CLAIM { if prebuiltWorkspaceBuildStage == sdkproto.PrebuiltWorkspaceBuildStage_CLAIM {
// For claimed prebuilds, we expect the prebuild state to be set to CLAIM // For claimed prebuilds, we expect the prebuild state to be set to CLAIM