import type { ActorResolver } from './spi/actor-resolver.js'; import type { Actor, AgentDefinition } from './types.js'; /** * Pick the effective {@link ActorResolver} for a turn: an agent's own `actorResolver` (from its * {@link AgentDefinition}) wins over the module-global resolver, letting different agents read the * caller from different places (e.g. one that reads the actor from the HTTP body). Falls back to * `globalResolver` when the agent is unknown (`undefined` definition) or declares none — identical to * the single-resolver behavior before per-agent overrides existed. */ export declare function resolveActorResolver(globalResolver: ActorResolver, definition: Pick | undefined): ActorResolver; /** * The default {@link ActorResolver} the provider installs when `config/agent.ts` sets no * `actorResolver`. It throws on every request rather than inventing an identity — security by * default. Wire a real resolver (e.g. {@link AuthActorResolver}) or the opt-in * {@link HeaderActorResolver} via `defineConfig({ actorResolver })`. */ export declare class UnconfiguredActorResolver implements ActorResolver { resolve(): Actor; } /** * A development / gateway {@link ActorResolver} that trusts request headers: * `x-actor-id` (required), `x-actor-role` (comma-separated → `roles`), `x-tenant-ref`. * * **Security:** it throws when `x-actor-id` is absent — it never fabricates an identity and never * grants a default role (an actor with no `x-actor-role` gets `roles: []`, i.e. no tools). Trusting * client headers is only safe behind a gateway that strips and re-sets them from an authenticated * principal. Real deployments should provide their own resolver (or {@link AuthActorResolver}) that * reads a verified session/JWT instead. */ export declare class HeaderActorResolver implements ActorResolver { resolve(ctx: unknown): Actor; } /** Options for {@link AuthActorResolver}. */ export interface AuthActorResolverOptions { /** Map the authenticated user to an {@link Actor}. Defaults to reading `id`/`roles`/`tenantRef`. */ toActor?: (user: unknown) => Actor; /** * The `@adonisjs/auth` guards to check the request with, in order (`['web', 'api']`). Default: * the default guard. */ guards?: string[]; } /** * Reads Adonis's authenticated principal (`ctx.auth.user`, from `@adonisjs/auth`) into an * {@link Actor}. The agent routes run no auth middleware, so when no guard has tried the request * yet the resolver checks it itself — `ctx.auth.check()` (or `checkUsing(guards)`), which reads a * session cookie or a bearer token and never throws for an anonymous request. Fail-closed: throws * (the routes answer `401`) when no user is authenticated rather than fabricating one. Pass a * `toActor` mapper when your user model doesn't expose `id`/`roles`/`tenantRef` directly (e.g. to * pull roles from a relation). This is the resolver most apps wire in `config/agent.ts`. */ export declare class AuthActorResolver implements ActorResolver { private readonly options; constructor(options?: AuthActorResolverOptions); resolve(ctx: unknown): Promise; } //# sourceMappingURL=actor-resolver.d.ts.map