@@ -59,6 +59,7 @@ type API struct {
59
59
scriptLogger func (logSourceID uuid.UUID ) ScriptLogger
60
60
subAgentClient SubAgentClient
61
61
subAgentURL string
62
+ subAgentEnv []string
62
63
63
64
mu sync.RWMutex
64
65
closed bool
@@ -141,6 +142,13 @@ func WithSubAgentURL(url string) Option {
141
142
}
142
143
}
143
144
145
+ // WithSubAgent sets the environment variables for the sub-agent.
146
+ func WithSubAgentEnv (env ... string ) Option {
147
+ return func (api * API ) {
148
+ api .subAgentEnv = env
149
+ }
150
+ }
151
+
144
152
// WithDevcontainers sets the known devcontainers for the API. This
145
153
// allows the API to be aware of devcontainers defined in the workspace
146
154
// agent manifest.
@@ -1147,12 +1155,14 @@ func (api *API) runSubAgentInContainer(ctx context.Context, dc codersdk.Workspac
1147
1155
1148
1156
logger .Info (ctx , "starting subagent in dev container" )
1149
1157
1158
+ env := []string {
1159
+ "CODER_AGENT_URL=" + api .subAgentURL ,
1160
+ "CODER_AGENT_TOKEN=" + agent .AuthToken .String (),
1161
+ }
1162
+ env = append (env , api .subAgentEnv ... )
1150
1163
err := api .dccli .Exec (agentCtx , dc .WorkspaceFolder , dc .ConfigPath , agentPath , []string {"agent" },
1151
1164
WithExecContainerID (container .ID ),
1152
- WithRemoteEnv (
1153
- "CODER_AGENT_URL=" + api .subAgentURL ,
1154
- "CODER_AGENT_TOKEN=" + agent .AuthToken .String (),
1155
- ),
1165
+ WithRemoteEnv (env ... ),
1156
1166
)
1157
1167
if err != nil && ! errors .Is (err , context .Canceled ) {
1158
1168
logger .Error (ctx , "subagent process failed" , slog .Error (err ))
0 commit comments