@ai-sdk/open-responses 2.0.52 → 2.0.55

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,30 @@
1
1
  # @ai-sdk/open-responses
2
2
 
3
+ ## 2.0.55
4
+
5
+ ### Patch Changes
6
+
7
+ - 8cf3f5b: Allow extension codecs to explicitly opt in to exact bare tool, item, and event discriminator registration.
8
+ - Updated dependencies [e3605f6]
9
+ - Updated dependencies [525efc5]
10
+ - @ai-sdk/provider-utils@5.0.50
11
+ - @ai-sdk/provider@4.0.19
12
+
13
+ ## 2.0.54
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies [af9597b]
18
+ - Updated dependencies [bc49f78]
19
+ - @ai-sdk/provider-utils@5.0.49
20
+
21
+ ## 2.0.53
22
+
23
+ ### Patch Changes
24
+
25
+ - Updated dependencies [be877ff]
26
+ - @ai-sdk/provider-utils@5.0.48
27
+
3
28
  ## 2.0.52
4
29
 
5
30
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -5,14 +5,14 @@ import { MaybePromiseLike, FetchFunction, ResponseHandler, InferSchema } from '@
5
5
  declare const VERSION: string;
6
6
 
7
7
  type OpenResponsesNamespacedType = `${string}:${string}`;
