@propio-ai/providers 0.1.3 → 0.1.4
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/README.md +28 -2
- package/dist/config.d.ts +8 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +13 -1
- package/dist/factory.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/openAiCompatibleProvider.d.ts.map +1 -1
- package/dist/internal/openAiCompatibleProvider.js +6 -1
- package/dist/internal/openAiCompatibleProvider.js.map +1 -1
- package/dist/internal/openAiResponsesProvider.d.ts +59 -0
- package/dist/internal/openAiResponsesProvider.d.ts.map +1 -0
- package/dist/internal/openAiResponsesProvider.js +401 -0
- package/dist/internal/openAiResponsesProvider.js.map +1 -0
- package/dist/providers/meta.d.ts +7 -0
- package/dist/providers/meta.d.ts.map +1 -0
- package/dist/providers/meta.js +23 -0
- package/dist/providers/meta.js.map +1 -0
- package/dist/providers/openai.d.ts +4 -33
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +18 -364
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/openrouter.d.ts.map +1 -1
- package/dist/providers/openrouter.js +3 -1
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/types.d.ts +10 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
import { ProviderAuthenticationError, ProviderCapacityError, ProviderError, } from "../types.js";
|
|
2
|
+
import { OpenAiCompatibleProvider, } from "./openAiCompatibleProvider.js";
|
|
3
|
+
import { createResponsesFunctionTool, expandToolResultMessages, imageToOpenAIUrl, parseJsonMaybe, parseOpenAIStreamToolCallArguments, readSseDataLines, serializeToolArguments, } from "./shared.js";
|
|
4
|
+
import { withRetry } from "./withRetry.js";
|
|
5
|
+
/** Shared implementation for providers exposing the OpenAI Responses wire API. */
|
|
6
|
+
export class OpenAiResponsesProvider extends OpenAiCompatibleProvider {
|
|
7
|
+
constructor(options, profile) {
|
|
8
|
+
super();
|
|
9
|
+
const apiKey = options.apiKey ?? process.env[profile.apiKeyEnv] ?? "";
|
|
10
|
+
if (!apiKey.trim()) {
|
|
11
|
+
throw new ProviderAuthenticationError(profile.missingApiKeyMessage);
|
|
12
|
+
}
|
|
13
|
+
this.name = profile.name;
|
|
14
|
+
this.model = options.model;
|
|
15
|
+
this.apiKey = apiKey;
|
|
16
|
+
this.retryConfig = options.retryConfig;
|
|
17
|
+
this.onDiagnosticEvent = options.onDiagnosticEvent;
|
|
18
|
+
this.profile = profile;
|
|
19
|
+
this.configureCapabilities(options.contextWindowTokens);
|
|
20
|
+
}
|
|
21
|
+
async *streamChat(request) {
|
|
22
|
+
try {
|
|
23
|
+
const body = this.createRequestBody(request);
|
|
24
|
+
const response = await withRetry(() => this.postResponse(body, request.signal), this.buildRetryOptions(request, this.model, this.retryConfig, this.onDiagnosticEvent));
|
|
25
|
+
const reader = response.body?.getReader();
|
|
26
|
+
if (!reader) {
|
|
27
|
+
throw new ProviderError(this.profile.missingBodyMessage);
|
|
28
|
+
}
|
|
29
|
+
yield* this.consumeResponsesStream(reader);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
if (error instanceof ProviderError) {
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
throw this.translateError(error);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
createRequestBody(request) {
|
|
39
|
+
const body = {
|
|
40
|
+
model: request.model || this.model,
|
|
41
|
+
input: this.messagesToInput(request.messages),
|
|
42
|
+
stream: true,
|
|
43
|
+
store: false,
|
|
44
|
+
include: ["reasoning.encrypted_content"],
|
|
45
|
+
};
|
|
46
|
+
if (request.tools?.length) {
|
|
47
|
+
body.tools = request.tools.map(createResponsesFunctionTool);
|
|
48
|
+
}
|
|
49
|
+
if (request.requestReasoning) {
|
|
50
|
+
body.reasoning = { summary: "auto" };
|
|
51
|
+
}
|
|
52
|
+
return body;
|
|
53
|
+
}
|
|
54
|
+
messagesToInput(messages) {
|
|
55
|
+
const input = [];
|
|
56
|
+
for (const message of expandToolResultMessages(messages)) {
|
|
57
|
+
this.appendMessageInput(message, input);
|
|
58
|
+
}
|
|
59
|
+
return input;
|
|
60
|
+
}
|
|
61
|
+
appendMessageInput(message, input) {
|
|
62
|
+
switch (message.role) {
|
|
63
|
+
case "tool":
|
|
64
|
+
this.appendToolResultInput(message, input);
|
|
65
|
+
break;
|
|
66
|
+
case "assistant":
|
|
67
|
+
this.appendAssistantInput(message, input);
|
|
68
|
+
break;
|
|
69
|
+
case "user":
|
|
70
|
+
input.push(this.createUserInput(message));
|
|
71
|
+
break;
|
|
72
|
+
default:
|
|
73
|
+
input.push({ role: message.role, content: message.content ?? "" });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
appendToolResultInput(message, input) {
|
|
77
|
+
if (!message.toolCallId) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
input.push({
|
|
81
|
+
type: "function_call_output",
|
|
82
|
+
call_id: message.toolCallId,
|
|
83
|
+
output: message.content ?? "",
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
createUserInput(message) {
|
|
87
|
+
if (!message.images?.length) {
|
|
88
|
+
return { role: "user", content: message.content ?? "" };
|
|
89
|
+
}
|
|
90
|
+
const content = [];
|
|
91
|
+
if (message.content) {
|
|
92
|
+
content.push({ type: "input_text", text: message.content });
|
|
93
|
+
}
|
|
94
|
+
for (const image of message.images) {
|
|
95
|
+
content.push({
|
|
96
|
+
type: "input_image",
|
|
97
|
+
image_url: imageToOpenAIUrl(image),
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
return { role: "user", content };
|
|
101
|
+
}
|
|
102
|
+
appendAssistantInput(message, input) {
|
|
103
|
+
const replayItems = this.parseReplayItems(message.reasoningContent);
|
|
104
|
+
this.appendReplayItemsAndAssistantMessage(message, replayItems, input);
|
|
105
|
+
const replayedCallIds = new Set(replayItems
|
|
106
|
+
.filter((item) => item.type === "function_call")
|
|
107
|
+
.flatMap((item) => [item.call_id, item.id])
|
|
108
|
+
.filter((id) => typeof id === "string"));
|
|
109
|
+
for (const toolCall of message.toolCalls ?? []) {
|
|
110
|
+
const callId = toolCall.id ?? `call_${toolCall.function.name}`;
|
|
111
|
+
if (replayedCallIds.has(callId)) {
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
input.push({
|
|
115
|
+
type: "function_call",
|
|
116
|
+
call_id: callId,
|
|
117
|
+
name: toolCall.function.name,
|
|
118
|
+
arguments: serializeToolArguments(toolCall.function.arguments),
|
|
119
|
+
status: "completed",
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
appendReplayItemsAndAssistantMessage(message, replayItems, input) {
|
|
124
|
+
const hasReplayedAssistantMessage = replayItems.some((item) => item.type === "message");
|
|
125
|
+
if (!message.content || hasReplayedAssistantMessage) {
|
|
126
|
+
input.push(...replayItems);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const assistantMessage = this.createAssistantMessageInput(message);
|
|
130
|
+
const firstFunctionCallIndex = this.profile.preserveAssistantCommentary === true
|
|
131
|
+
? replayItems.findIndex((item) => item.type === "function_call")
|
|
132
|
+
: -1;
|
|
133
|
+
if (firstFunctionCallIndex < 0) {
|
|
134
|
+
input.push(...replayItems, assistantMessage);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
input.push(...replayItems.slice(0, firstFunctionCallIndex), assistantMessage, ...replayItems.slice(firstFunctionCallIndex));
|
|
138
|
+
}
|
|
139
|
+
createAssistantMessageInput(message) {
|
|
140
|
+
if (this.profile.preserveAssistantCommentary === true &&
|
|
141
|
+
message.toolCalls?.length) {
|
|
142
|
+
return {
|
|
143
|
+
role: "assistant",
|
|
144
|
+
phase: "commentary",
|
|
145
|
+
content: [{ type: "output_text", text: message.content }],
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
return { role: "assistant", content: message.content };
|
|
149
|
+
}
|
|
150
|
+
parseReplayItems(reasoningContent) {
|
|
151
|
+
if (!reasoningContent) {
|
|
152
|
+
return [];
|
|
153
|
+
}
|
|
154
|
+
const parsed = parseJsonMaybe(reasoningContent);
|
|
155
|
+
if (!Array.isArray(parsed)) {
|
|
156
|
+
return [];
|
|
157
|
+
}
|
|
158
|
+
return parsed.filter((item) => typeof item === "object" &&
|
|
159
|
+
item !== null &&
|
|
160
|
+
this.isReplayItemType(String(item.type)));
|
|
161
|
+
}
|
|
162
|
+
isReplayItemType(type) {
|
|
163
|
+
return (type === "reasoning" ||
|
|
164
|
+
type === "function_call" ||
|
|
165
|
+
(type === "message" && this.profile.preserveAssistantCommentary === true));
|
|
166
|
+
}
|
|
167
|
+
async postResponse(body, signal) {
|
|
168
|
+
let response;
|
|
169
|
+
try {
|
|
170
|
+
response = await fetch(this.profile.apiUrl, {
|
|
171
|
+
method: "POST",
|
|
172
|
+
headers: {
|
|
173
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
174
|
+
"Content-Type": "application/json",
|
|
175
|
+
},
|
|
176
|
+
body: JSON.stringify(body),
|
|
177
|
+
signal,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
throw this.translateError(error);
|
|
182
|
+
}
|
|
183
|
+
if (response.ok) {
|
|
184
|
+
return response;
|
|
185
|
+
}
|
|
186
|
+
let responseBody = "";
|
|
187
|
+
try {
|
|
188
|
+
responseBody = await response.text();
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
// Preserve the status-based translation when the body cannot be read.
|
|
192
|
+
}
|
|
193
|
+
throw this.translateError(new Error(responseBody || `HTTP ${response.status}`), response, responseBody);
|
|
194
|
+
}
|
|
195
|
+
async *consumeResponsesStream(reader) {
|
|
196
|
+
const state = {
|
|
197
|
+
functionCallsByOutputIndex: new Map(),
|
|
198
|
+
replayItemsByOutputIndex: new Map(),
|
|
199
|
+
stopReason: "end_turn",
|
|
200
|
+
};
|
|
201
|
+
for await (const data of readSseDataLines(reader)) {
|
|
202
|
+
if (data === "[DONE]") {
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
const event = parseJsonMaybe(data);
|
|
206
|
+
if (!event?.type) {
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
const outputEvent = this.applyStreamEvent(event, state);
|
|
210
|
+
if (outputEvent) {
|
|
211
|
+
yield outputEvent;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
const toolCallsEvent = this.buildToolCallsEvent(state);
|
|
215
|
+
if (toolCallsEvent) {
|
|
216
|
+
yield toolCallsEvent;
|
|
217
|
+
}
|
|
218
|
+
yield { type: "terminal", stopReason: state.stopReason };
|
|
219
|
+
}
|
|
220
|
+
applyStreamEvent(event, state) {
|
|
221
|
+
const visibleEvent = this.createVisibleStreamEvent(event);
|
|
222
|
+
if (visibleEvent) {
|
|
223
|
+
return visibleEvent;
|
|
224
|
+
}
|
|
225
|
+
this.captureStreamState(event, state);
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
createVisibleStreamEvent(event) {
|
|
229
|
+
switch (event.type) {
|
|
230
|
+
case "response.output_text.delta":
|
|
231
|
+
return event.delta
|
|
232
|
+
? { type: "assistant_text", delta: event.delta }
|
|
233
|
+
: null;
|
|
234
|
+
case "response.reasoning_summary_text.delta":
|
|
235
|
+
return event.delta
|
|
236
|
+
? {
|
|
237
|
+
type: "reasoning_summary",
|
|
238
|
+
summary: event.delta,
|
|
239
|
+
source: "provider",
|
|
240
|
+
}
|
|
241
|
+
: null;
|
|
242
|
+
default:
|
|
243
|
+
return null;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
captureStreamState(event, state) {
|
|
247
|
+
if (this.captureStreamItemState(event, state)) {
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
this.captureTerminalState(event, state);
|
|
251
|
+
}
|
|
252
|
+
captureStreamItemState(event, state) {
|
|
253
|
+
switch (event.type) {
|
|
254
|
+
case "response.output_item.added":
|
|
255
|
+
this.captureFunctionCall(event, state, false);
|
|
256
|
+
return true;
|
|
257
|
+
case "response.function_call_arguments.delta":
|
|
258
|
+
this.captureFunctionArgumentsDelta(event, state);
|
|
259
|
+
return true;
|
|
260
|
+
case "response.output_item.done":
|
|
261
|
+
this.captureCompletedItem(event, state);
|
|
262
|
+
return true;
|
|
263
|
+
default:
|
|
264
|
+
return false;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
captureTerminalState(event, state) {
|
|
268
|
+
switch (event.type) {
|
|
269
|
+
case "response.completed":
|
|
270
|
+
case "response.done":
|
|
271
|
+
state.stopReason = this.mapStopReason(event.response?.status, state.functionCallsByOutputIndex.size > 0);
|
|
272
|
+
break;
|
|
273
|
+
case "response.incomplete":
|
|
274
|
+
state.stopReason = "max_tokens";
|
|
275
|
+
break;
|
|
276
|
+
case "response.failed":
|
|
277
|
+
case "response.cancelled":
|
|
278
|
+
state.stopReason = "error";
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
captureFunctionCall(event, state, replaceArguments) {
|
|
283
|
+
const item = event.item;
|
|
284
|
+
if (item?.type !== "function_call") {
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
const index = event.output_index ?? 0;
|
|
288
|
+
const current = state.functionCallsByOutputIndex.get(index) ?? {
|
|
289
|
+
name: "",
|
|
290
|
+
arguments: "",
|
|
291
|
+
};
|
|
292
|
+
this.mergeFunctionCall(current, item, replaceArguments);
|
|
293
|
+
state.functionCallsByOutputIndex.set(index, current);
|
|
294
|
+
}
|
|
295
|
+
mergeFunctionCall(current, item, replaceArguments) {
|
|
296
|
+
if (!item) {
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
if (item.id !== undefined) {
|
|
300
|
+
current.id = item.id;
|
|
301
|
+
}
|
|
302
|
+
if (item.call_id !== undefined) {
|
|
303
|
+
current.callId = item.call_id;
|
|
304
|
+
}
|
|
305
|
+
if (item.name !== undefined) {
|
|
306
|
+
current.name = item.name;
|
|
307
|
+
}
|
|
308
|
+
if (typeof item.arguments !== "string") {
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
if (replaceArguments || !current.arguments) {
|
|
312
|
+
current.arguments = item.arguments;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
captureFunctionArgumentsDelta(event, state) {
|
|
316
|
+
if (!event.delta) {
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
const index = event.output_index ?? 0;
|
|
320
|
+
const current = state.functionCallsByOutputIndex.get(index) ?? {
|
|
321
|
+
name: "",
|
|
322
|
+
arguments: "",
|
|
323
|
+
};
|
|
324
|
+
current.arguments += event.delta;
|
|
325
|
+
state.functionCallsByOutputIndex.set(index, current);
|
|
326
|
+
}
|
|
327
|
+
captureCompletedItem(event, state) {
|
|
328
|
+
if (event.item?.type === "reasoning" ||
|
|
329
|
+
event.item?.type === "function_call" ||
|
|
330
|
+
(event.item?.type === "message" &&
|
|
331
|
+
this.profile.preserveAssistantCommentary === true)) {
|
|
332
|
+
state.replayItemsByOutputIndex.set(event.output_index ?? 0, event.item);
|
|
333
|
+
}
|
|
334
|
+
this.captureFunctionCall(event, state, true);
|
|
335
|
+
}
|
|
336
|
+
buildToolCallsEvent(state) {
|
|
337
|
+
if (!state.functionCallsByOutputIndex.size) {
|
|
338
|
+
return null;
|
|
339
|
+
}
|
|
340
|
+
const toolCalls = [...state.functionCallsByOutputIndex]
|
|
341
|
+
.sort(([left], [right]) => left - right)
|
|
342
|
+
.map(([, call]) => ({
|
|
343
|
+
id: call.callId ?? call.id,
|
|
344
|
+
function: {
|
|
345
|
+
name: call.name,
|
|
346
|
+
arguments: parseOpenAIStreamToolCallArguments(call.arguments),
|
|
347
|
+
},
|
|
348
|
+
}));
|
|
349
|
+
const replayItems = [...state.replayItemsByOutputIndex]
|
|
350
|
+
.sort(([left], [right]) => left - right)
|
|
351
|
+
.map(([, item]) => item);
|
|
352
|
+
// The Responses API requires prior output items to be replayed unchanged.
|
|
353
|
+
// reasoningContent is provider-private continuation state. It can contain
|
|
354
|
+
// opaque reasoning/function-call state and, for commentary-preserving
|
|
355
|
+
// profiles, plaintext assistant message items in their original order.
|
|
356
|
+
return {
|
|
357
|
+
type: "tool_calls",
|
|
358
|
+
toolCalls,
|
|
359
|
+
...(replayItems.length
|
|
360
|
+
? { reasoningContent: JSON.stringify(replayItems) }
|
|
361
|
+
: {}),
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
mapStopReason(status, hasFunctionCalls) {
|
|
365
|
+
if (hasFunctionCalls) {
|
|
366
|
+
return "tool_use";
|
|
367
|
+
}
|
|
368
|
+
if (status === "incomplete") {
|
|
369
|
+
return "max_tokens";
|
|
370
|
+
}
|
|
371
|
+
if (status === "failed" || status === "cancelled") {
|
|
372
|
+
return "error";
|
|
373
|
+
}
|
|
374
|
+
return "end_turn";
|
|
375
|
+
}
|
|
376
|
+
translateError(error, response, _responseBody) {
|
|
377
|
+
const originalError = this.createOriginalError(error);
|
|
378
|
+
if (response?.status === 403) {
|
|
379
|
+
return new ProviderAuthenticationError(this.profile.unauthorizedMessage, originalError);
|
|
380
|
+
}
|
|
381
|
+
if (response?.status === 503) {
|
|
382
|
+
return new ProviderCapacityError(this.profile.capacityMessage, originalError);
|
|
383
|
+
}
|
|
384
|
+
return this.translateStandardOpenAiError(error, response, {
|
|
385
|
+
model: this.model,
|
|
386
|
+
authenticationMessage: this.profile.authenticationMessage,
|
|
387
|
+
rateLimitMessage: this.profile.rateLimitMessage,
|
|
388
|
+
serviceErrorMessage: this.profile.serviceErrorMessage,
|
|
389
|
+
connectionErrorMessage: this.profile.connectionErrorMessage,
|
|
390
|
+
requestFailedMessage: this.profile.requestFailedMessage,
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
isRetryableError(error) {
|
|
394
|
+
if (error instanceof ProviderError &&
|
|
395
|
+
error.message === "Request cancelled") {
|
|
396
|
+
return false;
|
|
397
|
+
}
|
|
398
|
+
return super.isRetryableError(error);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
//# sourceMappingURL=openAiResponsesProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openAiResponsesProvider.js","sourceRoot":"","sources":["../../src/internal/openAiResponsesProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { OpenAiCompatibleProviderOptions } from "../internal/openAiCompatibleProvider.js";
|
|
2
|
+
import { OpenAiResponsesProvider } from "../internal/openAiResponsesProvider.js";
|
|
3
|
+
/** Meta Model API implementation using the OpenAI-compatible Responses API. */
|
|
4
|
+
export declare class MetaProvider extends OpenAiResponsesProvider {
|
|
5
|
+
constructor(options: OpenAiCompatibleProviderOptions);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=meta.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/providers/meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC/F,OAAO,EACL,uBAAuB,EAExB,MAAM,wCAAwC,CAAC;AAmBhD,+EAA+E;AAC/E,qBAAa,YAAa,SAAQ,uBAAuB;gBAC3C,OAAO,EAAE,+BAA+B;CAGrD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { OpenAiResponsesProvider, } from "../internal/openAiResponsesProvider.js";
|
|
2
|
+
const META_PROFILE = {
|
|
3
|
+
name: "meta",
|
|
4
|
+
apiUrl: "https://api.meta.ai/v1/responses",
|
|
5
|
+
apiKeyEnv: "META_API_KEY",
|
|
6
|
+
missingApiKeyMessage: "Meta Model API key is required. Set META_API_KEY or pass apiKey in options.",
|
|
7
|
+
missingBodyMessage: "Meta Model API response had no body",
|
|
8
|
+
unauthorizedMessage: "Meta Model API key is not authorized for this request",
|
|
9
|
+
capacityMessage: "Meta Model API capacity is temporarily exhausted",
|
|
10
|
+
authenticationMessage: "Invalid Meta Model API key",
|
|
11
|
+
rateLimitMessage: "Meta Model API rate limit exceeded",
|
|
12
|
+
serviceErrorMessage: "Meta Model API service error",
|
|
13
|
+
connectionErrorMessage: "Failed to connect to Meta Model API",
|
|
14
|
+
requestFailedMessage: "Meta Model API request failed",
|
|
15
|
+
preserveAssistantCommentary: true,
|
|
16
|
+
};
|
|
17
|
+
/** Meta Model API implementation using the OpenAI-compatible Responses API. */
|
|
18
|
+
export class MetaProvider extends OpenAiResponsesProvider {
|
|
19
|
+
constructor(options) {
|
|
20
|
+
super(options, META_PROFILE);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=meta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../../src/providers/meta.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,GAExB,MAAM,wCAAwC,CAAC;AAEhD,MAAM,YAAY,GAAmC;IACnD,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,kCAAkC;IAC1C,SAAS,EAAE,cAAc;IACzB,oBAAoB,EAClB,6EAA6E;IAC/E,kBAAkB,EAAE,qCAAqC;IACzD,mBAAmB,EAAE,uDAAuD;IAC5E,eAAe,EAAE,kDAAkD;IACnE,qBAAqB,EAAE,4BAA4B;IACnD,gBAAgB,EAAE,oCAAoC;IACtD,mBAAmB,EAAE,8BAA8B;IACnD,sBAAsB,EAAE,qCAAqC;IAC7D,oBAAoB,EAAE,+BAA+B;IACrD,2BAA2B,EAAE,IAAI;CAClC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,OAAO,YAAa,SAAQ,uBAAuB;IACvD,YAAY,OAAwC;QAClD,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -1,36 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export declare class OpenAiProvider extends OpenAiCompatibleProvider {
|
|
6
|
-
readonly name = "openai";
|
|
7
|
-
private readonly model;
|
|
8
|
-
private readonly apiKey;
|
|
9
|
-
private readonly retryConfig?;
|
|
10
|
-
private readonly onDiagnosticEvent?;
|
|
1
|
+
import type { OpenAiCompatibleProviderOptions } from "../internal/openAiCompatibleProvider.js";
|
|
2
|
+
import { OpenAiResponsesProvider } from "../internal/openAiResponsesProvider.js";
|
|
3
|
+
/** OpenAI implementation using the Responses API. */
|
|
4
|
+
export declare class OpenAiProvider extends OpenAiResponsesProvider {
|
|
11
5
|
constructor(options: OpenAiCompatibleProviderOptions);
|
|
12
|
-
streamChat(request: ChatRequest): AsyncIterable<ChatStreamEvent>;
|
|
13
|
-
private createRequestBody;
|
|
14
|
-
private messagesToInput;
|
|
15
|
-
private appendMessageInput;
|
|
16
|
-
private appendToolResultInput;
|
|
17
|
-
private createUserInput;
|
|
18
|
-
private appendAssistantInput;
|
|
19
|
-
private parseReplayItems;
|
|
20
|
-
private postResponse;
|
|
21
|
-
private consumeResponsesStream;
|
|
22
|
-
private applyStreamEvent;
|
|
23
|
-
private createVisibleStreamEvent;
|
|
24
|
-
private captureStreamState;
|
|
25
|
-
private captureStreamItemState;
|
|
26
|
-
private captureTerminalState;
|
|
27
|
-
private captureFunctionCall;
|
|
28
|
-
private mergeFunctionCall;
|
|
29
|
-
private captureFunctionArgumentsDelta;
|
|
30
|
-
private captureCompletedItem;
|
|
31
|
-
private buildToolCallsEvent;
|
|
32
|
-
private mapStopReason;
|
|
33
|
-
protected translateError(error: unknown, response?: Response, _responseBody?: string): ProviderError;
|
|
34
|
-
protected isRetryableError(error: unknown): boolean;
|
|
35
6
|
}
|
|
36
7
|
//# sourceMappingURL=openai.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAC/F,OAAO,EACL,uBAAuB,EAExB,MAAM,wCAAwC,CAAC;AAkBhD,qDAAqD;AACrD,qBAAa,cAAe,SAAQ,uBAAuB;gBAC7C,OAAO,EAAE,+BAA+B;CAGrD"}
|