ReqManagedAgents.Provider for the Bedrock AgentCore backend — :request_response mode.
Each turn is one InvokeHarness call; resume re-sends the assistant toolUse + user
toolResult delta (the harness does not persist the uncommitted tool-use turn). Composes
the existing AgentCore.{Client, Converse} modules. Decoded events are additionally
delivered live to the session as {:provider_event, ev} messages while a turn streams.
provision/2's opts[:environment] carries an Environment.Spec (or a map coerced via
Environment.Spec.new/1, or nil). Its opaque config is handed to CreateHarness's
environment field VERBATIM — no per-key indexing, symmetric with how
ClaudeManagedAgents passes config straight to its wire body (filesystem mounts, custom
containers, env vars, all opaque and never interpreted by this library). Environment is
first-class (#70/#72): it reaches this provider only via opts[:environment], never the
spec, and its digest is folded into the harness name so different environments never
collide on a name.
Summary
Functions
Assembles the AgentCore harness-creation spec from an Agent.Spec-shaped
spec map and provisioning opts. Validates opts[:execution_role_arn]
BEFORE it ever reaches CreateHarness — a blank/missing value used to pass
straight through (Keyword.fetch!/2 only guards the key being absent, not a
present-but-blank value) and surface as a cryptic AWS HTTP 400 "Value null at 'executionRoleArn'" (GitHub #64).
Functions
@spec build_spec( map(), keyword() ) :: {:ok, ReqManagedAgents.Providers.BedrockAgentCore.HarnessSpec.t()} | {:error, term()}
Assembles the AgentCore harness-creation spec from an Agent.Spec-shaped
spec map and provisioning opts. Validates opts[:execution_role_arn]
BEFORE it ever reaches CreateHarness — a blank/missing value used to pass
straight through (Keyword.fetch!/2 only guards the key being absent, not a
present-but-blank value) and surface as a cryptic AWS HTTP 400 "Value null at 'executionRoleArn'" (GitHub #64).