@yeshwanthyk/ai 0.1.0

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.
Files changed (94) hide show
  1. package/README.md +1142 -0
  2. package/dist/agent/agent-loop.d.ts +16 -0
  3. package/dist/agent/agent-loop.d.ts.map +1 -0
  4. package/dist/agent/agent-loop.js +307 -0
  5. package/dist/agent/agent-loop.js.map +1 -0
  6. package/dist/agent/index.d.ts +4 -0
  7. package/dist/agent/index.d.ts.map +1 -0
  8. package/dist/agent/index.js +3 -0
  9. package/dist/agent/index.js.map +1 -0
  10. package/dist/agent/tools/calculate.d.ts +15 -0
  11. package/dist/agent/tools/calculate.d.ts.map +1 -0
  12. package/dist/agent/tools/calculate.js +23 -0
  13. package/dist/agent/tools/calculate.js.map +1 -0
  14. package/dist/agent/tools/get-current-time.d.ts +15 -0
  15. package/dist/agent/tools/get-current-time.d.ts.map +1 -0
  16. package/dist/agent/tools/get-current-time.js +38 -0
  17. package/dist/agent/tools/get-current-time.js.map +1 -0
  18. package/dist/agent/tools/index.d.ts +3 -0
  19. package/dist/agent/tools/index.d.ts.map +1 -0
  20. package/dist/agent/tools/index.js +3 -0
  21. package/dist/agent/tools/index.js.map +1 -0
  22. package/dist/agent/types.d.ts +69 -0
  23. package/dist/agent/types.d.ts.map +1 -0
  24. package/dist/agent/types.js +2 -0
  25. package/dist/agent/types.js.map +1 -0
  26. package/dist/index.d.ts +15 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +15 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/models.d.ts +11 -0
  31. package/dist/models.d.ts.map +1 -0
  32. package/dist/models.generated.d.ts +7406 -0
  33. package/dist/models.generated.d.ts.map +1 -0
  34. package/dist/models.generated.js +7268 -0
  35. package/dist/models.generated.js.map +1 -0
  36. package/dist/models.js +35 -0
  37. package/dist/models.js.map +1 -0
  38. package/dist/providers/anthropic.d.ts +12 -0
  39. package/dist/providers/anthropic.d.ts.map +1 -0
  40. package/dist/providers/anthropic.js +538 -0
  41. package/dist/providers/anthropic.js.map +1 -0
  42. package/dist/providers/google.d.ts +12 -0
  43. package/dist/providers/google.d.ts.map +1 -0
  44. package/dist/providers/google.js +427 -0
  45. package/dist/providers/google.js.map +1 -0
  46. package/dist/providers/openai-completions.d.ts +12 -0
  47. package/dist/providers/openai-completions.d.ts.map +1 -0
  48. package/dist/providers/openai-completions.js +540 -0
  49. package/dist/providers/openai-completions.js.map +1 -0
  50. package/dist/providers/openai-responses.d.ts +14 -0
  51. package/dist/providers/openai-responses.d.ts.map +1 -0
  52. package/dist/providers/openai-responses.js +553 -0
  53. package/dist/providers/openai-responses.js.map +1 -0
  54. package/dist/providers/transform-messages.d.ts +3 -0
  55. package/dist/providers/transform-messages.d.ts.map +1 -0
  56. package/dist/providers/transform-messages.js +111 -0
  57. package/dist/providers/transform-messages.js.map +1 -0
  58. package/dist/stream.d.ts +11 -0
  59. package/dist/stream.d.ts.map +1 -0
  60. package/dist/stream.js +204 -0
  61. package/dist/stream.js.map +1 -0
  62. package/dist/types.d.ts +203 -0
  63. package/dist/types.d.ts.map +1 -0
  64. package/dist/types.js +4 -0
  65. package/dist/types.js.map +1 -0
  66. package/dist/utils/event-stream.d.ts +19 -0
  67. package/dist/utils/event-stream.d.ts.map +1 -0
  68. package/dist/utils/event-stream.js +77 -0
  69. package/dist/utils/event-stream.js.map +1 -0
  70. package/dist/utils/json-parse.d.ts +9 -0
  71. package/dist/utils/json-parse.d.ts.map +1 -0
  72. package/dist/utils/json-parse.js +29 -0
  73. package/dist/utils/json-parse.js.map +1 -0
  74. package/dist/utils/oauth/anthropic.d.ts +20 -0
  75. package/dist/utils/oauth/anthropic.d.ts.map +1 -0
  76. package/dist/utils/oauth/anthropic.js +103 -0
  77. package/dist/utils/oauth/anthropic.js.map +1 -0
  78. package/dist/utils/overflow.d.ts +51 -0
  79. package/dist/utils/overflow.d.ts.map +1 -0
  80. package/dist/utils/overflow.js +106 -0
  81. package/dist/utils/overflow.js.map +1 -0
  82. package/dist/utils/sanitize-unicode.d.ts +22 -0
  83. package/dist/utils/sanitize-unicode.d.ts.map +1 -0
  84. package/dist/utils/sanitize-unicode.js +26 -0
  85. package/dist/utils/sanitize-unicode.js.map +1 -0
  86. package/dist/utils/typebox-helpers.d.ts +17 -0
  87. package/dist/utils/typebox-helpers.d.ts.map +1 -0
  88. package/dist/utils/typebox-helpers.js +21 -0
  89. package/dist/utils/typebox-helpers.js.map +1 -0
  90. package/dist/utils/validation.d.ts +18 -0
  91. package/dist/utils/validation.d.ts.map +1 -0
  92. package/dist/utils/validation.js +69 -0
  93. package/dist/utils/validation.js.map +1 -0
  94. package/package.json +60 -0
