@yanlinglabs/winter-provider-catalog 0.0.24 → 0.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/types.d.ts CHANGED
@@ -54,6 +54,12 @@ export type ModelStatus = "candidate" | "experimental" | "supported" | "deprecat
54
54
  * continuation domain (Anthropic strips thinking across Claude models), so `continuationDomain`
55
55
  * lists the models PROVEN to accept this endpoint's native continuation object.
56
56
  */
57
+ /** WS-23: how a row takes a per-message effort change -- see `ReasoningCapabilities.perMessageEffort`. */
58
+ export type PerMessageEffortMechanism = {
59
+ beta: "mid-conversation-output-config-2026-07-01";
60
+ } | {
61
+ item: "configuration_update";
62
+ };
57
63
  export interface ReasoningCapabilities {
58
64
  supported: CapabilityEvidence<boolean>;
59
65
  /** The model's own effort vocabulary, verbatim. Vocabularies are NOT interchangeable across providers (WS-13 §8.2). */
@@ -95,6 +101,27 @@ export interface ReasoningCapabilities {
95
101
  blockBinding?: CapabilityEvidence<{
96
102
  beta: "thinking-binding-controls-2026-08-01";
97
103
  }>;
104
+ /**
105
+ * The model takes a PER-MESSAGE effort change (WS-23, 2026-09-25): a `role: "system"` message with
106
+ * empty `content` and `output_config.effort` inside `messages`, applied "from the next `user` turn"
107
+ * while the top-level `output_config.effort` stays fixed, so the cached prefix survives the switch
108
+ * (https://platform.claude.com/docs/en/build-with-claude/effort#change-effort-mid-conversation-beta).
109
+ * Documented for Claude Fable 5.1, Mythos 5.1, Opus 5.5 and Opus 5; Claude Fable 5 returns a 400.
110
+ * ABSENT means a change is a new top-level value, which restarts the cache. `beta` is the header
111
+ * value, a closed vocabulary (`CATALOG_VOCABULARIES.perMessageEffortBetas`).
112
+ *
113
+ * WS-23 (midconv lane): the value names the row's MECHANISM, because two vendors document one:
114
+ * - `{ beta }` -- Anthropic's effort-only `system` message above, behind that beta header;
115
+ * - `{ item: "configuration_update" }` -- OpenAI's Responses input item
116
+ * `{"type":"configuration_update","reasoning":{"effort":…}}`, placed "before the next user
117
+ * message", with the top-level `reasoning.effort` kept fixed ("Configuration updates are
118
+ * supported by the GPT-6 model family in standard, single-agent mode. They change only reasoning
119
+ * effort.", https://developers.openai.com/api/docs/guides/reasoning). A closed vocabulary
120
+ * (`CATALOG_VOCABULARIES.perMessageEffortItems`).
121
+ * The engine keys only on PRESENCE (either mechanism lays out the same markers); each adapter
122
+ * refuses, typed, a row whose mechanism is not its own.
123
+ */
124
+ perMessageEffort?: CapabilityEvidence<PerMessageEffortMechanism>;
98
125
  }
99
126
  /** List prices, USD per million tokens. R6-H: the ONLY price source Winter has — an unpriced model reports `0` / `costBasis: "unknown"`, never an invented number. */
100
127
  export interface ModelPricing {
@@ -203,6 +230,92 @@ export interface WinterModelDescriptor {
203
230
  parallelTools?: CapabilityEvidence<boolean>;
204
231
  structuredOutput?: CapabilityEvidence<boolean>;
205
232
  promptCaching?: CapabilityEvidence<boolean>;
233
+ /**
234
+ * WS-23: the model takes tools declared with `defer_loading: true` and expands the `tool_reference`
235
+ * blocks a client's own tool-search tool returns inside a `tool_result` -- Anthropic's "custom tool
236
+ * search implementation" (https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool).
237
+ * A deferred tool stays out of the rendered prompt prefix until it is referenced, so loading one no
238
+ * longer changes `tools` and no longer invalidates the prompt cache. `true` is the only meaningful
239
+ * value; absent keeps today's shape (a loaded deferred tool is appended to `tools`).
240
+ */
241
+ deferredToolLoading?: CapabilityEvidence<boolean>;
242
+ /**
243
+ * WS-23: the model takes a MID-CONVERSATION `role: "system"` message carrying text -- an operator
244
+ * instruction appended at the point it becomes relevant instead of editing the top-level `system`
245
+ * field, so the cached prefix survives it
246
+ * (https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages; GA, no
247
+ * beta header). `true` is the only meaningful value; absent keeps reminders as user-turn text.
248
+ */
249
+ midConversationSystem?: CapabilityEvidence<boolean>;
250
+ /**
251
+ * WS-23: the endpoint takes a `prompt_cache_key` that groups a caller's requests for cache routing
252
+ * (OpenAI Responses: "Use a stable `prompt_cache_key` to optimize cache routing for requests that
253
+ * share a reusable prefix", https://developers.openai.com/api/docs/guides/prompt-caching). `true` is
254
+ * the only meaningful value; absent sends no key.
255
+ */
256
+ promptCacheKey?: CapabilityEvidence<boolean>;
257
+ /**
258
+ * WS-23 (midconv): the model takes MID-CONVERSATION TOOL CHANGES BY REFERENCE -- a `role: "system"`
259
+ * message carrying `tool_addition` / `tool_removal` blocks that name a tool `tools` declares, so what
260
+ * the model may call changes without editing `tools` and the cached prefix survives
261
+ * (https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages). `beta`
262
+ * is the header value, a closed vocabulary (`CATALOG_VOCABULARIES.midConversationToolChangeBetas`).
263
+ * Documented for Claude Fable 5.1, Mythos 5.1, Fable 5, Mythos 5, Opus 5.5, Opus 4.8 and Opus 5 on
264
+ * the Claude API, Amazon Bedrock and Google Cloud; "Not available on Claude Sonnet 5".
265
+ */
266
+ midConversationToolChanges?: CapabilityEvidence<{
267
+ beta: "mid-conversation-tool-changes-2026-07-01";
268
+ }>;
269
+ /**
270
+ * WS-23 (midconv): the model also takes a tool DEFINED BY VALUE mid-conversation -- a `tool_addition`
271
+ * whose `tool` is a `tool_definition` -- for a tool unknown at the first request, or a new definition
272
+ * under an existing name ("The new definition replaces the earlier one from that position onward").
273
+ * The header covers the reference changes too. Claude API only (same page). `beta` is a closed
274
+ * vocabulary (`CATALOG_VOCABULARIES.inlineToolDefinitionBetas`).
275
+ */
276
+ inlineToolDefinitions?: CapabilityEvidence<{
277
+ beta: "inline-tools-2026-09-15";
278
+ }>;
279
+ /**
280
+ * WS-23 (midconv): the model takes OpenAI's CLIENT-EXECUTED tool search -- a
281
+ * `{"type": "tool_search", "execution": "client", description, parameters}` tool, `tool_search_call`
282
+ * output items the client answers with `tool_search_output` (the loaded definitions, `defer_loading`
283
+ * kept, optionally grouped in `namespace` entries), so deferred tools never sit in `tools`
284
+ * (https://developers.openai.com/api/docs/guides/tools-tool-search: "Only gpt-5.4 and later models
285
+ * support tool_search"). `true` is the only meaningful value.
286
+ */
287
+ clientToolSearch?: CapabilityEvidence<boolean>;
288
+ /**
289
+ * WS-23 (midconv): the model takes an `additional_tools` developer input item -- tools that "become
290
+ * available only after that item appears in the input", replayed at their position -- so a tool can be
291
+ * added mid-conversation without editing `tools` (same page). `true` is the only meaningful value.
292
+ */
293
+ additionalToolsItem?: CapabilityEvidence<boolean>;
294
+ /**
295
+ * WS-23 (midconv): the model takes `tool_choice: {"type": "allowed_tools", "mode": "auto" | "required",
296
+ * "tools": [...]}` -- a callable subset of `tools` "but not modify the list of tools you pass in, so you
297
+ * can maximize savings from prompt caching" (https://developers.openai.com/api/docs/guides/function-calling).
298
+ * `true` is the only meaningful value.
299
+ */
300
+ allowedToolsChoice?: CapabilityEvidence<boolean>;
301
+ /**
302
+ * WS-24: the endpoint takes a call to a tool that is NOT in the request's `tools` -- the model called
303
+ * it from a definition it was shown in a tool result -- and takes that call and its result in the
304
+ * history of later requests. A fork of a session (whose `tools` is its parent's, frozen so the cached
305
+ * prefix is shared) relies on it to run a tool it loads itself where the row documents no mechanism
306
+ * that declares the tool (`deferredToolLoading`, `clientToolSearch`). No vendor documents this, so it is
307
+ * LIVE-PROBE-PROVEN only (`scripts/probe-fork-undeclared-tool.ts`), never set from a page. `true` is the
308
+ * only meaningful value; absent keeps such a call refused ("No such tool available").
309
+ */
310
+ undeclaredToolCalls?: CapabilityEvidence<boolean>;
311
+ /**
312
+ * WS-23 (midconv, live gate): whether the model takes an ASSISTANT PREFILL -- a request whose
313
+ * `messages` ends with an assistant turn. `false` is the meaningful value: "Prefilling assistant
314
+ * messages returns a 400 error on Claude Opus 4.6 and later Opus models, including Claude Opus 5.5"
315
+ * and on Claude Sonnet 5 (https://platform.claude.com/docs/en/models/opus-5-5/migration-guide), and on
316
+ * Claude Fable 5 / 5.1. An adapter refuses such a request typed instead of sending it. Absent = unknown.
317
+ */
318
+ assistantPrefill?: CapabilityEvidence<boolean>;
206
319
  reasoning?: ReasoningCapabilities;
207
320
  pricing?: CapabilityEvidence<ModelPricing>;
208
321
  /** R6-14: set only after the safety corpus passes live. A worker with no configured classifier route serves only when this is true AND `structuredOutput.confidence === "verified"`. */
@@ -64,6 +64,10 @@ export declare const CATALOG_VOCABULARIES: {
64
64
  readonly toolLoopRequirements: readonly ["hard-error", "silent-degradation", "not-required"];
65
65
  readonly effortRequestFields: readonly ["output_config.effort"];
66
66
  readonly blockBindingBetas: readonly ["thinking-binding-controls-2026-08-01"];
67
+ readonly perMessageEffortBetas: readonly ["mid-conversation-output-config-2026-07-01"];
68
+ readonly perMessageEffortItems: readonly ["configuration_update"];
69
+ readonly midConversationToolChangeBetas: readonly ["mid-conversation-tool-changes-2026-07-01"];
70
+ readonly inlineToolDefinitionBetas: readonly ["inline-tools-2026-09-15"];
67
71
  };
68
72
  /**
69
73
  * Recursively scans any JSON value for credential material. Exported because Lane X's generator