diff --git a/agent/agentcontainers/api.go b/agent/agentcontainers/api.go index 3e42a73746..a6c2167ca8 100644 --- a/agent/agentcontainers/api.go +++ b/agent/agentcontainers/api.go @@ -1063,6 +1063,10 @@ func (api *API) maybeInjectSubAgentIntoContainerLocked(ctx context.Context, dc c ) return nil } + if proc.agent.ID == uuid.Nil { + proc.agent.Architecture = arch + } + agentBinaryPath, err := os.Executable() if err != nil { return xerrors.Errorf("get agent binary path: %w", err) @@ -1107,6 +1111,8 @@ func (api *API) maybeInjectSubAgentIntoContainerLocked(ctx context.Context, dc c subAgentConfig := proc.agent.CloneConfig(dc) if proc.agent.ID == uuid.Nil || maybeRecreateSubAgent { + subAgentConfig.Architecture = arch + // Detect workspace folder by executing `pwd` in the container. // NOTE(mafredri): This is a quick and dirty way to detect the // workspace folder inside the container. In the future we will diff --git a/agent/agentcontainers/api_test.go b/agent/agentcontainers/api_test.go index 526c7432c3..3bf6206e2a 100644 --- a/agent/agentcontainers/api_test.go +++ b/agent/agentcontainers/api_test.go @@ -252,6 +252,15 @@ func (m *fakeSubAgentClient) Create(ctx context.Context, agent agentcontainers.S } } } + if agent.Name == "" { + return agentcontainers.SubAgent{}, xerrors.New("name must be set") + } + if agent.Architecture == "" { + return agentcontainers.SubAgent{}, xerrors.New("architecture must be set") + } + if agent.OperatingSystem == "" { + return agentcontainers.SubAgent{}, xerrors.New("operating system must be set") + } agent.ID = uuid.New() agent.AuthToken = uuid.New() if m.agents == nil {