Skip to content

Commit a197d59

Browse files
Plumb per-run AWS Bedrock flag (#50)
Co-authored-by: Oz <oz-agent@warp.dev>
1 parent 9849c78 commit a197d59

3 files changed

Lines changed: 47 additions & 11 deletions

File tree

internal/common/task_utils.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@ func AugmentArgsForTask(task *types.Task, args []string, opts TaskAugmentOptions
5959
}
6060
}
6161

62+
if task.AgentConfigSnapshot.BedrockInferenceRole != nil {
63+
if role := strings.TrimSpace(*task.AgentConfigSnapshot.BedrockInferenceRole); role != "" {
64+
args = append(args, "--bedrock-inference-role", role)
65+
}
66+
}
67+
6268
// Pass harness setting if explicitly configured.
6369
if task.AgentConfigSnapshot.Harness != nil && task.AgentConfigSnapshot.Harness.Type != nil {
6470
if harness := strings.TrimSpace(*task.AgentConfigSnapshot.Harness.Type); harness != "" {

internal/common/task_utils_test.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,35 @@ func TestAugmentArgsForTask_IdleOnCompletePrecedence(t *testing.T) {
8787
opts: TaskAugmentOptions{},
8888
expected: []string{"agent", "run", "--model", "claude-sonnet-4", "--idle-on-complete", "12m"},
8989
},
90+
{
91+
name: "passes --bedrock-inference-role when set",
92+
task: &types.Task{
93+
AgentConfigSnapshot: &types.AmbientAgentConfig{
94+
ModelID: strPtr("claude-sonnet-4"),
95+
BedrockInferenceRole: strPtr("arn:aws:iam::123456789012:role/BedrockInference"),
96+
},
97+
},
98+
opts: TaskAugmentOptions{},
99+
expected: []string{
100+
"agent",
101+
"run",
102+
"--model",
103+
"claude-sonnet-4",
104+
"--bedrock-inference-role",
105+
"arn:aws:iam::123456789012:role/BedrockInference",
106+
"--idle-on-complete",
107+
},
108+
},
109+
{
110+
name: "skips --bedrock-inference-role when role is empty",
111+
task: &types.Task{
112+
AgentConfigSnapshot: &types.AmbientAgentConfig{
113+
BedrockInferenceRole: strPtr(" "),
114+
},
115+
},
116+
opts: TaskAugmentOptions{},
117+
expected: []string{"agent", "run", "--idle-on-complete"},
118+
},
90119
{
91120
name: "adds --share public:view when session_sharing.public_access is VIEWER",
92121
task: &types.Task{

internal/types/messages.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -98,17 +98,18 @@ type SessionSharingConfig struct {
9898

9999
// AmbientAgentConfig represents the agent configuration.
100100
type AmbientAgentConfig struct {
101-
EnvironmentID *string `json:"environment_id,omitempty"`
102-
BasePrompt *string `json:"base_prompt,omitempty"`
103-
ModelID *string `json:"model_id,omitempty"`
104-
ProfileID *string `json:"profile_id,omitempty"`
105-
SkillSpec *string `json:"skill_spec,omitempty"`
106-
MCPServers map[string]json.RawMessage `json:"mcp_servers,omitempty"`
107-
ComputerUseEnabled *bool `json:"computer_use_enabled,omitempty"`
108-
IdleTimeoutMinutes *int `json:"idle_timeout_minutes,omitempty"`
109-
Harness *Harness `json:"harness,omitempty"`
110-
HarnessAuthSecrets *HarnessAuthSecrets `json:"harness_auth_secrets,omitempty"`
111-
SessionSharing *SessionSharingConfig `json:"session_sharing,omitempty"`
101+
EnvironmentID *string `json:"environment_id,omitempty"`
102+
BasePrompt *string `json:"base_prompt,omitempty"`
103+
ModelID *string `json:"model_id,omitempty"`
104+
ProfileID *string `json:"profile_id,omitempty"`
105+
SkillSpec *string `json:"skill_spec,omitempty"`
106+
MCPServers map[string]json.RawMessage `json:"mcp_servers,omitempty"`
107+
ComputerUseEnabled *bool `json:"computer_use_enabled,omitempty"`
108+
IdleTimeoutMinutes *int `json:"idle_timeout_minutes,omitempty"`
109+
Harness *Harness `json:"harness,omitempty"`
110+
HarnessAuthSecrets *HarnessAuthSecrets `json:"harness_auth_secrets,omitempty"`
111+
BedrockInferenceRole *string `json:"bedrock_inference_role,omitempty"`
112+
SessionSharing *SessionSharingConfig `json:"session_sharing,omitempty"`
112113
}
113114

114115
// Task represents an ambient agent job.

0 commit comments

Comments
 (0)