docs(llm): record that non-reasoning catalog models lose the lone off level
The adapter omits the seam's reasoning field whenever a model carries no reasoning metadata, which is the model's own property and says nothing about where the model came from. Both the JSDoc and the Agent Note read as though only hand-declared models were meant, so a reader would infer that the 251 installed-catalog models pi-ai marks as non-reasoning still offer their single off level. They do not, and that is the point: a picker holding only off misrepresents a provider that thinks by default, because off dispatches the same bytes as naming no effort at all. Behavior is unchanged; only the prose that describes it was narrower than the contract. adapter.spec.ts already pins the catalog case through openai/gpt-4.1 and catalog.spec.ts pins the hand-declared one.
This commit is contained in:
@@ -110,14 +110,15 @@ function resolveReasoningLevel(
|
||||
/**
|
||||
* Selectable reasoning efforts for one model, or nothing at all.
|
||||
*
|
||||
* A model the installed catalog does not describe carries no reasoning
|
||||
* metadata, and pi-ai reports that as the single level `off`. Passing that
|
||||
* through would offer a control that cannot do what it says: `off` is
|
||||
* translated to *omitting* the reasoning option, which for such a model is
|
||||
* byte-for-byte the same request as naming no effort — so a provider whose own
|
||||
* default is to think would keep thinking with `off` selected. Omitting
|
||||
* `reasoning` entirely is the seam's way of saying the capability is
|
||||
* unavailable, which leaves the surface offering only the provider's default.
|
||||
* A model that carries no reasoning metadata — every hand-declared one, and
|
||||
* every catalog model pi-ai marks as non-reasoning — is reported by pi-ai as
|
||||
* supporting the single level `off`. Passing that through would offer a control
|
||||
* that cannot do what it says: `off` is translated to *omitting* the reasoning
|
||||
* option, which for such a model is byte-for-byte the same request as naming no
|
||||
* effort — so a provider whose own default is to think would keep thinking with
|
||||
* `off` selected. Omitting `reasoning` entirely is the seam's way of saying the
|
||||
* capability is unavailable, which leaves the surface offering only the
|
||||
* provider's default.
|
||||
* @param model - the resolved model descriptor.
|
||||
* @param defaultLevel - the profile's configured effort, already validated.
|
||||
* @returns the `reasoning` field, or an empty object when none can be offered.
|
||||
|
||||
Reference in New Issue
Block a user