8
- type OpenResponsesExtensionRecord = JSONObject & {
9
- type: OpenResponsesNamespacedType;
8
+ type OpenResponsesExtensionRecord<Type extends string = OpenResponsesNamespacedType> = JSONObject & {
9
+ type: Type;
10
10
  };
11
- type OpenResponsesExtensionItem = OpenResponsesExtensionRecord & {
11
+ type OpenResponsesExtensionItem<Type extends string = OpenResponsesNamespacedType> = OpenResponsesExtensionRecord<Type> & {
12
12
  id: string;
13
13
  status: string;
14
14
  };
15
- type OpenResponsesExtensionEvent = OpenResponsesExtensionRecord & {
15
+ type OpenResponsesExtensionEvent<Type extends string = OpenResponsesNamespacedType> = OpenResponsesExtensionRecord<Type> & {
16
16
  sequence_number: number;
17
17
  };
18
18
  type OpenResponsesExtensionInputPart = LanguageModelV4ToolCallPart | LanguageModelV4ToolResultPart;
@@ -25,7 +25,7 @@ type OpenResponsesExtensionStreamPart = Exclude<LanguageModelV4StreamPart, {
25
25
  *
26
26
  * Tool, item, and event codecs can be registered independently.
27
27
  */
28
- interface OpenResponsesExtension {
28
+ interface OpenResponsesExtensionBase {
29
29
  /**
30
30
  * Extension ID in `<implementor>.<extension>` format. For extensions that
31
31
  * encode a provider tool, this is also the AI SDK provider-tool ID.
@@ -36,78 +36,135 @@ interface OpenResponsesExtension {
36
36
  * Must be provided together with `encodeTool`.
37
37
  */
38
38
  toolType?: OpenResponsesNamespacedType;
39
- /**
40
- * Namespaced item types decoded by this extension. Must be provided together
41
- * with `decodeItem`.
42
- */
43
- itemTypes?: readonly OpenResponsesNamespacedType[];
44
- /**
45
- * Namespaced streaming event types decoded by this extension. Must be
46
- * provided together with `decodeEvent`.
47
- */
48
- eventTypes?: readonly OpenResponsesNamespacedType[];
49
39
  /**
50
40
  * Encodes an AI SDK provider tool. Return `undefined` when its arguments
51
- * cannot be encoded. The adapter adds `toolType` and omits a specific tool
52
- * choice that selects the omitted tool.
41
+ * cannot be encoded. The adapter adds the registered tool type and omits a
42
+ * specific tool choice that selects the omitted tool.
53
43
  */
54
44
  encodeTool?(options: {
55
45
  name: string;
56
46
  args: Record<string, unknown>;
57
47
  }): MaybePromiseLike<JSONObject | undefined>;
58
48
  /**
59
- * Encodes a specific `toolChoice`. The adapter adds `toolType`. The default
60
- * is an object containing only `toolType`.
49
+ * Encodes a specific `toolChoice`. The adapter adds the registered tool type.
50
+ * The default is an object containing only that type.
61
51
  */
62
52
  encodeToolChoice?(options: {
63
53
  name: string;
64
54
  args: Record<string, unknown>;
65
55
  }): MaybePromiseLike<JSONObject | undefined>;
56
+ }
57
+ type OpenResponsesExtensionItemCodec<Type extends string> = {
66
58
  /**
67
- * Decodes a completed namespaced item into AI SDK content parts. The adapter
59
+ * Namespaced item types decoded by this extension. Must be provided together
60
+ * with `decodeItem`.
61
+ */
62
+ itemTypes?: readonly OpenResponsesNamespacedType[];
63
+ /**
64
+ * Decodes a completed registered item into AI SDK content parts. The adapter
68
65
  * adds a custom replay part containing the original item and reference
69
66
  * metadata to the returned parts.
70
67
  */
71
68
  decodeItem?(options: {
72
- item: OpenResponsesExtensionItem;
69
+ item: OpenResponsesExtensionItem<Type>;
73
70
  mode: 'generate' | 'stream';
74
71
  }): MaybePromiseLike<OpenResponsesExtensionContentPart[] | undefined>;
75
72
  /**
76
73
  * Encodes an AI SDK history part when no original wire item is available.
77
- * Every returned item must use one of `itemTypes`.
74
+ * Every returned item must use one of the registered item types.
78
75
  */
79
76
  encodeInputItem?(options: {
80
77
  part: OpenResponsesExtensionInputPart;
81
78
  tool: LanguageModelV4ProviderTool;
82
- }): MaybePromiseLike<OpenResponsesExtensionItem | OpenResponsesExtensionItem[] | undefined>;
79
+ }): MaybePromiseLike<OpenResponsesExtensionItem<Type> | OpenResponsesExtensionItem<Type>[] | undefined>;
80
+ };
81
+ type OpenResponsesExtensionEventCodec<Type extends string> = {
82
+ /**
83
+ * Namespaced streaming event types decoded by this extension. Must be
84
+ * provided together with `decodeEvent`.
85
+ */
86
+ eventTypes?: readonly OpenResponsesNamespacedType[];
83
87
  /**
84
- * Decodes a namespaced streaming event.
88
+ * Decodes a registered streaming event.
85
89
  *
86
90
  * `state` persists for the lifetime of one response stream.
87
91
  */
88
92
  decodeEvent?(options: {
89
- event: OpenResponsesExtensionEvent;
93
+ event: OpenResponsesExtensionEvent<Type>;
90
94
  state: Map<string, unknown>;
91
95
  }): MaybePromiseLike<OpenResponsesExtensionStreamPart[] | undefined>;
96
+ };
97
+ /**
98
+ * Defines a portable Open Responses extension using namespaced wire types.
99
+ *
100
+ * This remains an interface so existing consumers can extend it from their own
101
+ * interfaces and implement it in classes.
102
+ */
103
+ interface OpenResponsesExtension extends OpenResponsesExtensionBase, OpenResponsesExtensionItemCodec<OpenResponsesNamespacedType>, OpenResponsesExtensionEventCodec<OpenResponsesNamespacedType> {
104
+ allowBareTypes?: false;
105
+ bareToolType?: undefined;
106
+ bareItemTypes?: undefined;
107
+ bareEventTypes?: undefined;
92
108
  }
109
+ /**
110
+ * Defines a non-portable Open Responses extension that explicitly registers
111
+ * exact bare wire types.
112
+ */
113
+ type OpenResponsesBareExtension = OpenResponsesExtensionBase & OpenResponsesExtensionItemCodec<string> & OpenResponsesExtensionEventCodec<string> & {
114
+ /**
115
+ * Explicitly enables non-portable bare discriminator registration for this
116
+ * extension.
117
+ */
118
+ allowBareTypes: true;
119
+ /**
120
+ * Exact non-namespaced tool type used by a documented implementation
121
+ * extension. Must be provided together with `encodeTool` and cannot be used
122
+ * together with `toolType`.
123
+ */
124
+ bareToolType?: string;
125
+ /**
126
+ * Exact non-namespaced item types decoded by a documented implementation
127
+ * extension. Must be provided together with `decodeItem`.
128
+ */
129
+ bareItemTypes?: readonly string[];
130
+ /**
131
+ * Exact non-namespaced streaming event types decoded by this extension.
132
+ * Must be provided together with `decodeEvent`.
133
+ */
134
+ bareEventTypes?: readonly string[];
135
+ } & ({
136
+ bareToolType: string;
137
+ } | {
138
+ bareItemTypes: readonly string[];
139
+ } | {
140
+ bareEventTypes: readonly string[];
141
+ });
142
+ type OpenResponsesExtensionRegistration = OpenResponsesExtension | OpenResponsesBareExtension;
93
143
  type OpenResponsesExtensionRegistry = {
94
- byEventType: Map<OpenResponsesNamespacedType, OpenResponsesEventExtension>;
95
- byExtensionId: Map<LanguageModelV4ProviderTool['id'], OpenResponsesExtension>;
96
- byItemType: Map<OpenResponsesNamespacedType, OpenResponsesItemExtension>;
144
+ byEventType: Map<string, OpenResponsesEventExtension>;
145
+ byExtensionId: Map<LanguageModelV4ProviderTool['id'], OpenResponsesExtensionRegistration>;
146
+ byItemType: Map<string, OpenResponsesItemExtension>;
97
147
  byProviderToolId: Map<LanguageModelV4ProviderTool['id'], OpenResponsesToolExtension>;
98
- byToolType: Map<OpenResponsesNamespacedType, OpenResponsesToolExtension>;
148
+ byToolType: Map<string, OpenResponsesToolExtension>;
99
149
  };
100
- type OpenResponsesToolExtension = OpenResponsesExtension & {
101
- toolType: OpenResponsesNamespacedType;
102
- encodeTool: NonNullable<OpenResponsesExtension['encodeTool']>;
150
+ type OpenResponsesToolExtension = OpenResponsesExtensionRegistration & {
151
+ encodeTool: NonNullable<OpenResponsesExtensionRegistration['encodeTool']>;
152
+ encodeInputItem?: (options: {
153
+ part: OpenResponsesExtensionInputPart;
154
+ tool: LanguageModelV4ProviderTool;
155
+ }) => MaybePromiseLike<OpenResponsesExtensionItem<string> | OpenResponsesExtensionItem<string>[] | undefined>;
103
156
  };
104
- type OpenResponsesItemExtension = OpenResponsesExtension & {
105
- itemTypes: readonly OpenResponsesNamespacedType[];
106
- decodeItem: NonNullable<OpenResponsesExtension['decodeItem']>;
157
+ type OpenResponsesItemExtension = OpenResponsesExtensionRegistration & {
158
+ decodeItem(options: {
159
+ item: OpenResponsesExtensionItem<string>;
160
+ mode: 'generate' | 'stream';
161
+ }): MaybePromiseLike<OpenResponsesExtensionContentPart[] | undefined>;
107
162
  };
108
- type OpenResponsesEventExtension = OpenResponsesExtension & {
109
- eventTypes: readonly OpenResponsesNamespacedType[];
110
- decodeEvent: NonNullable<OpenResponsesExtension['decodeEvent']>;
163
+ type OpenResponsesEventExtension = OpenResponsesExtensionRegistration & {
164
+ decodeEvent(options: {
165
+ event: OpenResponsesExtensionEvent<string>;
166
+ state: Map<string, unknown>;
167
+ }): MaybePromiseLike<OpenResponsesExtensionStreamPart[] | undefined>;
111
168
  };
112
169
 
113
170
  type OpenResponsesCustomToolOptions = {
@@ -230,7 +287,7 @@ interface OpenResponsesProviderSettings {
230
287
  *
231
288
  * @experimental This API may change in a future release.
232
289
  */
233
- experimental_extensions?: readonly OpenResponsesExtension[];
290
+ experimental_extensions?: readonly OpenResponsesExtensionRegistration[];
234
291
  }
235
292
  declare function createOpenResponses(options: OpenResponsesProviderSettings): OpenResponsesProvider;
236
293
 
@@ -240,4 +297,4 @@ declare const openResponsesLanguageModelOptions: _ai_sdk_provider_utils.LazySche
240
297
  }>;
241
298
  type OpenResponsesLanguageModelOptions = InferSchema<typeof openResponsesLanguageModelOptions>;
242
299
 
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 };
300
+ export { type OpenResponsesBareExtension as Experimental_OpenResponsesBareExtension, 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 };