API Reference ReqManagedAgents v#0.13.3

Copy Markdown View Source

Modules

Provider-agnostic Elixir client for agent runtimes — one Session loop, any loop host.

Service-neutral AWS SigV4 request signing using the optional :ex_aws_auth dependency.

Handle to a provisioned, reusable agent. new/1 absorbs the Store.File JSON (string-key) round-trip.

A content-addressed agent definition — the managed-entity analogue of an environment spec. name is the repository base; the digest hashes only the identity content (system_prompt, tools, terminal_tool, model_config), so two identically-defined agents share a digest regardless of their name.

Bedrock AgentCore entry point.

Compatibility client for ReqManagedAgents.Providers.BedrockAgentCore.Client, retaining the published client and command-result structs.

Collected output of one InvokeAgentRuntimeCommand execution. Not an error shape — callers branch on exit_code (0 = success; the command's own exit status otherwise).

Compatibility AWS signer with the AgentCore dependency preflight and default service.

A named file in a session's storage, provider-agnostic. name is the only identity the model ever sees; ref is the provider-native identity (a CMA file id, a sandbox path); raw is the unparsed provider record when one exists.

One artifacts vocabulary over provider-native session storage: list/2, fetch/3, put/4, delete/3 — name-keyed and session-scoped, because a file's NAME is the only identity the model can ever reference.

Compatibility artifact store for Bedrock AgentCore session storage.

A provider-enforced spending limit for a fresh Claude Managed Agents session.

Compatibility control-plane HTTP client for Claude Managed Agents (agents, sessions, events) over Req. The long-lived SSE event stream lives in ReqManagedAgents.Stream.

Callback contract for the Managed Agents control plane, so consumers can swap in a mock client in tests. ReqManagedAgents.Client is the live implementation.

Read-only CloudWatch Logs JSON transport using the optional :ex_aws_auth signer. Credentials or a zero-argument credential resolver must be supplied explicitly; this client never resolves credentials from environment, profiles or metadata.

Bounded post-run enrichment from one caller-selected CloudWatch Logs group.

An explicit CloudWatch log destination, UTC interval and native session/trace selection.

The single resolution point for library configuration. Every value follows the same priority: an explicit opts keyword, then Application.get_env(:req_managed_agents, key), then a System.get_env environment variable, then a default. Callers never read env directly — so the whole config surface is one grep for Config.resolve away.

Content-addressed identity of the runtime environment an agent is provisioned into — the environment mirror of ReqManagedAgents.Agent.Spec. config is provider-verbatim (opaque; the library never interprets it); runtimes is typed — the library renders it, so new/1 validates every runtime through ReqManagedAgents.Provisioner.Runtime.new/1 before it can reach the bootstrap renderer.

Version 1 private managed-agent evidence. The producer dialect is managed_agent_evidence_v1; retention does not authorize browser display.

Native evidence interpretation; shared capture code owns retention and bounds.

Publishes private evidence into an existing caller-owned directory, without replacing an existing artifact. The caller must prevent concurrent directory renames or permission changes while publishing.

The relative evidence filename and SHA256 digest of its exact stored bytes.

Versioned private evidence, validated as one capture before serialization.

An explicit relation supported by capture-local evidence record IDs.

An explicit namespaced link, with structured application and coding-session identities.

Counted evidence limitations with fixed messages safe for display.

An evidence boundary failure with a fixed, content-free message.

Local lifecycle input, mapped explicitly to the versioned evidence payload.

Validated native facts and safe metadata; raw payloads stay on Evidence.Record.

Aggregate capture bounds and the private content retention policy.

Source-local observations; native payload maps are provider-verbatim JSON at the raw edge.

Validated local lifecycle metadata, without exception or request bodies.

Caller-owned, bounded observations for one provider session, independent of Session lifetime. Stop the recorder after taking its snapshot. Recording failures never retry provider work.

Source-relative retrieval coverage; complete does not imply global execution visibility.

The UTC bounds of a requested source interval.

Behaviour a consumer implements to plug local tool execution and event handling into ReqManagedAgents.Session. This is the "tools stay local" seam: the managed loop runs on Anthropic's side and calls back into handle_tool_call/3 on your node.

OTel GenAI bridge for req_managed_agents (mirrors ReqLLM.OpenTelemetry).

Pure mappers: RMA :telemetry metadata -> binary-keyed OTel GenAI (gen_ai.*) attribute maps. No OTel SDK required. Privacy: scalar metadata + usage + tool name only — never message content or tool input/result payloads.

OTel GenAI semantic-convention lookups for the managed-agents (Anthropic) path.

A graded-session goal: a natural-language description of what to achieve and a rubric the provider grades the result against, optionally bounded by max_iterations revise cycles.

Contract a streaming agent backend implements so one ReqManagedAgents.Session loop can drive ANY provider. A provider owns its transport mode and invocation end-to-end

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 provider's Client and 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.

ReqManagedAgents.Artifacts store over an AgentCore harness sessionStorage mount (the no-VPC filesystem type), backed by InvokeAgentRuntimeCommand.

SigV4-signed REST client for AWS AgentCore (bedrock-agentcore). Covers the control-plane harness lifecycle (create_harness/get_harness/get_harness_endpoint/delete_harness), the AgentCore Identity token-vault (create_api_key_credential_provider), and the data-plane invoke_harness (returns a decoded vnd.amazon.eventstream).

Collected output of one InvokeAgentRuntimeCommand execution. Not an error shape — callers branch on exit_code (0 = success; the command's own exit status otherwise).

The :agentcore_harness wire profile: the Bedrock Converse envelope.

Adapter from aws_event_stream's classified frames to the Converse envelope ReqManagedAgents.Providers.BedrockAgentCore.Converse.parse/1 consumes.

Safe interpretation of native BedrockAgentCore evidence; content retention remains shared.

Typed CreateHarness spec assembled by BedrockAgentCore.build_spec/2. environment is the opaque, provider-verbatim Environment.Spec.config passthrough (env vars live nested inside it, as the AWS API shapes them — there is no separate indexed field).

The AgentCore harness status vocabulary, as one total classification.

The single wall-clock budget a BedrockAgentCore.provision/2 call spends across all of its waits and every request they make.

What a provisioning wait observed when it gave up.

ReqManagedAgents.Provider for the Anthropic Managed Agents backend — :streaming mode. A long-lived SSE stream pushes events; the client POSTs events to drive it; a turn ends on session.status_idle. Resume POSTs a user.custom_tool_result event (no echo — the session already holds the tool call). Composes Client, Stream, Event.

ReqManagedAgents.Artifacts store over the Anthropic Files API, scoped to one session. list uses the session-scoped file listing (the only way to discover server-minted file ids for files the agent wrote); fetch/delete act on the newest record when a name appears more than once (re-runs accumulate); put uploads and attaches at opts[:mount_path] (default "/data/<name>").

Claude Managed Agents budget rendering and create-response confirmation.

Low-level control-plane HTTP client for Claude Managed Agents (agents, sessions, events) over Req. The long-lived SSE event stream lives in ReqManagedAgents.Providers.ClaudeManagedAgents.Stream.

Callback contract for the Managed Agents control plane, so consumers can swap in a mock client in tests. ReqManagedAgents.Providers.ClaudeManagedAgents.Client is the live implementation.

Pure helpers for reconnect-with-consolidation.

Outbound event builders and inbound event classification for Managed Agents.

Safe interpretation of native ClaudeManagedAgents evidence; content retention remains shared.

Bounded, GET-only retrieval of persisted Claude session and thread evidence.

Validated inputs for bounded Claude history retrieval.

Claude Managed Agents wire profiles for tool calls, stream paths, and terminal events.

Long-lived SSE consumer for GET /v1/sessions/{id}/events/stream.

Claude Managed Agents custom-tool definitions from NimbleOptions schemas.

ReqManagedAgents.Provider that runs the agent loop in-process — :request_response mode, one model call per poll_turn/2 through a pluggable chat_fun.

Hash-keyed provision cache. ensure/3 returns a cached provider handle for a given {provider, spec}, calling provider.provision/2 only on a miss. The handle is the durable artifact; where the {hash → handle} mapping lives is pluggable via the ReqManagedAgents.Provisioner.Store behaviour (:store option) — in-process ETS by default, or a persistent store (e.g. Store.File) for reuse across OS processes.

Agents as content-addressed managed entities: keyed by spec digest, created once, reused forever, superseded by NEW specs, destroyed only by explicit prune — the exact lifecycle Provisioner.Environments gives environments.

Handle to a provisioned, reusable environment image. new/1 absorbs the Store.File JSON (string-key) round-trip.

Environments as immutable images: content-addressed by spec digest, built once, reused forever, superseded by NEW images (never mutated), destroyed only by explicit prune.

Composes a provider resource name as <base>_<digest> under a Policy.

A language runtime to install in a provisioned environment. new/1 is the single shape+charset validation gate (the version charset closes shell injection through the rendered bootstrap script).

Runtime declarations for environment specs: validation, bootstrap script rendering, and host allowlist queries.

Storage behaviour for the provision cache: where {spec-hash → handle} and tag pointers live. ReqManagedAgents.Provisioner.Store.ETS (default) keeps today's in-process semantics; ReqManagedAgents.Provisioner.Store.File persists across OS processes for CLI/mix-task/cron consumers.

Default in-process store — a named public ETS table. Process-independent within one BEAM; empty in every fresh OS process (the original cache semantics, unchanged).

Persistent JSON-file store: provision handles and tags survive OS-process restarts (CLI tools, mix tasks, cron). One flat JSON object per file; writes are atomic (temp file + rename). Single-writer assumption: this is a workstation/task-runner store, not a concurrent-fleet store. A missing or corrupt file is treated as empty (with a logged warning) — the durable provider resources are recoverable regardless.

Pure Server-Sent-Events frame decoder for the Managed Agents event stream.

The one agent loop, provider- and transport-agnostic.

Runtime identity of the session a callback is executing in — passed as the optional extra argument to ReqManagedAgents.Handler.handle_tool_call/4 and ReqManagedAgents.Handler.handle_event/3.

The accumulated outcome of a whole run — what Session.run/2 and message/2 deliver.

Optional DynamicSupervisor for running one ReqManagedAgents.Session per child. Add it to your supervision tree, then start_child/1 with the same opts you'd pass to ReqManagedAgents.Session.start_link/2.

The locally-produced result of running a custom tool — what resumes the loop.

JSON Schema construction from NimbleOptions tool input schemas.

A tool call — client-side (custom, return-of-control) or server-side (observe-only).

The canonical outcome of ONE turn — what Provider.normalize/1 returns.

Token usage — canonical summed counts + the provider's raw usage object(s) verbatim.

Mix Tasks

Drives the full req_managed_agents AgentCore Harness client stack end-to-end as a single repeatable command — no live AWS needed.

QA-CHECKPOINT — canonical proof that the Provider/Session refactor changed no observable behavior of either provider.

Provisioning lifecycle smoke — a runnable, deterministic proof that the full provider-agnostic lifecycle works cohesively for BOTH providers

Maintainer task: runs each wired live scenario against a real provider, redacts the captured request/response bodies, and writes them into $RMA_CORPUS_DIR/<surface>/{requests,responses}/<name>.json, stamping $RMA_CORPUS_DIR/<surface>/manifest.json.

Maintainer task: mirrors the bedrock-agentcore and bedrock-agentcore-control botocore service-2.json models from boto/botocore into $RMA_CORPUS_DIR/agentcore/model/, and pins the upstream commit plus per-file SHA256 in $RMA_CORPUS_DIR/agentcore/manifest.json.