createAgentRecordResolver
@atiproto/record-resolver
Returns a RecordResolver that routes com.atproto.repo.getRecord through any XRPC-shaped client, typically the same agent you already use for application calls. Auth, retries, and proxying live on the agent. This factory just routes the call.
Signature
typescript
function createAgentRecordResolver(agent: RecordResolverAgent,): RecordResolverinterface RecordResolverAgent {call(nsid: string,params?: unknown,data?: unknown,): Promise<{ data: unknown }>;}
The interface matches @atiproto/agent.Agent, @atproto/api.Agent, and bare @atproto/xrpc.XrpcClient. Any of them can be passed directly.
Behavior
Parses the URI, calls com.atproto.repo.getRecord on the configured agent, and returns the value field. Throws on missing value or any error propagated by the agent.
Example: same-agent verification
The user's agent already has the right credentials and proxying. Reuse it for proof resolution rather than spinning up a separate fetch path:
typescript
import { Agent } from "@atiproto/agent";import { verify } from "@atiproto/atproto-attestation";import { createAgentRecordResolver } from "@atiproto/record-resolver";const agent = new Agent(/* SessionManager / FetchHandler */);const recordResolver = createAgentRecordResolver(agent);const result = await verify({record: cart,repository: cart.recipientDid,fields,recordResolver,});
Example: bare XrpcClient
typescript
import { XrpcClient } from "@atproto/xrpc";import { createAgentRecordResolver } from "@atiproto/record-resolver";const client = new XrpcClient("https://bsky.network", []);const recordResolver = createAgentRecordResolver(client);