@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 +25 -0
- package/dist/index.d.ts +97 -40
- package/dist/index.js +255 -160
- package/dist/index.js.map +1 -1
- package/docs/06-open-responses.mdx +55 -4
- package/package.json +4 -4
- package/src/index.ts +1 -0
- package/src/open-responses-extension.ts +299 -67
- package/src/open-responses-provider.ts +2 -2
- package/src/responses/convert-to-open-responses-input.ts +12 -9
- package/src/responses/open-responses-language-model.ts +20 -16
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:
|
|
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
|
|
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
|
|
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
|
|
60
|
-
* is an object containing only
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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<
|
|
95
|
-
byExtensionId: Map<LanguageModelV4ProviderTool['id'],
|
|
96
|
-
byItemType: Map<
|
|
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<
|
|
148
|
+
byToolType: Map<string, OpenResponsesToolExtension>;
|
|
99
149
|
};
|
|
100
|
-
type OpenResponsesToolExtension =
|
|
101
|
-
|
|
102
|
-
|
|
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 =
|
|
105
|
-
|
|
106
|
-
|
|
157
|
+
type OpenResponsesItemExtension = OpenResponsesExtensionRegistration & {
|
|
158
|
+
decodeItem(options: {
|
|
159
|
+
item: OpenResponsesExtensionItem<string>;
|
|
160
|
+
mode: 'generate' | 'stream';
|
|
161
|
+
}): MaybePromiseLike<OpenResponsesExtensionContentPart[] | undefined>;
|
|
107
162
|
};
|
|
108
|
-
type OpenResponsesEventExtension =
|
|
109
|
-
|
|
110
|
-
|
|
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
|
|
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 };
|