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.
A store is {impl_module, store_term}; build the store_term with the impl's
constructor:
ReqManagedAgents.Artifacts.ClaudeFiles.store/2— Anthropic Files APIReqManagedAgents.Artifacts.AgentCoreSessionStorage.store/4— AgentCoresessionStoragemount, command-backed (report-scale artifacts)
Error normalization across impls: a missing name is {:error, :not_found};
when duplicate names exist (re-runs accumulate on CMA), list/2 returns all
and fetch/delete act on the newest.
Summary
Types
Callbacks
@callback list(store_term :: term(), opts :: keyword()) :: {:ok, [ReqManagedAgents.Artifact.t()]} | {:error, term()}