@ai-sdk/open-responses 2.0.51 → 2.0.54

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/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @ai-sdk/open-responses
2
2
 
3
+ ## 2.0.54
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [af9597b]
8
+ - Updated dependencies [bc49f78]
9
+ - @ai-sdk/provider-utils@5.0.49
10
+
11
+ ## 2.0.53
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies [be877ff]
16
+ - @ai-sdk/provider-utils@5.0.48
17
+
18
+ ## 2.0.52
19
+
20
+ ### Patch Changes
21
+
22
+ - 2147b86: Add QuiverAI Arrow 2 language models through the Responses API, with provider-local reasoning validation, stateless history replay, and workflow serialization that preserves QuiverAI configuration and behavior.
23
+
24
+ Add reusable Open Responses transport configuration, response-error metadata extraction for generation and streaming, cache-write accounting, and OpenAI-compatible custom tools. Preserve text, image, and file custom-tool results and complete tool inputs when streaming deltas are omitted.
25
+
3
26
  ## 2.0.51
4
27
 
5
28
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { LanguageModelV4ProviderTool, JSONObject, LanguageModelV4Content, LanguageModelV4StreamPart, LanguageModelV4ToolCallPart, LanguageModelV4ToolResultPart, ProviderV4, LanguageModelV4 } from '@ai-sdk/provider';
1
+ import { LanguageModelV4ProviderTool, JSONObject, LanguageModelV4Content, LanguageModelV4StreamPart, LanguageModelV4ToolCallPart, LanguageModelV4ToolResultPart, APICallError, ProviderV4, LanguageModelV4 } from '@ai-sdk/provider';
2
2
  import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
3
- import { MaybePromiseLike, FetchFunction, InferSchema } from '@ai-sdk/provider-utils';
3
+ import { MaybePromiseLike, FetchFunction, ResponseHandler, InferSchema } from '@ai-sdk/provider-utils';
4
4
 
5
5
  declare const VERSION: string;
6
6
 
@@ -90,9 +90,82 @@ interface OpenResponsesExtension {
90
90
  state: Map<string, unknown>;
91
91
  }): MaybePromiseLike<OpenResponsesExtensionStreamPart[] | undefined>;
92
92
  }
93
+ type OpenResponsesExtensionRegistry = {
94
+ byEventType: Map<OpenResponsesNamespacedType, OpenResponsesEventExtension>;
95
+ byExtensionId: Map<LanguageModelV4ProviderTool['id'], OpenResponsesExtension>;
96
+ byItemType: Map<OpenResponsesNamespacedType, OpenResponsesItemExtension>;
97
+ byProviderToolId: Map<LanguageModelV4ProviderTool['id'], OpenResponsesToolExtension>;
98
+ byToolType: Map<OpenResponsesNamespacedType, OpenResponsesToolExtension>;
99
+ };
100
+ type OpenResponsesToolExtension = OpenResponsesExtension & {
101
+ toolType: OpenResponsesNamespacedType;
102
+ encodeTool: NonNullable<OpenResponsesExtension['encodeTool']>;
103
+ };
104
+ type OpenResponsesItemExtension = OpenResponsesExtension & {
105
+ itemTypes: readonly OpenResponsesNamespacedType[];
106
+ decodeItem: NonNullable<OpenResponsesExtension['decodeItem']>;
107
+ };
108
+ type OpenResponsesEventExtension = OpenResponsesExtension & {
109
+ eventTypes: readonly OpenResponsesNamespacedType[];
110
+ decodeEvent: NonNullable<OpenResponsesExtension['decodeEvent']>;
111
+ };
112
+
113
+ type OpenResponsesCustomToolOptions = {
114
+ /**
115
+ * An optional description of what the custom tool does.
116
+ */
117
+ description?: string;
118
+ /**
119
+ * The raw text format returned by the model.
120
+ */
121
+ format?: {
122
+ type: 'grammar';
123
+ syntax: 'regex' | 'lark';
124
+ definition: string;
125
+ } | {
126
+ type: 'text';
127
+ };
128
+ };
129
+ declare function createOpenResponsesTools({ customToolId, }: {
130
+ customToolId: `${string}.${string}`;
131
+ }): {
132
+ /**
133
+ * Creates a caller-executed OpenAI-compatible custom tool. Custom tools accept
134
+ * a raw string, optionally constrained by a grammar. Requires endpoint support.
135
+ */
136
+ customTool: (options: Parameters<_ai_sdk_provider_utils.ProviderDefinedToolFactory<string, OpenResponsesCustomToolOptions, {}>>[0]) => ReturnType<_ai_sdk_provider_utils.ProviderDefinedToolFactory<string, OpenResponsesCustomToolOptions, {}>>;
137
+ };
138
+
139
+ /**
140
+ * An error that occurred while generating the response.
141
+ */
142
+ type ResponseError = {
143
+ code: string;
144
+ message: string;
145
+ [key: string]: unknown;
146
+ };
147
+
148
+ type OpenResponsesConfig = {
149
+ provider: string;
150
+ providerOptionsName: string;
151
+ url: string;
152
+ headers?: () => Record<string, string | undefined>;
153
+ fetch?: FetchFunction;
154
+ failedResponseHandler?: ResponseHandler<APICallError>;
155
+ getResponseErrorMetadata?: (error: ResponseError) => {
156
+ statusCode?: number;
157
+ isRetryable?: boolean;
158
+ };
159
+ generateId: () => string;
160
+ extensionRegistry?: OpenResponsesExtensionRegistry;
161
+ strictResponseInput?: boolean;
162
+ customToolId?: `${string}.${string}`;
163
+ structuredOutputs?: boolean;
164
+ };
93
165
 
