ModelInfo
What a model adapter declares about itself: which model and adapter it is, its parameters and limits, the inputs it accepts, its hosted tools and whether a lost response can be looked up.
Fields
modelModelRefrequiredThe provider and model name. Recorded when the thread starts.
adapterAdapterRefrequiredThe model adapter and every provider-conversion setting that affects the wire request (API flavour, cache-breakpoint placement, tool-choice mapping).
paramsJsonObjectrequiredThe model parameters the adapter sends (temperature, output limits and the like), recorded when the thread starts. Changing them changes the agent's config hash.
limitsPolicy.models.itemsrequiredWindow, output cap, billing bound and price.
acceptsreadonly ("text" | "image_ref" | "document_ref" | "audio_ref")[]requiredInput parts it accepts; others fail pre-dispatch with content_unsupported.
hosted_toolsreadonly string[]default []Names of provider-hosted tools this model can call (for example web search run by the provider). A live model that declares any is refused in stub-mode runs, since hosted calls can't be stubbed.
lookupLookupCapabilityrequiredResponse lookup by client request id.
ModelContext
What the loop hands an adapter for one send or lookup: the fencing pair it re-checks at its real send point, and artifact access, since the rendered request carries refs, not bytes.
ModelRequest
One send attempt: the client request id and the exact rendered request bytes the adapter encodes for its provider.