@propio-ai/providers 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.
- package/LICENSE +21 -0
- package/README.md +85 -0
- package/dist/config.d.ts +91 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -0
- package/dist/configFile.d.ts +22 -0
- package/dist/configFile.d.ts.map +1 -0
- package/dist/configFile.js +33 -0
- package/dist/configFile.js.map +1 -0
- package/dist/configValidation.d.ts +34 -0
- package/dist/configValidation.d.ts.map +1 -0
- package/dist/configValidation.js +185 -0
- package/dist/configValidation.js.map +1 -0
- package/dist/diagnostics.d.ts +29 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +9 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/factory.d.ts +56 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +162 -0
- package/dist/factory.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/interface.d.ts +36 -0
- package/dist/interface.d.ts.map +1 -0
- package/dist/interface.js +2 -0
- package/dist/interface.js.map +1 -0
- package/dist/internal/baseProvider.d.ts +20 -0
- package/dist/internal/baseProvider.d.ts.map +1 -0
- package/dist/internal/baseProvider.js +13 -0
- package/dist/internal/baseProvider.js.map +1 -0
- package/dist/internal/capabilities.d.ts +4 -0
- package/dist/internal/capabilities.d.ts.map +1 -0
- package/dist/internal/capabilities.js +12 -0
- package/dist/internal/capabilities.js.map +1 -0
- package/dist/internal/jsonFile.d.ts +11 -0
- package/dist/internal/jsonFile.d.ts.map +1 -0
- package/dist/internal/jsonFile.js +78 -0
- package/dist/internal/jsonFile.js.map +1 -0
- package/dist/internal/openAiCompatibleProvider.d.ts +44 -0
- package/dist/internal/openAiCompatibleProvider.d.ts.map +1 -0
- package/dist/internal/openAiCompatibleProvider.js +93 -0
- package/dist/internal/openAiCompatibleProvider.js.map +1 -0
- package/dist/internal/openAiStream.d.ts +13 -0
- package/dist/internal/openAiStream.d.ts.map +1 -0
- package/dist/internal/openAiStream.js +85 -0
- package/dist/internal/openAiStream.js.map +1 -0
- package/dist/internal/shared.d.ts +79 -0
- package/dist/internal/shared.d.ts.map +1 -0
- package/dist/internal/shared.js +250 -0
- package/dist/internal/shared.js.map +1 -0
- package/dist/internal/withRetry.d.ts +25 -0
- package/dist/internal/withRetry.d.ts.map +1 -0
- package/dist/internal/withRetry.js +46 -0
- package/dist/internal/withRetry.js.map +1 -0
- package/dist/providers/anthropic.d.ts +32 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +435 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/bedrock.d.ts +67 -0
- package/dist/providers/bedrock.d.ts.map +1 -0
- package/dist/providers/bedrock.js +442 -0
- package/dist/providers/bedrock.js.map +1 -0
- package/dist/providers/cloudflare.d.ts +40 -0
- package/dist/providers/cloudflare.d.ts.map +1 -0
- package/dist/providers/cloudflare.js +115 -0
- package/dist/providers/cloudflare.js.map +1 -0
- package/dist/providers/gemini.d.ts +57 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +359 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/ollama.d.ts +67 -0
- package/dist/providers/ollama.d.ts.map +1 -0
- package/dist/providers/ollama.js +241 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/openrouter.d.ts +76 -0
- package/dist/providers/openrouter.d.ts.map +1 -0
- package/dist/providers/openrouter.js +571 -0
- package/dist/providers/openrouter.js.map +1 -0
- package/dist/providers/xai.d.ts +45 -0
- package/dist/providers/xai.d.ts.map +1 -0
- package/dist/providers/xai.js +371 -0
- package/dist/providers/xai.js.map +1 -0
- package/dist/types.d.ts +166 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +60 -0
- package/dist/types.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
import { ProviderError, ProviderAuthenticationError, } from "../types.js";
|
|
2
|
+
import { withRetry } from "../internal/withRetry.js";
|
|
3
|
+
import { buildOpenAIChatCompletionRequestBody, expandToolResultMessages, parseJsonMaybe, parseOpenAIStreamToolCallArguments, readSseDataLines, } from "../internal/shared.js";
|
|
4
|
+
import { consumeOpenAiChatCompletionsStream } from "../internal/openAiStream.js";
|
|
5
|
+
import { OpenAiCompatibleProvider, } from "../internal/openAiCompatibleProvider.js";
|
|
6
|
+
const XAI_CHAT_COMPLETIONS_API_URLS = [
|
|
7
|
+
"https://api.x.ai/v1/chat/completions",
|
|
8
|
+
"https://us-east-1.api.x.ai/v1/chat/completions",
|
|
9
|
+
"https://eu-west-1.api.x.ai/v1/chat/completions",
|
|
10
|
+
];
|
|
11
|
+
const XAI_RESPONSES_API_URLS = [
|
|
12
|
+
"https://api.x.ai/v1/responses",
|
|
13
|
+
"https://us-east-1.api.x.ai/v1/responses",
|
|
14
|
+
"https://eu-west-1.api.x.ai/v1/responses",
|
|
15
|
+
];
|
|
16
|
+
/**
|
|
17
|
+
* xAI (Grok) implementation of LLMProvider using the OpenAI-compatible API at api.x.ai.
|
|
18
|
+
*/
|
|
19
|
+
export class XaiProvider extends OpenAiCompatibleProvider {
|
|
20
|
+
constructor(options) {
|
|
21
|
+
super();
|
|
22
|
+
this.name = "xai";
|
|
23
|
+
const apiKey = options.apiKey ?? process.env.XAI_API_KEY ?? "";
|
|
24
|
+
if (!apiKey || apiKey.trim() === "") {
|
|
25
|
+
throw new ProviderAuthenticationError("xAI API key is required. Set XAI_API_KEY or pass apiKey in options.");
|
|
26
|
+
}
|
|
27
|
+
this.retryConfig = options.retryConfig;
|
|
28
|
+
this.onDiagnosticEvent = options.onDiagnosticEvent;
|
|
29
|
+
this.model = options.model;
|
|
30
|
+
this.configureCapabilities(options.contextWindowTokens);
|
|
31
|
+
this.apiKey = apiKey;
|
|
32
|
+
}
|
|
33
|
+
shouldRetryEndpoint(status) {
|
|
34
|
+
return status !== undefined && status >= 500 && status < 600;
|
|
35
|
+
}
|
|
36
|
+
isAbortError(translated) {
|
|
37
|
+
return (translated.message === "Request cancelled" ||
|
|
38
|
+
translated.originalError?.name === "AbortError");
|
|
39
|
+
}
|
|
40
|
+
shouldContinueToNextEndpoint(error, translated) {
|
|
41
|
+
return !(error instanceof ProviderError) && !this.isAbortError(translated);
|
|
42
|
+
}
|
|
43
|
+
async createEndpointResponseError(response) {
|
|
44
|
+
let errorBody = "";
|
|
45
|
+
try {
|
|
46
|
+
errorBody = await response.text();
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// ignore read failures
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
translated: this.translateError(new Error(errorBody || `HTTP ${response.status}`), response),
|
|
53
|
+
retryable: this.shouldRetryEndpoint(response.status),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
getContinuationError(error) {
|
|
57
|
+
const translated = error instanceof ProviderError ? error : this.translateError(error);
|
|
58
|
+
if (!this.shouldContinueToNextEndpoint(error, translated)) {
|
|
59
|
+
throw translated;
|
|
60
|
+
}
|
|
61
|
+
return translated;
|
|
62
|
+
}
|
|
63
|
+
async createPostResponse(apiUrls, body, signal) {
|
|
64
|
+
let lastError = null;
|
|
65
|
+
for (const apiUrl of apiUrls) {
|
|
66
|
+
try {
|
|
67
|
+
const response = await fetch(apiUrl, {
|
|
68
|
+
method: "POST",
|
|
69
|
+
headers: {
|
|
70
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
71
|
+
"Content-Type": "application/json",
|
|
72
|
+
},
|
|
73
|
+
body: JSON.stringify(body),
|
|
74
|
+
signal,
|
|
75
|
+
});
|
|
76
|
+
if (response.ok) {
|
|
77
|
+
return response;
|
|
78
|
+
}
|
|
79
|
+
const { translated, retryable } = await this.createEndpointResponseError(response);
|
|
80
|
+
if (!retryable) {
|
|
81
|
+
throw translated;
|
|
82
|
+
}
|
|
83
|
+
lastError = translated;
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
lastError = this.getContinuationError(error);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
throw lastError ?? new ProviderError("xAI request failed");
|
|
90
|
+
}
|
|
91
|
+
async *streamChat(request) {
|
|
92
|
+
try {
|
|
93
|
+
if (request.requestReasoning) {
|
|
94
|
+
yield* this.streamResponsesChat(request);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const body = this.createChatCompletionRequestBody(request);
|
|
98
|
+
const reader = await this.postStreamReader(request, XAI_CHAT_COMPLETIONS_API_URLS, body);
|
|
99
|
+
const toolCallsByIndex = new Map();
|
|
100
|
+
yield* this.consumeChatCompletionsStream(reader, toolCallsByIndex);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
if (error instanceof ProviderError)
|
|
104
|
+
throw error;
|
|
105
|
+
throw this.translateError(error);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async *streamResponsesChat(request) {
|
|
109
|
+
const body = this.createResponsesRequestBody(request);
|
|
110
|
+
const reader = await this.postStreamReader(request, XAI_RESPONSES_API_URLS, body);
|
|
111
|
+
yield* this.consumeResponsesStream(reader);
|
|
112
|
+
}
|
|
113
|
+
async postStreamReader(request, apiUrls, body) {
|
|
114
|
+
const response = await withRetry(() => this.createPostResponse(apiUrls, body, request.signal), this.buildRetryOptions(request, this.model, this.retryConfig, this.onDiagnosticEvent));
|
|
115
|
+
const reader = this.getResponseReader(response);
|
|
116
|
+
if (!reader) {
|
|
117
|
+
throw this.translateError(new Error("No response body"));
|
|
118
|
+
}
|
|
119
|
+
return reader;
|
|
120
|
+
}
|
|
121
|
+
createResponsesRequestBody(request) {
|
|
122
|
+
const body = {
|
|
123
|
+
model: request.model || this.model,
|
|
124
|
+
input: this.chatMessagesToResponsesInput(request.messages),
|
|
125
|
+
stream: true,
|
|
126
|
+
};
|
|
127
|
+
if (request.tools && request.tools.length > 0) {
|
|
128
|
+
body.tools = request.tools.map((tool) => this.chatToolToResponsesTool(tool));
|
|
129
|
+
}
|
|
130
|
+
return body;
|
|
131
|
+
}
|
|
132
|
+
chatToolToResponsesTool(tool) {
|
|
133
|
+
return {
|
|
134
|
+
type: "function",
|
|
135
|
+
name: tool.function.name,
|
|
136
|
+
description: tool.function.description,
|
|
137
|
+
parameters: tool.function.parameters ?? {
|
|
138
|
+
type: "object",
|
|
139
|
+
properties: {},
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
serializeToolArguments(args) {
|
|
144
|
+
return typeof args === "string" ? args : JSON.stringify(args ?? {});
|
|
145
|
+
}
|
|
146
|
+
chatMessagesToResponsesInput(messages) {
|
|
147
|
+
const input = [];
|
|
148
|
+
for (const msg of expandToolResultMessages(messages)) {
|
|
149
|
+
this.appendResponsesInputMessage(msg, input);
|
|
150
|
+
}
|
|
151
|
+
return input;
|
|
152
|
+
}
|
|
153
|
+
appendResponsesInputMessage(msg, input) {
|
|
154
|
+
if (msg.role === "system") {
|
|
155
|
+
input.push({ role: "system", content: msg.content ?? "" });
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
if (msg.role === "user") {
|
|
159
|
+
this.appendResponsesUserMessage(msg, input);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (msg.role === "assistant") {
|
|
163
|
+
this.appendResponsesAssistantMessage(msg, input);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (msg.role === "tool" && msg.toolCallId) {
|
|
167
|
+
input.push({
|
|
168
|
+
type: "function_call_output",
|
|
169
|
+
call_id: msg.toolCallId,
|
|
170
|
+
output: msg.content ?? "",
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
appendResponsesUserMessage(msg, input) {
|
|
175
|
+
const content = [];
|
|
176
|
+
if (msg.content) {
|
|
177
|
+
content.push({ type: "input_text", text: msg.content });
|
|
178
|
+
}
|
|
179
|
+
input.push({
|
|
180
|
+
role: "user",
|
|
181
|
+
content: content.length > 0 ? content : [{ type: "input_text", text: "" }],
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
appendResponsesAssistantMessage(msg, input) {
|
|
185
|
+
if (msg.content) {
|
|
186
|
+
input.push({ role: "assistant", content: msg.content });
|
|
187
|
+
}
|
|
188
|
+
if (!msg.toolCalls) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
for (const toolCall of msg.toolCalls) {
|
|
192
|
+
const callId = toolCall.id ?? `call_${toolCall.function.name}_${input.length}`;
|
|
193
|
+
input.push({
|
|
194
|
+
type: "function_call",
|
|
195
|
+
id: callId,
|
|
196
|
+
call_id: callId,
|
|
197
|
+
name: toolCall.function.name,
|
|
198
|
+
arguments: this.serializeToolArguments(toolCall.function.arguments),
|
|
199
|
+
status: "completed",
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
async *consumeResponsesStream(reader) {
|
|
204
|
+
const state = {
|
|
205
|
+
functionCallsByOutputIndex: new Map(),
|
|
206
|
+
hasFunctionCall: false,
|
|
207
|
+
};
|
|
208
|
+
let stopReason = "end_turn";
|
|
209
|
+
for await (const data of readSseDataLines(reader)) {
|
|
210
|
+
const result = this.parseResponsesStreamLine(data, state);
|
|
211
|
+
if (result.stopReason) {
|
|
212
|
+
stopReason = result.stopReason;
|
|
213
|
+
}
|
|
214
|
+
yield* result.events;
|
|
215
|
+
}
|
|
216
|
+
yield { type: "terminal", stopReason };
|
|
217
|
+
}
|
|
218
|
+
createChatCompletionRequestBody(request) {
|
|
219
|
+
return buildOpenAIChatCompletionRequestBody({
|
|
220
|
+
request,
|
|
221
|
+
model: this.model,
|
|
222
|
+
mapMessage: (msg) => this.chatMessageToOpenAIMessage(msg),
|
|
223
|
+
mapTool: (tool) => this.chatToolToOpenAITool(tool),
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
getResponseReader(response) {
|
|
227
|
+
return response.body?.getReader() ?? null;
|
|
228
|
+
}
|
|
229
|
+
async *consumeChatCompletionsStream(reader, toolCallsByIndex) {
|
|
230
|
+
yield* consumeOpenAiChatCompletionsStream(reader, toolCallsByIndex);
|
|
231
|
+
}
|
|
232
|
+
mapXaiResponsesStopReason(status, hasFunctionCall) {
|
|
233
|
+
if (hasFunctionCall) {
|
|
234
|
+
return "tool_use";
|
|
235
|
+
}
|
|
236
|
+
if (status === "incomplete") {
|
|
237
|
+
return "max_tokens";
|
|
238
|
+
}
|
|
239
|
+
if (status === "failed" || status === "cancelled") {
|
|
240
|
+
return "error";
|
|
241
|
+
}
|
|
242
|
+
return "end_turn";
|
|
243
|
+
}
|
|
244
|
+
buildResponsesToolCallsEvent(toolCall) {
|
|
245
|
+
const name = toolCall.name ?? "";
|
|
246
|
+
if (!name) {
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
249
|
+
const argsString = toolCall.arguments ?? toolCall.argsString ?? "";
|
|
250
|
+
const toolCalls = [
|
|
251
|
+
{
|
|
252
|
+
id: toolCall.call_id ?? toolCall.id,
|
|
253
|
+
function: {
|
|
254
|
+
name,
|
|
255
|
+
arguments: parseOpenAIStreamToolCallArguments(argsString),
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
];
|
|
259
|
+
return { type: "tool_calls", toolCalls };
|
|
260
|
+
}
|
|
261
|
+
parseResponsesStreamLine(data, state) {
|
|
262
|
+
if (data === "[DONE]") {
|
|
263
|
+
return { events: [] };
|
|
264
|
+
}
|
|
265
|
+
const event = parseJsonMaybe(data);
|
|
266
|
+
if (!event?.type) {
|
|
267
|
+
return { events: [] };
|
|
268
|
+
}
|
|
269
|
+
return this.handleResponsesStreamEvent(event, state);
|
|
270
|
+
}
|
|
271
|
+
// fallow-ignore-next-line complexity
|
|
272
|
+
handleResponsesStreamEvent(event, state) {
|
|
273
|
+
switch (event.type) {
|
|
274
|
+
case "response.reasoning_summary_text.delta":
|
|
275
|
+
case "response.reasoning_text.delta":
|
|
276
|
+
return this.handleResponsesReasoningDelta(event);
|
|
277
|
+
case "response.output_text.delta":
|
|
278
|
+
return this.handleResponsesOutputTextDelta(event);
|
|
279
|
+
case "response.output_item.added":
|
|
280
|
+
return this.handleResponsesOutputItemAdded(event, state);
|
|
281
|
+
case "response.function_call_arguments.delta":
|
|
282
|
+
return this.handleResponsesFunctionCallArgumentsDelta(event, state);
|
|
283
|
+
case "response.output_item.done":
|
|
284
|
+
return this.handleResponsesOutputItemDone(event, state);
|
|
285
|
+
case "response.completed":
|
|
286
|
+
case "response.done":
|
|
287
|
+
case "response.incomplete":
|
|
288
|
+
return this.handleResponsesTerminalEvent(event, state);
|
|
289
|
+
case "response.failed":
|
|
290
|
+
return {
|
|
291
|
+
events: [],
|
|
292
|
+
stopReason: this.mapXaiResponsesStopReason("failed", false),
|
|
293
|
+
};
|
|
294
|
+
default:
|
|
295
|
+
return { events: [] };
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
handleResponsesReasoningDelta(event) {
|
|
299
|
+
if (!event.delta) {
|
|
300
|
+
return { events: [] };
|
|
301
|
+
}
|
|
302
|
+
return { events: [{ type: "thinking_delta", delta: event.delta }] };
|
|
303
|
+
}
|
|
304
|
+
handleResponsesOutputTextDelta(event) {
|
|
305
|
+
if (!event.delta) {
|
|
306
|
+
return { events: [] };
|
|
307
|
+
}
|
|
308
|
+
return { events: [{ type: "assistant_text", delta: event.delta }] };
|
|
309
|
+
}
|
|
310
|
+
handleResponsesOutputItemAdded(event, state) {
|
|
311
|
+
const item = event.item;
|
|
312
|
+
if (item?.type !== "function_call") {
|
|
313
|
+
return { events: [] };
|
|
314
|
+
}
|
|
315
|
+
const outputIndex = event.output_index ?? 0;
|
|
316
|
+
state.functionCallsByOutputIndex.set(outputIndex, {
|
|
317
|
+
id: item.call_id ?? item.id,
|
|
318
|
+
name: item.name ?? "",
|
|
319
|
+
argsString: item.arguments ?? "",
|
|
320
|
+
});
|
|
321
|
+
return { events: [] };
|
|
322
|
+
}
|
|
323
|
+
handleResponsesFunctionCallArgumentsDelta(event, state) {
|
|
324
|
+
const accumulated = state.functionCallsByOutputIndex.get(event.output_index ?? 0);
|
|
325
|
+
if (accumulated && event.delta) {
|
|
326
|
+
accumulated.argsString += event.delta;
|
|
327
|
+
}
|
|
328
|
+
return { events: [] };
|
|
329
|
+
}
|
|
330
|
+
// fallow-ignore-next-line complexity
|
|
331
|
+
handleResponsesOutputItemDone(event, state) {
|
|
332
|
+
const item = event.item;
|
|
333
|
+
if (item?.type !== "function_call") {
|
|
334
|
+
return { events: [] };
|
|
335
|
+
}
|
|
336
|
+
const outputIndex = event.output_index ?? 0;
|
|
337
|
+
const accumulated = state.functionCallsByOutputIndex.get(outputIndex);
|
|
338
|
+
const toolCallsEvent = this.buildResponsesToolCallsEvent({
|
|
339
|
+
id: item.id,
|
|
340
|
+
call_id: item.call_id ?? accumulated?.id,
|
|
341
|
+
name: item.name ?? accumulated?.name,
|
|
342
|
+
arguments: item.arguments ?? accumulated?.argsString,
|
|
343
|
+
});
|
|
344
|
+
state.functionCallsByOutputIndex.delete(outputIndex);
|
|
345
|
+
if (!toolCallsEvent) {
|
|
346
|
+
return { events: [] };
|
|
347
|
+
}
|
|
348
|
+
state.hasFunctionCall = true;
|
|
349
|
+
return { events: [toolCallsEvent] };
|
|
350
|
+
}
|
|
351
|
+
handleResponsesTerminalEvent(event, state) {
|
|
352
|
+
const status = event.type === "response.incomplete"
|
|
353
|
+
? "incomplete"
|
|
354
|
+
: event.response?.status;
|
|
355
|
+
return {
|
|
356
|
+
events: [],
|
|
357
|
+
stopReason: this.mapXaiResponsesStopReason(status, state.hasFunctionCall),
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
translateError(error, response, _responseBody) {
|
|
361
|
+
return this.translateStandardOpenAiError(error, response, {
|
|
362
|
+
model: this.model,
|
|
363
|
+
authenticationMessage: "Invalid xAI API key",
|
|
364
|
+
rateLimitMessage: "xAI rate limit exceeded",
|
|
365
|
+
serviceErrorMessage: "xAI service error",
|
|
366
|
+
connectionErrorMessage: "Failed to connect to xAI API",
|
|
367
|
+
requestFailedMessage: "xAI request failed",
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
//# sourceMappingURL=xai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xai.js","sourceRoot":"","sources":["../../src/providers/xai.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool result representation
|
|
3
|
+
*/
|
|
4
|
+
export interface ToolResult {
|
|
5
|
+
toolCallId: string;
|
|
6
|
+
toolName: string;
|
|
7
|
+
content: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Provider-agnostic message type
|
|
11
|
+
*/
|
|
12
|
+
export interface ChatMessage {
|
|
13
|
+
role: "user" | "assistant" | "system" | "tool";
|
|
14
|
+
content: string;
|
|
15
|
+
/**
|
|
16
|
+
* Provider-specific reasoning state that some thinking models require to be
|
|
17
|
+
* replayed during tool-call loops. It is not rendered to users.
|
|
18
|
+
*/
|
|
19
|
+
reasoningContent?: string;
|
|
20
|
+
toolCalls?: ChatToolCall[];
|
|
21
|
+
toolCallId?: string;
|
|
22
|
+
toolResults?: ToolResult[];
|
|
23
|
+
images?: (Uint8Array | string)[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Tool call representation
|
|
27
|
+
*/
|
|
28
|
+
export interface ChatToolCall {
|
|
29
|
+
id?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Gemini thought signature required for function-call rounds on Gemini 3.
|
|
32
|
+
* Other providers ignore this field.
|
|
33
|
+
*/
|
|
34
|
+
thoughtSignature?: string;
|
|
35
|
+
function: {
|
|
36
|
+
name: string;
|
|
37
|
+
arguments: Record<string, any>;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Tool definition
|
|
42
|
+
*/
|
|
43
|
+
export interface ChatTool {
|
|
44
|
+
type: "function";
|
|
45
|
+
function: {
|
|
46
|
+
name: string;
|
|
47
|
+
description: string;
|
|
48
|
+
parameters: {
|
|
49
|
+
type: string;
|
|
50
|
+
properties?: Record<string, any>;
|
|
51
|
+
required?: string[];
|
|
52
|
+
[key: string]: any;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Chat request with all information needed for LLM request
|
|
58
|
+
*/
|
|
59
|
+
export interface ChatRequest {
|
|
60
|
+
messages: ChatMessage[];
|
|
61
|
+
model: string;
|
|
62
|
+
tools?: ChatTool[];
|
|
63
|
+
stream?: boolean;
|
|
64
|
+
signal?: AbortSignal;
|
|
65
|
+
iteration?: number;
|
|
66
|
+
/**
|
|
67
|
+
* Ask providers that support exposed reasoning to return live thinking
|
|
68
|
+
* tokens. Providers that do not support this should ignore it.
|
|
69
|
+
*/
|
|
70
|
+
requestReasoning?: boolean;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Chat response from provider
|
|
74
|
+
*/
|
|
75
|
+
export interface ChatResponse {
|
|
76
|
+
message: ChatMessage;
|
|
77
|
+
stopReason: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence";
|
|
78
|
+
}
|
|
79
|
+
export type ProviderReasoningSummarySource = "provider" | "agent";
|
|
80
|
+
export interface AssistantTextStreamEvent {
|
|
81
|
+
type: "assistant_text";
|
|
82
|
+
delta: string;
|
|
83
|
+
}
|
|
84
|
+
export interface ThinkingDeltaStreamEvent {
|
|
85
|
+
type: "thinking_delta";
|
|
86
|
+
delta: string;
|
|
87
|
+
}
|
|
88
|
+
export interface ToolCallsStreamEvent {
|
|
89
|
+
type: "tool_calls";
|
|
90
|
+
toolCalls: ChatToolCall[];
|
|
91
|
+
reasoningContent?: string;
|
|
92
|
+
}
|
|
93
|
+
export interface StatusStreamEvent {
|
|
94
|
+
type: "status";
|
|
95
|
+
status: string;
|
|
96
|
+
phase?: string;
|
|
97
|
+
}
|
|
98
|
+
export interface ReasoningSummaryStreamEvent {
|
|
99
|
+
type: "reasoning_summary";
|
|
100
|
+
summary: string;
|
|
101
|
+
source: ProviderReasoningSummarySource;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Normalized terminal event emitted when stream ends.
|
|
105
|
+
* Maps provider-specific stop reasons to a canonical set.
|
|
106
|
+
*/
|
|
107
|
+
export type StopReason = "end_turn" | "tool_use" | "max_tokens" | "stop_sequence" | "error";
|
|
108
|
+
export interface StreamTerminalEvent {
|
|
109
|
+
type: "terminal";
|
|
110
|
+
stopReason: StopReason;
|
|
111
|
+
rawProviderReason?: string;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Backward-compatible streaming chunk shape.
|
|
115
|
+
* New implementations should emit ChatStreamEvent variants with a `type`.
|
|
116
|
+
*/
|
|
117
|
+
export interface ChatChunk {
|
|
118
|
+
delta: string;
|
|
119
|
+
toolCalls?: ChatToolCall[];
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Streaming event model used across providers/agent runtime.
|
|
123
|
+
*/
|
|
124
|
+
export type ChatStreamEvent = AssistantTextStreamEvent | ThinkingDeltaStreamEvent | ToolCallsStreamEvent | StatusStreamEvent | ReasoningSummaryStreamEvent | StreamTerminalEvent | ChatChunk;
|
|
125
|
+
/**
|
|
126
|
+
* Base provider error class
|
|
127
|
+
*/
|
|
128
|
+
export declare class ProviderError extends Error {
|
|
129
|
+
originalError?: Error;
|
|
130
|
+
constructor(message: string, originalError?: Error);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Authentication error
|
|
134
|
+
*/
|
|
135
|
+
export declare class ProviderAuthenticationError extends ProviderError {
|
|
136
|
+
constructor(message: string, originalError?: Error);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Rate limit error with optional retry info
|
|
140
|
+
*/
|
|
141
|
+
export declare class ProviderRateLimitError extends ProviderError {
|
|
142
|
+
retryAfterSeconds?: number;
|
|
143
|
+
constructor(message: string, retryAfterSeconds?: number, originalError?: Error);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Capacity error for upstream resource exhaustion (e.g., OpenRouter 529)
|
|
147
|
+
*/
|
|
148
|
+
export declare class ProviderCapacityError extends ProviderError {
|
|
149
|
+
constructor(message: string, originalError?: Error);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Model not found error
|
|
153
|
+
*/
|
|
154
|
+
export declare class ProviderModelNotFoundError extends ProviderError {
|
|
155
|
+
modelName: string;
|
|
156
|
+
constructor(modelName: string, message: string, originalError?: Error);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Context length exceeded error. Thrown when the prompt exceeds the model's
|
|
160
|
+
* context window. The agent loop uses this signal to rebuild the prompt at
|
|
161
|
+
* a tighter retry level instead of surfacing the error to the user.
|
|
162
|
+
*/
|
|
163
|
+
export declare class ProviderContextLengthError extends ProviderError {
|
|
164
|
+
constructor(message: string, originalError?: Error);
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAChC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE;YACV,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACjC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;YACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;SACpB,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,eAAe,CAAC;CACtE;AAED,MAAM,MAAM,8BAA8B,GAAG,UAAU,GAAG,OAAO,CAAC;AAElE,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,8BAA8B,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB,UAAU,GACV,UAAU,GACV,YAAY,GACZ,eAAe,GACf,OAAO,CAAC;AAEZ,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,wBAAwB,GACxB,wBAAwB,GACxB,oBAAoB,GACpB,iBAAiB,GACjB,2BAA2B,GAC3B,mBAAmB,GACnB,SAAS,CAAC;AAEd;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;IAC/B,aAAa,CAAC,EAAE,KAAK,CAAC;gBAEjB,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK;CAKnD;AAED;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,aAAa;gBAChD,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK;CAInD;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;IAChD,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAGhC,OAAO,EAAE,MAAM,EACf,iBAAiB,CAAC,EAAE,MAAM,EAC1B,aAAa,CAAC,EAAE,KAAK;CAMxB;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,aAAa;gBAC1C,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK;CAInD;AAED;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,aAAa;IACpD,SAAS,EAAE,MAAM,CAAC;gBAEb,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK;CAKtE;AAED;;;;GAIG;AACH,qBAAa,0BAA2B,SAAQ,aAAa;gBAC/C,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK;CAInD"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base provider error class
|
|
3
|
+
*/
|
|
4
|
+
export class ProviderError extends Error {
|
|
5
|
+
constructor(message, originalError) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = "ProviderError";
|
|
8
|
+
this.originalError = originalError;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Authentication error
|
|
13
|
+
*/
|
|
14
|
+
export class ProviderAuthenticationError extends ProviderError {
|
|
15
|
+
constructor(message, originalError) {
|
|
16
|
+
super(message, originalError);
|
|
17
|
+
this.name = "ProviderAuthenticationError";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Rate limit error with optional retry info
|
|
22
|
+
*/
|
|
23
|
+
export class ProviderRateLimitError extends ProviderError {
|
|
24
|
+
constructor(message, retryAfterSeconds, originalError) {
|
|
25
|
+
super(message, originalError);
|
|
26
|
+
this.name = "ProviderRateLimitError";
|
|
27
|
+
this.retryAfterSeconds = retryAfterSeconds;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Capacity error for upstream resource exhaustion (e.g., OpenRouter 529)
|
|
32
|
+
*/
|
|
33
|
+
export class ProviderCapacityError extends ProviderError {
|
|
34
|
+
constructor(message, originalError) {
|
|
35
|
+
super(message, originalError);
|
|
36
|
+
this.name = "ProviderCapacityError";
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Model not found error
|
|
41
|
+
*/
|
|
42
|
+
export class ProviderModelNotFoundError extends ProviderError {
|
|
43
|
+
constructor(modelName, message, originalError) {
|
|
44
|
+
super(message, originalError);
|
|
45
|
+
this.name = "ProviderModelNotFoundError";
|
|
46
|
+
this.modelName = modelName;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Context length exceeded error. Thrown when the prompt exceeds the model's
|
|
51
|
+
* context window. The agent loop uses this signal to rebuild the prompt at
|
|
52
|
+
* a tighter retry level instead of surfacing the error to the user.
|
|
53
|
+
*/
|
|
54
|
+
export class ProviderContextLengthError extends ProviderError {
|
|
55
|
+
constructor(message, originalError) {
|
|
56
|
+
super(message, originalError);
|
|
57
|
+
this.name = "ProviderContextLengthError";
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAwJA;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAGtC,YAAY,OAAe,EAAE,aAAqB;QAChD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,aAAa;IAC5D,YAAY,OAAe,EAAE,aAAqB;QAChD,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,aAAa;IAGvD,YACE,OAAe,EACf,iBAA0B,EAC1B,aAAqB;QAErB,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC7C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,aAAa;IACtD,YAAY,OAAe,EAAE,aAAqB;QAChD,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,0BAA2B,SAAQ,aAAa;IAG3D,YAAY,SAAiB,EAAE,OAAe,EAAE,aAAqB;QACnE,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,0BAA2B,SAAQ,aAAa;IAC3D,YAAY,OAAe,EAAE,aAAqB;QAChD,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF"}
|