94
166
  interface OpenResponsesProvider extends ProviderV4 {
95
167
  (modelId: string): LanguageModelV4;
168
+ tools: ReturnType<typeof createOpenResponsesTools>;
96
169
  }
97
170
  interface OpenResponsesProviderSettings {
98
171
  /**
@@ -110,12 +183,21 @@ interface OpenResponsesProviderSettings {
110
183
  /**
111
184
  * Custom headers to include in the requests.
112
185
  */
113
- headers?: Record<string, string>;
186
+ headers?: Record<string, string> | (() => Record<string, string>);
114
187
  /**
115
188
  * Custom fetch implementation. You can use it as a middleware to intercept requests,
116
189
  * or to provide a custom fetch implementation for e.g. testing.
117
190
  */
118
191
  fetch?: FetchFunction;
192
+ /**
193
+ * Custom handler for non-successful HTTP responses.
194
+ */
195
+ failedResponseHandler?: ResponseHandler<APICallError>;
196
+ /**
197
+ * Extracts HTTP status and retryability metadata from endpoint-specific
198
+ * response errors. Applies to both generation and streaming errors.
199
+ */
200
+ getResponseErrorMetadata?: OpenResponsesConfig['getResponseErrorMetadata'];
119
201
  /**
120
202
  * Whether to serialize assistant history using the strict OpenAI Responses
121
203
  * input schemas. Assistant messages without an item ID are sent as easy input
@@ -124,6 +206,25 @@ interface OpenResponsesProviderSettings {
124
206
  * @default false
125
207
  */
126
208
  strictResponseInput?: boolean;
209
+ /**
210
+ * Provider-tool ID used for caller-executed Open Responses custom tools.
211
+ *
212
+ * @default 'open-responses.custom'
213
+ */
214
+ customToolId?: `${string}.${string}`;
215
+ /**
216
+ * Whether JSON response formats are sent to the endpoint. When disabled,
217
+ * structured output requests produce an unsupported warning and are omitted.
218
+ *
219
+ * @default true
220
+ */
221
+ structuredOutputs?: boolean;
222
+ /**
223
+ * User-agent suffix for requests.
224
+ *
225
+ * @default `ai-sdk/open-responses/<version>`
226
+ */
227
+ userAgentSuffix?: string;
127
228
  /**
128
229
  * Codecs for Open Responses extension tools, items, and streaming events.
129
230
  *
@@ -139,4 +240,4 @@ declare const openResponsesLanguageModelOptions: _ai_sdk_provider_utils.LazySche
139
240
  }>;
140
241
  type OpenResponsesLanguageModelOptions = InferSchema<typeof openResponsesLanguageModelOptions>;
141
242
 
142
- export { type OpenResponsesExtension as Experimental_OpenResponsesExtension, type OpenResponsesExtensionContentPart as Experimental_OpenResponsesExtensionContentPart, type OpenResponsesExtensionEvent as Experimental_OpenResponsesExtensionEvent, type OpenResponsesExtensionInputPart as Experimental_OpenResponsesExtensionInputPart, type OpenResponsesExtensionItem as Experimental_OpenResponsesExtensionItem, type OpenResponsesExtensionRecord as Experimental_OpenResponsesExtensionRecord, type OpenResponsesExtensionStreamPart as Experimental_OpenResponsesExtensionStreamPart, type OpenResponsesNamespacedType as Experimental_OpenResponsesNamespacedType, type OpenResponsesLanguageModelOptions, type OpenResponsesLanguageModelOptions as OpenResponsesOptions, type OpenResponsesProvider, type OpenResponsesProviderSettings, VERSION, createOpenResponses };
243
+ export { type OpenResponsesExtension as Experimental_OpenResponsesExtension, type OpenResponsesExtensionContentPart as Experimental_OpenResponsesExtensionContentPart, type OpenResponsesExtensionEvent as Experimental_OpenResponsesExtensionEvent, type OpenResponsesExtensionInputPart as Experimental_OpenResponsesExtensionInputPart, type OpenResponsesExtensionItem as Experimental_OpenResponsesExtensionItem, type OpenResponsesExtensionRecord as Experimental_OpenResponsesExtensionRecord, type OpenResponsesExtensionStreamPart as Experimental_OpenResponsesExtensionStreamPart, type OpenResponsesNamespacedType as Experimental_OpenResponsesNamespacedType, type OpenResponsesCustomToolOptions, type OpenResponsesLanguageModelOptions, type OpenResponsesLanguageModelOptions as OpenResponsesOptions, type OpenResponsesProvider, type OpenResponsesProviderSettings, VERSION, createOpenResponses };