@@ -0,0 +1,540 @@
1
+ import OpenAI from "openai";
2
+ import { calculateCost } from "../models.js";
3
+ import { AssistantMessageEventStream } from "../utils/event-stream.js";
4
+ import { parseStreamingJson } from "../utils/json-parse.js";
5
+ import { sanitizeSurrogates } from "../utils/sanitize-unicode.js";
6
+ import { transformMessages } from "./transform-messages.js";
7
+ /**
8
+ * Normalize tool call ID for Mistral.
9
+ * Mistral requires tool IDs to be exactly 9 alphanumeric characters (a-z, A-Z, 0-9).
10
+ */
11
+ function normalizeMistralToolId(id, isMistral) {
12
+ if (!isMistral)
13
+ return id;
14
+ // Remove non-alphanumeric characters
15
+ let normalized = id.replace(/[^a-zA-Z0-9]/g, "");
16
+ // Mistral requires exactly 9 characters
17
+ if (normalized.length < 9) {
18
+ // Pad with deterministic characters based on original ID to ensure matching
19
+ const padding = "ABCDEFGHI";
20
+ normalized = normalized + padding.slice(0, 9 - normalized.length);
21
+ }
22
+ else if (normalized.length > 9) {
23
+ normalized = normalized.slice(0, 9);
24
+ }
25
+ return normalized;
26
+ }
27
+ /**
28
+ * Check if conversation messages contain tool calls or tool results.
29
+ * This is needed because Anthropic (via proxy) requires the tools param
30
+ * to be present when messages include tool_calls or tool role messages.
31
+ */
32
+ function hasToolHistory(messages) {
33
+ for (const msg of messages) {
34
+ if (msg.role === "toolResult") {
35
+ return true;
36
+ }
37
+ if (msg.role === "assistant") {
38
+ if (msg.content.some((block) => block.type === "toolCall")) {
39
+ return true;
40
+ }
41
+ }
42
+ }
43
+ return false;
44
+ }
45
+ export const streamOpenAICompletions = (model, context, options) => {
46
+ const stream = new AssistantMessageEventStream();
47
+ (async () => {
48
+ const output = {
49
+ role: "assistant",
50
+ content: [],
51
+ api: model.api,
52
+ provider: model.provider,
53
+ model: model.id,
54
+ usage: {
55
+ input: 0,
56
+ output: 0,
57
+ cacheRead: 0,
58
+ cacheWrite: 0,
59
+ totalTokens: 0,
60
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
61
+ },
62
+ stopReason: "stop",
63
+ timestamp: Date.now(),
64
+ };
65
+ try {
66
+ const client = createClient(model, context, options?.apiKey);
67
+ const params = buildParams(model, context, options);
68
+ const openaiStream = await client.chat.completions.create(params, { signal: options?.signal });
69
+ stream.push({ type: "start", partial: output });
70
+ let currentBlock = null;
71
+ const blocks = output.content;
72
+ const blockIndex = () => blocks.length - 1;
73
+ const finishCurrentBlock = (block) => {
74
+ if (block) {
75
+ if (block.type === "text") {
76
+ stream.push({
77
+ type: "text_end",
78
+ contentIndex: blockIndex(),
79
+ content: block.text,
80
+ partial: output,
81
+ });
82
+ }
83
+ else if (block.type === "thinking") {
84
+ stream.push({
85
+ type: "thinking_end",
86
+ contentIndex: blockIndex(),
87
+ content: block.thinking,
88
+ partial: output,
89
+ });
90
+ }
91
+ else if (block.type === "toolCall") {
92
+ block.arguments = JSON.parse(block.partialArgs || "{}");
93
+ delete block.partialArgs;
94
+ stream.push({
95
+ type: "toolcall_end",
96
+ contentIndex: blockIndex(),
97
+ toolCall: block,
98
+ partial: output,
99
+ });
100
+ }
101
+ }
102
+ };
103
+ for await (const chunk of openaiStream) {
104
+ if (chunk.usage) {
105
+ const cachedTokens = chunk.usage.prompt_tokens_details?.cached_tokens || 0;
106
+ const reasoningTokens = chunk.usage.completion_tokens_details?.reasoning_tokens || 0;
107
+ const input = (chunk.usage.prompt_tokens || 0) - cachedTokens;
108
+ const outputTokens = (chunk.usage.completion_tokens || 0) + reasoningTokens;
109
+ output.usage = {
110
+ // OpenAI includes cached tokens in prompt_tokens, so subtract to get non-cached input
111
+ input,
112
+ output: outputTokens,
113
+ cacheRead: cachedTokens,
114
+ cacheWrite: 0,
115
+ // Compute totalTokens ourselves since we add reasoning_tokens to output
116
+ // and some providers (e.g., Groq) don't include them in total_tokens
117
+ totalTokens: input + outputTokens + cachedTokens,
118
+ cost: {
119
+ input: 0,
120
+ output: 0,
121
+ cacheRead: 0,
122
+ cacheWrite: 0,
123
+ total: 0,
124
+ },
125
+ };
126
+ calculateCost(model, output.usage);
127
+ }
128
+ const choice = chunk.choices[0];
129
+ if (!choice)
130
+ continue;
131
+ if (choice.finish_reason) {
132
+ output.stopReason = mapStopReason(choice.finish_reason);
133
+ }
134
+ if (choice.delta) {
135
+ if (choice.delta.content !== null &&
136
+ choice.delta.content !== undefined &&
137
+ choice.delta.content.length > 0) {
138
+ if (!currentBlock || currentBlock.type !== "text") {
139
+ finishCurrentBlock(currentBlock);
140
+ currentBlock = { type: "text", text: "" };
141
+ output.content.push(currentBlock);
142
+ stream.push({ type: "text_start", contentIndex: blockIndex(), partial: output });
143
+ }
144
+ if (currentBlock.type === "text") {
145
+ currentBlock.text += choice.delta.content;
146
+ stream.push({
147
+ type: "text_delta",
148
+ contentIndex: blockIndex(),
149
+ delta: choice.delta.content,
150
+ partial: output,
151
+ });
152
+ }
153
+ }
154
+ // Some endpoints return reasoning in reasoning_content (llama.cpp),
155
+ // or reasoning (other openai compatible endpoints)
156
+ const reasoningFields = ["reasoning_content", "reasoning"];
157
+ for (const field of reasoningFields) {
158
+ if (choice.delta[field] !== null &&
159
+ choice.delta[field] !== undefined &&
160
+ choice.delta[field].length > 0) {
161
+ if (!currentBlock || currentBlock.type !== "thinking") {
162
+ finishCurrentBlock(currentBlock);
163
+ currentBlock = {
164
+ type: "thinking",
165
+ thinking: "",
166
+ thinkingSignature: field,
167
+ };
168
+ output.content.push(currentBlock);
169
+ stream.push({ type: "thinking_start", contentIndex: blockIndex(), partial: output });
170
+ }
171
+ if (currentBlock.type === "thinking") {
172
+ const delta = choice.delta[field];
173
+ currentBlock.thinking += delta;
174
+ stream.push({
175
+ type: "thinking_delta",
176
+ contentIndex: blockIndex(),
177
+ delta,
178
+ partial: output,
179
+ });
180
+ }
181
+ }
182
+ }
183
+ if (choice?.delta?.tool_calls) {
184
+ for (const toolCall of choice.delta.tool_calls) {
185
+ if (!currentBlock ||
186
+ currentBlock.type !== "toolCall" ||
187
+ (toolCall.id && currentBlock.id !== toolCall.id)) {
188
+ finishCurrentBlock(currentBlock);
189
+ currentBlock = {
190
+ type: "toolCall",
191
+ id: toolCall.id || "",
192
+ name: toolCall.function?.name || "",
193
+ arguments: {},
194
+ partialArgs: "",
195
+ };
196
+ output.content.push(currentBlock);
197
+ stream.push({ type: "toolcall_start", contentIndex: blockIndex(), partial: output });
198
+ }
199
+ if (currentBlock.type === "toolCall") {
200
+ if (toolCall.id)
201
+ currentBlock.id = toolCall.id;
202
+ if (toolCall.function?.name)
203
+ currentBlock.name = toolCall.function.name;
204
+ let delta = "";
205
+ if (toolCall.function?.arguments) {
206
+ delta = toolCall.function.arguments;
207
+ currentBlock.partialArgs += toolCall.function.arguments;
208
+ currentBlock.arguments = parseStreamingJson(currentBlock.partialArgs);
209
+ }
210
+ stream.push({
211
+ type: "toolcall_delta",
212
+ contentIndex: blockIndex(),
213
+ delta,
214
+ partial: output,
215
+ });
216
+ }
217
+ }
218
+ }
219
+ }
220
+ }
221
+ finishCurrentBlock(currentBlock);
222
+ if (options?.signal?.aborted) {
223
+ throw new Error("Request was aborted");
224
+ }
225
+ if (output.stopReason === "aborted" || output.stopReason === "error") {
226
+ throw new Error("An unknown error occurred");
227
+ }
228
+ stream.push({ type: "done", reason: output.stopReason, message: output });
229
+ stream.end();
230
+ }
231
+ catch (error) {
232
+ for (const block of output.content)
233
+ delete block.index;
234
+ output.stopReason = options?.signal?.aborted ? "aborted" : "error";
235
+ output.errorMessage = error instanceof Error ? error.message : JSON.stringify(error);
236
+ stream.push({ type: "error", reason: output.stopReason, error: output });
237
+ stream.end();
238
+ }
239
+ })();
240
+ return stream;
241
+ };
242
+ function createClient(model, context, apiKey) {
243
+ if (!apiKey) {
244
+ if (!process.env.OPENAI_API_KEY) {
245
+ throw new Error("OpenAI API key is required. Set OPENAI_API_KEY environment variable or pass it as an argument.");
246
+ }
247
+ apiKey = process.env.OPENAI_API_KEY;
248
+ }
249
+ const headers = { ...model.headers };
250
+ if (model.provider === "github-copilot") {
251
+ // Copilot expects X-Initiator to indicate whether the request is user-initiated
252
+ // or agent-initiated. It's an agent call if ANY message in history has assistant/tool role.
253
+ const messages = context.messages || [];
254
+ const isAgentCall = messages.some((msg) => msg.role === "assistant" || msg.role === "toolResult");
255
+ headers["X-Initiator"] = isAgentCall ? "agent" : "user";
256
+ headers["Openai-Intent"] = "conversation-edits";
257
+ }
258
+ return new OpenAI({
259
+ apiKey,
260
+ baseURL: model.baseUrl,
261
+ dangerouslyAllowBrowser: true,
262
+ defaultHeaders: headers,
263
+ });
264
+ }
265
+ function buildParams(model, context, options) {
266
+ const compat = getCompat(model);
267
+ const messages = convertMessages(model, context, compat);
268
+ const params = {
269
+ model: model.id,
270
+ messages,
271
+ stream: true,
272
+ stream_options: { include_usage: true },
273
+ };
274
+ if (compat.supportsStore) {
275
+ params.store = false;
276
+ }
277
+ if (options?.maxTokens) {
278
+ if (compat.maxTokensField === "max_tokens") {
279
+ params.max_tokens = options.maxTokens;
280
+ }
281
+ else {
282
+ params.max_completion_tokens = options.maxTokens;
283
+ }
284
+ }
285
+ if (options?.temperature !== undefined) {
286
+ params.temperature = options.temperature;
287
+ }
288
+ if (context.tools) {
289
+ params.tools = convertTools(context.tools);
290
+ }
291
+ else if (hasToolHistory(context.messages)) {
292
+ // Anthropic (via LiteLLM/proxy) requires tools param when conversation has tool_calls/tool_results
293
+ params.tools = [];
294
+ }
295
+ if (options?.toolChoice) {
296
+ params.tool_choice = options.toolChoice;
297
+ }
298
+ if (options?.reasoningEffort && model.reasoning && compat.supportsReasoningEffort) {
299
+ params.reasoning_effort = options.reasoningEffort;
300
+ }
301
+ return params;
302
+ }
303
+ function convertMessages(model, context, compat) {
304
+ const params = [];
305
+ const transformedMessages = transformMessages(context.messages, model);
306
+ if (context.systemPrompt) {
307
+ const useDeveloperRole = model.reasoning && compat.supportsDeveloperRole;
308
+ const role = useDeveloperRole ? "developer" : "system";
309
+ params.push({ role: role, content: sanitizeSurrogates(context.systemPrompt) });
310
+ }
311
+ let lastRole = null;
312
+ for (const msg of transformedMessages) {
313
+ // Some providers (e.g. Mistral/Devstral) don't allow user messages directly after tool results
314
+ // Insert a synthetic assistant message to bridge the gap
315
+ if (compat.requiresAssistantAfterToolResult && lastRole === "toolResult" && msg.role === "user") {
316
+ params.push({
317
+ role: "assistant",
318
+ content: "I have processed the tool results.",
319
+ });
320
+ }
321
+ if (msg.role === "user") {
322
+ if (typeof msg.content === "string") {
323
+ params.push({
324
+ role: "user",
325
+ content: sanitizeSurrogates(msg.content),
326
+ });
327
+ }
328
+ else {
329
+ const content = msg.content.map((item) => {
330
+ if (item.type === "text") {
331
+ return {
332
+ type: "text",
333
+ text: sanitizeSurrogates(item.text),
334
+ };
335
+ }
336
+ else {
337
+ return {
338
+ type: "image_url",
339
+ image_url: {
340
+ url: `data:${item.mimeType};base64,${item.data}`,
341
+ },
342
+ };
343
+ }
344
+ });
345
+ const filteredContent = !model.input.includes("image")
346
+ ? content.filter((c) => c.type !== "image_url")
347
+ : content;
348
+ if (filteredContent.length === 0)
349
+ continue;
350
+ params.push({
351
+ role: "user",
352
+ content: filteredContent,
353
+ });
354
+ }
355
+ }
356
+ else if (msg.role === "assistant") {
357
+ // Some providers (e.g. Mistral) don't accept null content, use empty string instead
358
+ const assistantMsg = {
359
+ role: "assistant",
360
+ content: compat.requiresAssistantAfterToolResult ? "" : null,
361
+ };
362
+ const textBlocks = msg.content.filter((b) => b.type === "text");
363
+ if (textBlocks.length > 0) {
364
+ // GitHub Copilot requires assistant content as a string, not an array.
365
+ // Sending as array causes Claude models to re-answer all previous prompts.
366
+ if (model.provider === "github-copilot") {
367
+ assistantMsg.content = textBlocks.map((b) => sanitizeSurrogates(b.text)).join("");
368
+ }
369
+ else {
370
+ assistantMsg.content = textBlocks.map((b) => {
371
+ return { type: "text", text: sanitizeSurrogates(b.text) };
372
+ });
373
+ }
374
+ }
375
+ // Handle thinking blocks
376
+ const thinkingBlocks = msg.content.filter((b) => b.type === "thinking");
377
+ if (thinkingBlocks.length > 0) {
378
+ if (compat.requiresThinkingAsText) {
379
+ // Convert thinking blocks to text with <thinking> delimiters
380
+ const thinkingText = thinkingBlocks.map((b) => `<thinking>\n${b.thinking}\n</thinking>`).join("\n");
381
+ const textContent = assistantMsg.content;
382
+ if (textContent) {
383
+ textContent.unshift({ type: "text", text: thinkingText });
384
+ }
385
+ else {
386
+ assistantMsg.content = [{ type: "text", text: thinkingText }];
387
+ }
388
+ }
389
+ else {
390
+ // Use the signature from the first thinking block if available (for llama.cpp server + gpt-oss)
391
+ const signature = thinkingBlocks[0].thinkingSignature;
392
+ if (signature && signature.length > 0) {
393
+ assistantMsg[signature] = thinkingBlocks.map((b) => b.thinking).join("\n");
394
+ }
395
+ }
396
+ }
397
+ const toolCalls = msg.content.filter((b) => b.type === "toolCall");
398
+ if (toolCalls.length > 0) {
399
+ assistantMsg.tool_calls = toolCalls.map((tc) => ({
400
+ id: normalizeMistralToolId(tc.id, compat.requiresMistralToolIds),
401
+ type: "function",
402
+ function: {
403
+ name: tc.name,
404
+ arguments: JSON.stringify(tc.arguments),
405
+ },
406
+ }));
407
+ }
408
+ // Skip assistant messages that have no content and no tool calls.
409
+ // Mistral explicitly requires "either content or tool_calls, but not none".
410
+ // Other providers also don't accept empty assistant messages.
411
+ // This handles aborted assistant responses that got no content.
412
+ const content = assistantMsg.content;
413
+ const hasContent = content !== null &&
414
+ content !== undefined &&
415
+ (typeof content === "string" ? content.length > 0 : content.length > 0);
416
+ if (!hasContent && !assistantMsg.tool_calls) {
417
+ continue;
418
+ }
419
+ params.push(assistantMsg);
420
+ }
421
+ else if (msg.role === "toolResult") {
422
+ // Extract text and image content
423
+ const textResult = msg.content
424
+ .filter((c) => c.type === "text")
425
+ .map((c) => c.text)
426
+ .join("\n");
427
+ const hasImages = msg.content.some((c) => c.type === "image");
428
+ // Always send tool result with text (or placeholder if only images)
429
+ const hasText = textResult.length > 0;
430
+ // Some providers (e.g. Mistral) require the 'name' field in tool results
431
+ const toolResultMsg = {
432
+ role: "tool",
433
+ content: sanitizeSurrogates(hasText ? textResult : "(see attached image)"),
434
+ tool_call_id: normalizeMistralToolId(msg.toolCallId, compat.requiresMistralToolIds),
435
+ };
436
+ if (compat.requiresToolResultName && msg.toolName) {
437
+ toolResultMsg.name = msg.toolName;
438
+ }
439
+ params.push(toolResultMsg);
440
+ // If there are images and model supports them, send a follow-up user message with images
441
+ if (hasImages && model.input.includes("image")) {
442
+ const contentBlocks = [];
443
+ // Add text prefix
444
+ contentBlocks.push({
445
+ type: "text",
446
+ text: "Attached image(s) from tool result:",
447
+ });
448
+ // Add images
449
+ for (const block of msg.content) {
450
+ if (block.type === "image") {
451
+ contentBlocks.push({
452
+ type: "image_url",
453
+ image_url: {
454
+ url: `data:${block.mimeType};base64,${block.data}`,
455
+ },
456
+ });
457
+ }
458
+ }
459
+ params.push({
460
+ role: "user",
461
+ content: contentBlocks,
462
+ });
463
+ }
464
+ }
465
+ lastRole = msg.role;
466
+ }
467
+ return params;
468
+ }
469
+ function convertTools(tools) {
470
+ return tools.map((tool) => ({
471
+ type: "function",
472
+ function: {
473
+ name: tool.name,
474
+ description: tool.description,
475
+ parameters: tool.parameters, // TypeBox already generates JSON Schema
476
+ },
477
+ }));
478
+ }
479
+ function mapStopReason(reason) {
480
+ if (reason === null)
481
+ return "stop";
482
+ switch (reason) {
483
+ case "stop":
484
+ return "stop";
485
+ case "length":
486
+ return "length";
487
+ case "function_call":
488
+ case "tool_calls":
489
+ return "toolUse";
490
+ case "content_filter":
491
+ return "error";
492
+ default: {
493
+ const _exhaustive = reason;
494
+ throw new Error(`Unhandled stop reason: ${_exhaustive}`);
495
+ }
496
+ }
497
+ }
498
+ /**
499
+ * Detect compatibility settings from baseUrl for known providers.
500
+ * Returns a fully resolved OpenAICompat object with all fields set.
501
+ */
502
+ function detectCompatFromUrl(baseUrl) {
503
+ const isNonStandard = baseUrl.includes("cerebras.ai") ||
504
+ baseUrl.includes("api.x.ai") ||
505
+ baseUrl.includes("mistral.ai") ||
506
+ baseUrl.includes("chutes.ai");
507
+ const useMaxTokens = baseUrl.includes("mistral.ai") || baseUrl.includes("chutes.ai");
508
+ const isGrok = baseUrl.includes("api.x.ai");
509
+ const isMistral = baseUrl.includes("mistral.ai");
510
+ return {
511
+ supportsStore: !isNonStandard,
512
+ supportsDeveloperRole: !isNonStandard,
513
+ supportsReasoningEffort: !isGrok,
514
+ maxTokensField: useMaxTokens ? "max_tokens" : "max_completion_tokens",
515
+ requiresToolResultName: isMistral,
516
+ requiresAssistantAfterToolResult: false, // Mistral no longer requires this as of Dec 2024
517
+ requiresThinkingAsText: isMistral,
518
+ requiresMistralToolIds: isMistral,
519
+ };
520
+ }
521
+ /**
522
+ * Get resolved compatibility settings for a model.
523
+ * Uses explicit model.compat if provided, otherwise auto-detects from URL.
524
+ */
525
+ function getCompat(model) {
526
+ const detected = detectCompatFromUrl(model.baseUrl);
527
+ if (!model.compat)
528
+ return detected;
529
+ return {
530
+ supportsStore: model.compat.supportsStore ?? detected.supportsStore,
531
+ supportsDeveloperRole: model.compat.supportsDeveloperRole ?? detected.supportsDeveloperRole,
532
+ supportsReasoningEffort: model.compat.supportsReasoningEffort ?? detected.supportsReasoningEffort,
533
+ maxTokensField: model.compat.maxTokensField ?? detected.maxTokensField,
534
+ requiresToolResultName: model.compat.requiresToolResultName ?? detected.requiresToolResultName,
535
+ requiresAssistantAfterToolResult: model.compat.requiresAssistantAfterToolResult ?? detected.requiresAssistantAfterToolResult,
536
+ requiresThinkingAsText: model.compat.requiresThinkingAsText ?? detected.requiresThinkingAsText,
537
+ requiresMistralToolIds: model.compat.requiresMistralToolIds ?? detected.requiresMistralToolIds,
538
+ };
539
+ }
540
+ //# sourceMappingURL=openai-completions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-completions.js","sourceRoot":"","sources":["../../src/providers/openai-completions.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAU5B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAe7C,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;;GAGG;AACH,SAAS,sBAAsB,CAAC,EAAU,EAAE,SAAkB,EAAU;IACvE,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,qCAAqC;IACrC,IAAI,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IACjD,wCAAwC;IACxC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,4EAA4E;QAC5E,MAAM,OAAO,GAAG,WAAW,CAAC;QAC5B,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,UAAU,CAAC;AAAA,CAClB;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,QAAmB,EAAW;IACrD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACb,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;gBAC5D,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC;AAAA,CACb;AAOD,MAAM,CAAC,MAAM,uBAAuB,GAAyC,CAC5E,KAAkC,EAClC,OAAgB,EAChB,OAAkC,EACJ,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,2BAA2B,EAAE,CAAC;IAEjD,CAAC,KAAK,IAAI,EAAE,CAAC;QACZ,MAAM,MAAM,GAAqB;YAChC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,EAAE;YACX,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,EAAE;YACf,KAAK,EAAE;gBACN,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC;gBACb,WAAW,EAAE,CAAC;gBACd,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;aACpE;YACD,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC;QAEF,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/F,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAEhD,IAAI,YAAY,GAAiF,IAAI,CAAC;YACtG,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;YAC9B,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3C,MAAM,kBAAkB,GAAG,CAAC,KAA2B,EAAE,EAAE,CAAC;gBAC3D,IAAI,KAAK,EAAE,CAAC;oBACX,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC3B,MAAM,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,UAAU;4BAChB,YAAY,EAAE,UAAU,EAAE;4BAC1B,OAAO,EAAE,KAAK,CAAC,IAAI;4BACnB,OAAO,EAAE,MAAM;yBACf,CAAC,CAAC;oBACJ,CAAC;yBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wBACtC,MAAM,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,cAAc;4BACpB,YAAY,EAAE,UAAU,EAAE;4BAC1B,OAAO,EAAE,KAAK,CAAC,QAAQ;4BACvB,OAAO,EAAE,MAAM;yBACf,CAAC,CAAC;oBACJ,CAAC;yBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wBACtC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;wBACxD,OAAO,KAAK,CAAC,WAAW,CAAC;wBACzB,MAAM,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,cAAc;4BACpB,YAAY,EAAE,UAAU,EAAE;4BAC1B,QAAQ,EAAE,KAAK;4BACf,OAAO,EAAE,MAAM;yBACf,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC;YAAA,CACD,CAAC;YAEF,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;gBACxC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBACjB,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,EAAE,aAAa,IAAI,CAAC,CAAC;oBAC3E,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,yBAAyB,EAAE,gBAAgB,IAAI,CAAC,CAAC;oBACrF,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC;oBAC9D,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,eAAe,CAAC;oBAC5E,MAAM,CAAC,KAAK,GAAG;wBACd,sFAAsF;wBACtF,KAAK;wBACL,MAAM,EAAE,YAAY;wBACpB,SAAS,EAAE,YAAY;wBACvB,UAAU,EAAE,CAAC;wBACb,wEAAwE;wBACxE,qEAAqE;wBACrE,WAAW,EAAE,KAAK,GAAG,YAAY,GAAG,YAAY;wBAChD,IAAI,EAAE;4BACL,KAAK,EAAE,CAAC;4BACR,MAAM,EAAE,CAAC;4BACT,SAAS,EAAE,CAAC;4BACZ,UAAU,EAAE,CAAC;4BACb,KAAK,EAAE,CAAC;yBACR;qBACD,CAAC;oBACF,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBACpC,CAAC;gBAED,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,MAAM;oBAAE,SAAS;gBAEtB,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;oBAC1B,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBACzD,CAAC;gBAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAClB,IACC,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI;wBAC7B,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS;wBAClC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAC9B,CAAC;wBACF,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BACnD,kBAAkB,CAAC,YAAY,CAAC,CAAC;4BACjC,YAAY,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;4BAC1C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;4BAClC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;wBAClF,CAAC;wBAED,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BAClC,YAAY,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;4BAC1C,MAAM,CAAC,IAAI,CAAC;gCACX,IAAI,EAAE,YAAY;gCAClB,YAAY,EAAE,UAAU,EAAE;gCAC1B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;gCAC3B,OAAO,EAAE,MAAM;6BACf,CAAC,CAAC;wBACJ,CAAC;oBACF,CAAC;oBAED,oEAAoE;oBACpE,mDAAmD;oBACnD,MAAM,eAAe,GAAG,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;oBAC3D,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;wBACrC,IACE,MAAM,CAAC,KAAa,CAAC,KAAK,CAAC,KAAK,IAAI;4BACpC,MAAM,CAAC,KAAa,CAAC,KAAK,CAAC,KAAK,SAAS;4BACzC,MAAM,CAAC,KAAa,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EACtC,CAAC;4BACF,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gCACvD,kBAAkB,CAAC,YAAY,CAAC,CAAC;gCACjC,YAAY,GAAG;oCACd,IAAI,EAAE,UAAU;oCAChB,QAAQ,EAAE,EAAE;oCACZ,iBAAiB,EAAE,KAAK;iCACxB,CAAC;gCACF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gCAClC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;4BACtF,CAAC;4BAED,IAAI,YAAY,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gCACtC,MAAM,KAAK,GAAI,MAAM,CAAC,KAAa,CAAC,KAAK,CAAC,CAAC;gCAC3C,YAAY,CAAC,QAAQ,IAAI,KAAK,CAAC;gCAC/B,MAAM,CAAC,IAAI,CAAC;oCACX,IAAI,EAAE,gBAAgB;oCACtB,YAAY,EAAE,UAAU,EAAE;oCAC1B,KAAK;oCACL,OAAO,EAAE,MAAM;iCACf,CAAC,CAAC;4BACJ,CAAC;wBACF,CAAC;oBACF,CAAC;oBAED,IAAI,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;wBAC/B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;4BAChD,IACC,CAAC,YAAY;gCACb,YAAY,CAAC,IAAI,KAAK,UAAU;gCAChC,CAAC,QAAQ,CAAC,EAAE,IAAI,YAAY,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,EAC/C,CAAC;gCACF,kBAAkB,CAAC,YAAY,CAAC,CAAC;gCACjC,YAAY,GAAG;oCACd,IAAI,EAAE,UAAU;oCAChB,EAAE,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE;oCACrB,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE;oCACnC,SAAS,EAAE,EAAE;oCACb,WAAW,EAAE,EAAE;iCACf,CAAC;gCACF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gCAClC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;4BACtF,CAAC;4BAED,IAAI,YAAY,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gCACtC,IAAI,QAAQ,CAAC,EAAE;oCAAE,YAAY,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;gCAC/C,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI;oCAAE,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;gCACxE,IAAI,KAAK,GAAG,EAAE,CAAC;gCACf,IAAI,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;oCAClC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;oCACpC,YAAY,CAAC,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;oCACxD,YAAY,CAAC,SAAS,GAAG,kBAAkB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;gCACvE,CAAC;gCACD,MAAM,CAAC,IAAI,CAAC;oCACX,IAAI,EAAE,gBAAgB;oCACtB,YAAY,EAAE,UAAU,EAAE;oCAC1B,KAAK;oCACL,OAAO,EAAE,MAAM;iCACf,CAAC,CAAC;4BACJ,CAAC;wBACF,CAAC;oBACF,CAAC;gBACF,CAAC;YACF,CAAC;YAED,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAEjC,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACxC,CAAC;YAED,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;gBACtE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC9C,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1E,MAAM,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAQ,KAAa,CAAC,KAAK,CAAC;YAChE,MAAM,CAAC,UAAU,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YACnE,MAAM,CAAC,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACrF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACzE,MAAM,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;IAAA,CACD,CAAC,EAAE,CAAC;IAEL,OAAO,MAAM,CAAC;AAAA,CACd,CAAC;AAEF,SAAS,YAAY,CAAC,KAAkC,EAAE,OAAgB,EAAE,MAAe,EAAE;IAC5F,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACd,gGAAgG,CAChG,CAAC;QACH,CAAC;QACD,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACrC,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IACrC,IAAI,KAAK,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QACzC,gFAAgF;QAChF,4FAA4F;QAC5F,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAClG,OAAO,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QACxD,OAAO,CAAC,eAAe,CAAC,GAAG,oBAAoB,CAAC;IACjD,CAAC;IAED,OAAO,IAAI,MAAM,CAAC;QACjB,MAAM;QACN,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,uBAAuB,EAAE,IAAI;QAC7B,cAAc,EAAE,OAAO;KACvB,CAAC,CAAC;AAAA,CACH;AAED,SAAS,WAAW,CAAC,KAAkC,EAAE,OAAgB,EAAE,OAAkC,EAAE;IAC9G,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEzD,MAAM,MAAM,GAAgE;QAC3E,KAAK,EAAE,KAAK,CAAC,EAAE;QACf,QAAQ;QACR,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;KACvC,CAAC;IAEF,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;QACxB,IAAI,MAAM,CAAC,cAAc,KAAK,YAAY,EAAE,CAAC;YAC3C,MAAc,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;QAChD,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC;QAClD,CAAC;IACF,CAAC;IAED,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;SAAM,IAAI,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,mGAAmG;QACnG,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;QACzB,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IACzC,CAAC;IAED,IAAI,OAAO,EAAE,eAAe,IAAI,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,uBAAuB,EAAE,CAAC;QACnF,MAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IACnD,CAAC;IAED,OAAO,MAAM,CAAC;AAAA,CACd;AAED,SAAS,eAAe,CACvB,KAAkC,EAClC,OAAgB,EAChB,MAA8B,EACC;IAC/B,MAAM,MAAM,GAAiC,EAAE,CAAC;IAEhD,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAEvE,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,gBAAgB,GAAG,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,qBAAqB,CAAC;QACzE,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,QAAQ,GAAkB,IAAI,CAAC;IAEnC,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACvC,+FAA+F;QAC/F,yDAAyD;QACzD,IAAI,MAAM,CAAC,gCAAgC,IAAI,QAAQ,KAAK,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACjG,MAAM,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,oCAAoC;aAC7C,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC;iBACxC,CAAC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACP,MAAM,OAAO,GAAgC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAA6B,EAAE,CAAC;oBACjG,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC1B,OAAO;4BACN,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;yBACK,CAAC;oBAC3C,CAAC;yBAAM,CAAC;wBACP,OAAO;4BACN,IAAI,EAAE,WAAW;4BACjB,SAAS,EAAE;gCACV,GAAG,EAAE,QAAQ,IAAI,CAAC,QAAQ,WAAW,IAAI,CAAC,IAAI,EAAE;6BAChD;yBACwC,CAAC;oBAC5C,CAAC;gBAAA,CACD,CAAC,CAAC;gBACH,MAAM,eAAe,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;oBACrD,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;oBAC/C,CAAC,CAAC,OAAO,CAAC;gBACX,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAS;gBAC3C,MAAM,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,eAAe;iBACxB,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACrC,oFAAoF;YACpF,MAAM,YAAY,GAAwC;gBACzD,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;aAC5D,CAAC;YAEF,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAkB,CAAC;YACjF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,uEAAuE;gBACvE,2EAA2E;gBAC3E,IAAI,KAAK,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;oBACzC,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnF,CAAC;qBAAM,CAAC;oBACP,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;wBAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBAAA,CAC1D,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;YAED,yBAAyB;YACzB,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAsB,CAAC;YAC7F,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,IAAI,MAAM,CAAC,sBAAsB,EAAE,CAAC;oBACnC,6DAA6D;oBAC7D,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,QAAQ,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpG,MAAM,WAAW,GAAG,YAAY,CAAC,OAAuD,CAAC;oBACzF,IAAI,WAAW,EAAE,CAAC;wBACjB,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;oBAC3D,CAAC;yBAAM,CAAC;wBACP,YAAY,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;oBAC/D,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,gGAAgG;oBAChG,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;oBACtD,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACtC,YAAoB,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACrF,CAAC;gBACF,CAAC;YACF,CAAC;YAED,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAe,CAAC;YACjF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,YAAY,CAAC,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAChD,EAAE,EAAE,sBAAsB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,sBAAsB,CAAC;oBAChE,IAAI,EAAE,UAAmB;oBACzB,QAAQ,EAAE;wBACT,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC;qBACvC;iBACD,CAAC,CAAC,CAAC;YACL,CAAC;YACD,kEAAkE;YAClE,4EAA4E;YAC5E,8DAA8D;YAC9D,gEAAgE;YAChE,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;YACrC,MAAM,UAAU,GACf,OAAO,KAAK,IAAI;gBAChB,OAAO,KAAK,SAAS;gBACrB,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACzE,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC7C,SAAS;YACV,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACtC,iCAAiC;YACjC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO;iBAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;iBAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAS,CAAC,IAAI,CAAC;iBAC3B,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;YAE9D,oEAAoE;YACpE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;YACtC,yEAAyE;YACzE,MAAM,aAAa,GAAmC;gBACrD,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC;gBAC1E,YAAY,EAAE,sBAAsB,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,sBAAsB,CAAC;aACnF,CAAC;YACF,IAAI,MAAM,CAAC,sBAAsB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAClD,aAAqB,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC5C,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE3B,yFAAyF;YACzF,IAAI,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChD,MAAM,aAAa,GAEf,EAAE,CAAC;gBAEP,kBAAkB;gBAClB,aAAa,CAAC,IAAI,CAAC;oBAClB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,qCAAqC;iBAC3C,CAAC,CAAC;gBAEH,aAAa;gBACb,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBACjC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC5B,aAAa,CAAC,IAAI,CAAC;4BAClB,IAAI,EAAE,WAAW;4BACjB,SAAS,EAAE;gCACV,GAAG,EAAE,QAAS,KAAa,CAAC,QAAQ,WAAY,KAAa,CAAC,IAAI,EAAE;6BACpE;yBACD,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,aAAa;iBACtB,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAED,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,OAAO,MAAM,CAAC;AAAA,CACd;AAED,SAAS,YAAY,CAAC,KAAa,EAAgD;IAClF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3B,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACT,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAiB,EAAE,wCAAwC;SAC5E;KACD,CAAC,CAAC,CAAC;AAAA,CACJ;AAED,SAAS,aAAa,CAAC,MAAmD,EAAc;IACvF,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACnC,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,MAAM;YACV,OAAO,MAAM,CAAC;QACf,KAAK,QAAQ;YACZ,OAAO,QAAQ,CAAC;QACjB,KAAK,eAAe,CAAC;QACrB,KAAK,YAAY;YAChB,OAAO,SAAS,CAAC;QAClB,KAAK,gBAAgB;YACpB,OAAO,OAAO,CAAC;QAChB,SAAS,CAAC;YACT,MAAM,WAAW,GAAU,MAAM,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,0BAA0B,WAAW,EAAE,CAAC,CAAC;QAC1D,CAAC;IACF,CAAC;AAAA,CACD;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,OAAe,EAA0B;IACrE,MAAM,aAAa,GAClB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAE/B,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAErF,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE5C,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEjD,OAAO;QACN,aAAa,EAAE,CAAC,aAAa;QAC7B,qBAAqB,EAAE,CAAC,aAAa;QACrC,uBAAuB,EAAE,CAAC,MAAM;QAChC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,uBAAuB;QACrE,sBAAsB,EAAE,SAAS;QACjC,gCAAgC,EAAE,KAAK,EAAE,iDAAiD;QAC1F,sBAAsB,EAAE,SAAS;QACjC,sBAAsB,EAAE,SAAS;KACjC,CAAC;AAAA,CACF;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,KAAkC,EAA0B;IAC9E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAEnC,OAAO;QACN,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa;QACnE,qBAAqB,EAAE,KAAK,CAAC,MAAM,CAAC,qBAAqB,IAAI,QAAQ,CAAC,qBAAqB;QAC3F,uBAAuB,EAAE,KAAK,CAAC,MAAM,CAAC,uBAAuB,IAAI,QAAQ,CAAC,uBAAuB;QACjG,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc;QACtE,sBAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,sBAAsB,IAAI,QAAQ,CAAC,sBAAsB;QAC9F,gCAAgC,EAC/B,KAAK,CAAC,MAAM,CAAC,gCAAgC,IAAI,QAAQ,CAAC,gCAAgC;QAC3F,sBAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,sBAAsB,IAAI,QAAQ,CAAC,sBAAsB;QAC9F,sBAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,sBAAsB,IAAI,QAAQ,CAAC,sBAAsB;KAC9F,CAAC;AAAA,CACF"}
@@ -0,0 +1,14 @@
1
+ import type { FetchFunction, StreamFunction, StreamOptions } from "../types.js";
2
+ export interface OpenAIResponsesOptions extends StreamOptions {
3
+ reasoningEffort?: "minimal" | "low" | "medium" | "high" | "xhigh";
4
+ reasoningSummary?: "auto" | "detailed" | "concise" | null;
5
+ /** Custom fetch for OAuth/proxy scenarios */
6
+ fetch?: FetchFunction;
7
+ /** Instructions for Codex API (replaces system prompt in body) */
8
+ instructions?: string;
9
+ }
10
+ /**
11
+ * Generate function for OpenAI Responses API
12
+ */
13
+ export declare const streamOpenAIResponses: StreamFunction<"openai-responses">;
14
+ //# sourceMappingURL=openai-responses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-responses.d.ts","sourceRoot":"","sources":["../../src/providers/openai-responses.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAIX,aAAa,EAGb,cAAc,EACd,aAAa,EAKb,MAAM,aAAa,CAAC;AAQrB,MAAM,WAAW,sBAAuB,SAAQ,aAAa;IAC5D,eAAe,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAClE,gBAAgB,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1D,6CAA6C;IAC7C,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAAC,kBAAkB,CA0UpE,CAAC"}