@providerkit/core 0.22.0 → 0.24.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/README.md +29 -7
- package/dist/auth/flows.d.ts.map +1 -1
- package/dist/auth/flows.js +5 -5
- package/dist/auth/flows.js.map +1 -1
- package/dist/auth/index.d.ts +1 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +1 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/oauth.d.ts +12 -0
- package/dist/auth/oauth.d.ts.map +1 -1
- package/dist/auth/oauth.js +19 -1
- package/dist/auth/oauth.js.map +1 -1
- package/dist/auth/token-source.d.ts +9 -3
- package/dist/auth/token-source.d.ts.map +1 -1
- package/dist/auth/token-source.js +24 -9
- package/dist/auth/token-source.js.map +1 -1
- package/dist/auth/with-token.d.ts +32 -0
- package/dist/auth/with-token.d.ts.map +1 -0
- package/dist/auth/with-token.js +88 -0
- package/dist/auth/with-token.js.map +1 -0
- package/dist/context.d.ts +39 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +119 -0
- package/dist/context.js.map +1 -1
- package/dist/errors.d.ts +12 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +44 -5
- package/dist/errors.js.map +1 -1
- package/dist/fallback.d.ts +45 -1
- package/dist/fallback.d.ts.map +1 -1
- package/dist/fallback.js +138 -75
- package/dist/fallback.js.map +1 -1
- package/dist/gate.d.ts +29 -0
- package/dist/gate.d.ts.map +1 -0
- package/dist/gate.js +96 -0
- package/dist/gate.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/key-pool.d.ts +21 -4
- package/dist/key-pool.d.ts.map +1 -1
- package/dist/key-pool.js +43 -12
- package/dist/key-pool.js.map +1 -1
- package/dist/presets.d.ts +7 -2
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +12 -2
- package/dist/presets.js.map +1 -1
- package/dist/providers/anthropic.d.ts +7 -0
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +83 -26
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/factory.d.ts +26 -0
- package/dist/providers/factory.d.ts.map +1 -1
- package/dist/providers/factory.js +41 -9
- package/dist/providers/factory.js.map +1 -1
- package/dist/providers/gemini.d.ts +6 -0
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +102 -27
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/openai.d.ts +7 -0
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +66 -15
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/responses.d.ts +11 -0
- package/dist/providers/responses.d.ts.map +1 -1
- package/dist/providers/responses.js +101 -53
- package/dist/providers/responses.js.map +1 -1
- package/dist/rate-limit.d.ts +10 -0
- package/dist/rate-limit.d.ts.map +1 -1
- package/dist/rate-limit.js +7 -1
- package/dist/rate-limit.js.map +1 -1
- package/dist/registry.d.ts +105 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +291 -0
- package/dist/registry.js.map +1 -0
- package/dist/retry.d.ts +11 -0
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +25 -12
- package/dist/retry.js.map +1 -1
- package/dist/tool-args.d.ts +22 -0
- package/dist/tool-args.d.ts.map +1 -1
- package/dist/tool-args.js +28 -0
- package/dist/tool-args.js.map +1 -1
- package/dist/tools.d.ts +8 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +2 -2
- package/dist/tools.js.map +1 -1
- package/dist/transport.d.ts +34 -4
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +77 -16
- package/dist/transport.js.map +1 -1
- package/dist/turn.d.ts +55 -0
- package/dist/turn.d.ts.map +1 -0
- package/dist/turn.js +125 -0
- package/dist/turn.js.map +1 -0
- package/dist/types.d.ts +21 -22
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -53
- package/dist/types.js.map +1 -1
- package/dist/watchdog.d.ts +2 -0
- package/dist/watchdog.d.ts.map +1 -1
- package/dist/watchdog.js +25 -6
- package/dist/watchdog.js.map +1 -1
- package/package.json +1 -1
- package/src/auth/flows.ts +5 -4
- package/src/auth/index.ts +1 -0
- package/src/auth/oauth.ts +23 -1
- package/src/auth/token-source.ts +30 -11
- package/src/auth/with-token.ts +100 -0
- package/src/context.ts +137 -2
- package/src/errors.ts +46 -6
- package/src/fallback.ts +173 -75
- package/src/gate.ts +152 -0
- package/src/index.ts +3 -0
- package/src/key-pool.ts +45 -13
- package/src/presets.ts +12 -2
- package/src/providers/anthropic.ts +93 -25
- package/src/providers/factory.ts +66 -21
- package/src/providers/gemini.ts +102 -28
- package/src/providers/openai.ts +71 -14
- package/src/providers/responses.ts +116 -51
- package/src/rate-limit.ts +31 -3
- package/src/registry.ts +420 -0
- package/src/retry.ts +41 -10
- package/src/tool-args.ts +44 -0
- package/src/tools.ts +10 -2
- package/src/transport.ts +97 -17
- package/src/turn.ts +166 -0
- package/src/types.ts +21 -62
- package/src/watchdog.ts +25 -6
|
@@ -18,12 +18,7 @@ import { createResponsesProvider } from "./responses.js";
|
|
|
18
18
|
import { PRESET_IDS, PROVIDER_PRESETS, } from "../presets.js";
|
|
19
19
|
import { withConfiguredFallbacks } from "../fallback.js";
|
|
20
20
|
export function createPresetProvider(id, config) {
|
|
21
|
-
|
|
22
|
-
// string — validate rather than index into undefined.
|
|
23
|
-
if (!(id in PROVIDER_PRESETS)) {
|
|
24
|
-
throw new Error(`[providerkit] Unknown provider preset "${id}". Valid ids: ${PRESET_IDS.join(", ")}`);
|
|
25
|
-
}
|
|
26
|
-
const preset = PROVIDER_PRESETS[id];
|
|
21
|
+
const preset = presetFor(id);
|
|
27
22
|
const chain = config.models?.length ? config.models : config.model ? undefined : preset.rotation;
|
|
28
23
|
if (chain && chain.length > 1) {
|
|
29
24
|
const { models: _models, fallbacks = [], ...single } = config;
|
|
@@ -36,7 +31,23 @@ export function createPresetProvider(id, config) {
|
|
|
36
31
|
],
|
|
37
32
|
});
|
|
38
33
|
}
|
|
39
|
-
const
|
|
34
|
+
const { models: _models, ...single } = config;
|
|
35
|
+
return withConfiguredFallbacks(presetAdapter(id, { ...single, model: chain?.[0] ?? config.model }), config);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The bare adapter for one preset and one model: the wire that serves the
|
|
39
|
+
* model, its auth style and the preset's quirks, and nothing around them. No
|
|
40
|
+
* fallbacks, no watchdog, no `models` chain. A registry builds one per
|
|
41
|
+
* (connection, model) and puts those layers around all of them once; calling
|
|
42
|
+
* `createPresetProvider` per model would nest a second pool and a second
|
|
43
|
+
* watchdog inside its own.
|
|
44
|
+
*
|
|
45
|
+
* The adapter's `id` is the preset id, because the OpenAI shape reads its
|
|
46
|
+
* effort dialect from it (`opencode-go`, `openrouter`, `deepseek`).
|
|
47
|
+
*/
|
|
48
|
+
export function presetAdapter(id, config) {
|
|
49
|
+
const preset = presetFor(id);
|
|
50
|
+
const model = config.model ?? preset.defaultModel;
|
|
40
51
|
if (!model) {
|
|
41
52
|
throw new Error(`[providerkit] Preset "${id}" has no defaultModel. Pass a model.`);
|
|
42
53
|
}
|
|
@@ -48,7 +59,16 @@ export function createPresetProvider(id, config) {
|
|
|
48
59
|
const headers = { ...preset.headers, ...config.headers };
|
|
49
60
|
const baseUrl = config.baseUrl ?? wire.baseUrl;
|
|
50
61
|
const maxTokens = config.maxTokens ?? preset.maxTokens;
|
|
51
|
-
|
|
62
|
+
// Every adapter builds its own pool and watchdog from these. The type leaves
|
|
63
|
+
// them out, but a wider object (a whole `PresetProviderConfig` in a variable)
|
|
64
|
+
// can still carry them, and the adapter would nest a second pool and a
|
|
65
|
+
// second watchdog inside the caller's. Cleared, it stays bare.
|
|
66
|
+
const baseConfig = {
|
|
67
|
+
...config,
|
|
68
|
+
fallbacks: undefined,
|
|
69
|
+
fallbackOptions: undefined,
|
|
70
|
+
watchdog: undefined,
|
|
71
|
+
};
|
|
52
72
|
let provider;
|
|
53
73
|
switch (wire.shape) {
|
|
54
74
|
case "anthropic":
|
|
@@ -119,7 +139,19 @@ export function createPresetProvider(id, config) {
|
|
|
119
139
|
});
|
|
120
140
|
break;
|
|
121
141
|
}
|
|
122
|
-
|
|
142
|
+
// Here rather than in `createPresetProvider`: the wire is resolved here, and
|
|
143
|
+
// the bare adapter is exported, so it must refuse on its own a per-call model
|
|
144
|
+
// it would post to the wrong endpoint. That 404 reads as an unknown model,
|
|
145
|
+
// and a pool benches the model for an hour.
|
|
146
|
+
return preset.routes ? refuseOtherWires(provider, preset, wire) : provider;
|
|
147
|
+
}
|
|
148
|
+
/** The table is closed (`satisfies`), but a caller may hold an id as a plain
|
|
149
|
+
* string. Validate rather than index into undefined. */
|
|
150
|
+
function presetFor(id) {
|
|
151
|
+
if (!(id in PROVIDER_PRESETS)) {
|
|
152
|
+
throw new Error(`[providerkit] Unknown provider preset "${id}". Valid ids: ${PRESET_IDS.join(", ")}`);
|
|
153
|
+
}
|
|
154
|
+
return PROVIDER_PRESETS[id];
|
|
123
155
|
}
|
|
124
156
|
/** The endpoint a model is served from: its route when the preset has one for
|
|
125
157
|
* it, else the preset's own. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/providers/factory.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,qEAAqE;AACrE,uEAAuE;AACvE,2EAA2E;AAC3E,yEAAyE;AACzE,0EAA0E;AAC1E,mCAAmC;AACnC,EAAE;AACF,sEAAsE;AACtE,2EAA2E;AAC3E,yEAAyE;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EACL,UAAU,EACV,gBAAgB,GAKjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,uBAAuB,EAA+B,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/providers/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,12 @@ export interface GeminiContent {
|
|
|
41
41
|
* and carry tool calls as `functionCall` parts with the thought signature
|
|
42
42
|
* beside them; tool results are role `user` with a `functionResponse` part
|
|
43
43
|
* naming the FUNCTION, since Gemini pairs a result to its call by name.
|
|
44
|
+
*
|
|
45
|
+
* A run of results is ONE user turn: Gemini answers a model turn's parallel
|
|
46
|
+
* calls with every response together, and spread over several turns it 400s
|
|
47
|
+
* that the response count does not match the call count. The responses go
|
|
48
|
+
* first, in call order, and the run's images follow them all, the way the
|
|
49
|
+
* OpenAI dialect places them.
|
|
44
50
|
*/
|
|
45
51
|
export declare function toGeminiContents(messages: readonly ChatMessage[]): {
|
|
46
52
|
system?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAYA,OAAO,EAA2B,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EAEN,aAAa,EACb,QAAQ,EAMT,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,YAAa,SAAQ,sBAAsB;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd;;;;;oFAKgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAkCD,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAqCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,GAAG;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B,CAqEA;AA+GD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,QAAQ,CAsOnE"}
|
package/dist/providers/gemini.js
CHANGED
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
// its own chain of thought on the next turn. Written straight against the REST
|
|
6
6
|
// wire rather than @google/genai, because this package ships zero dependencies
|
|
7
7
|
// and the SDK is a Node-shaped one.
|
|
8
|
+
import { repairHistory } from "../context.js";
|
|
8
9
|
import { ProviderError, streamCut, streamError } from "../errors.js";
|
|
9
10
|
import { schemaPrompt, toGeminiToolSchema } from "../schema.js";
|
|
10
|
-
import { parseToolArgs } from "../tool-args.js";
|
|
11
|
+
import { parseToolArgs, settleToolCalls } from "../tool-args.js";
|
|
11
12
|
import { streamSse, apiUrl } from "../transport.js";
|
|
12
13
|
import { withConfiguredFallbacks } from "../fallback.js";
|
|
13
14
|
const DEFAULT_BASE_URL = "https://generativelanguage.googleapis.com";
|
|
@@ -83,11 +84,21 @@ function toResponseObject(content) {
|
|
|
83
84
|
* and carry tool calls as `functionCall` parts with the thought signature
|
|
84
85
|
* beside them; tool results are role `user` with a `functionResponse` part
|
|
85
86
|
* naming the FUNCTION, since Gemini pairs a result to its call by name.
|
|
87
|
+
*
|
|
88
|
+
* A run of results is ONE user turn: Gemini answers a model turn's parallel
|
|
89
|
+
* calls with every response together, and spread over several turns it 400s
|
|
90
|
+
* that the response count does not match the call count. The responses go
|
|
91
|
+
* first, in call order, and the run's images follow them all, the way the
|
|
92
|
+
* OpenAI dialect places them.
|
|
86
93
|
*/
|
|
87
94
|
export function toGeminiContents(messages) {
|
|
88
95
|
let system = "";
|
|
89
96
|
const contents = [];
|
|
97
|
+
// The open run of tool results: its parts, and how many lead with a response.
|
|
98
|
+
let results;
|
|
90
99
|
for (const message of messages) {
|
|
100
|
+
if (message.role === "user" || message.role === "assistant")
|
|
101
|
+
results = undefined;
|
|
91
102
|
switch (message.role) {
|
|
92
103
|
case "system":
|
|
93
104
|
system = system ? `${system}\n\n${message.content}` : message.content;
|
|
@@ -123,23 +134,24 @@ export function toGeminiContents(messages) {
|
|
|
123
134
|
contents.push({ role: "model", parts });
|
|
124
135
|
break;
|
|
125
136
|
}
|
|
126
|
-
case "tool":
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
parts:
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
...(message.images ?? []).map((image) => ({
|
|
138
|
-
inlineData: { mimeType: image.mimeType, data: image.data },
|
|
139
|
-
})),
|
|
140
|
-
],
|
|
137
|
+
case "tool": {
|
|
138
|
+
if (!results) {
|
|
139
|
+
results = { parts: [], responses: 0 };
|
|
140
|
+
contents.push({ role: "user", parts: results.parts });
|
|
141
|
+
}
|
|
142
|
+
results.parts.splice(results.responses, 0, {
|
|
143
|
+
functionResponse: {
|
|
144
|
+
id: message.toolCallId,
|
|
145
|
+
name: message.name,
|
|
146
|
+
response: toResponseObject(message.content),
|
|
147
|
+
},
|
|
141
148
|
});
|
|
149
|
+
results.responses += 1;
|
|
150
|
+
for (const image of message.images ?? []) {
|
|
151
|
+
results.parts.push({ inlineData: { mimeType: image.mimeType, data: image.data } });
|
|
152
|
+
}
|
|
142
153
|
break;
|
|
154
|
+
}
|
|
143
155
|
}
|
|
144
156
|
}
|
|
145
157
|
return { ...(system ? { system } : {}), contents };
|
|
@@ -158,15 +170,66 @@ function toToolConfig(choice) {
|
|
|
158
170
|
return { functionCallingConfig: { mode: "ANY" } };
|
|
159
171
|
return { functionCallingConfig: { mode: "ANY", allowedFunctionNames: [choice.name] } };
|
|
160
172
|
}
|
|
161
|
-
|
|
173
|
+
/**
|
|
174
|
+
* Every finish reason Gemini documents (the generate-content reference, read
|
|
175
|
+
* 2026-10-19), decided one by one. Anything this switch did not name used to
|
|
176
|
+
* read as `stop`, so a call the model botched (`MALFORMED_FUNCTION_CALL`) or a
|
|
177
|
+
* turn that ended for no stated reason (`OTHER`) came back as a finished, empty
|
|
178
|
+
* answer. After a tool result, `requireContent` takes an empty `stop` as the
|
|
179
|
+
* model choosing to say nothing, so nothing retried it.
|
|
180
|
+
*/
|
|
181
|
+
function mapFinishReason(provider, reason) {
|
|
182
|
+
const fail = (kind, why) => {
|
|
183
|
+
throw new ProviderError(provider, kind, `${provider} ended the turn on ${reason}: ${why}`, {
|
|
184
|
+
code: reason,
|
|
185
|
+
});
|
|
186
|
+
};
|
|
162
187
|
switch (reason) {
|
|
188
|
+
case "STOP":
|
|
189
|
+
return "stop";
|
|
190
|
+
// The output cap. CONTINUATION is the same cap with a token to carry on,
|
|
191
|
+
// which this adapter never sends back.
|
|
163
192
|
case "MAX_TOKENS":
|
|
193
|
+
case "CONTINUATION":
|
|
164
194
|
return "length";
|
|
195
|
+
// A filter on what was said or drawn. The text so far stands and the
|
|
196
|
+
// finish says why it ended, as `content_filter` does on every wire. A
|
|
197
|
+
// retry would mostly meet the same filter.
|
|
165
198
|
case "SAFETY":
|
|
166
199
|
case "PROHIBITED_CONTENT":
|
|
200
|
+
case "BLOCKLIST":
|
|
201
|
+
case "SPII":
|
|
202
|
+
case "RECITATION":
|
|
203
|
+
case "LANGUAGE":
|
|
204
|
+
case "ESCALATION":
|
|
205
|
+
case "IMAGE_SAFETY":
|
|
206
|
+
case "IMAGE_PROHIBITED_CONTENT":
|
|
207
|
+
case "IMAGE_RECITATION":
|
|
167
208
|
return "content_filter";
|
|
209
|
+
// The request lost a thought signature, and the same request loses it
|
|
210
|
+
// again. A bug in what was sent, so nothing retries it.
|
|
211
|
+
case "MISSING_THOUGHT_SIGNATURE":
|
|
212
|
+
return fail("invalid", "the request is missing a thought signature");
|
|
213
|
+
// The account was limited for a policy violation. Benched like a refused
|
|
214
|
+
// key, so a key pool moves to another project.
|
|
215
|
+
case "PUP_LIMITED_DISABLED":
|
|
216
|
+
return fail("auth", "the account is limited or disabled");
|
|
217
|
+
// The model broke its own turn: a call it could not form, one with no tool
|
|
218
|
+
// offered, too many in a row, a malformed reply, an image it never made.
|
|
219
|
+
// The same request usually works on the next try.
|
|
220
|
+
case "MALFORMED_FUNCTION_CALL":
|
|
221
|
+
case "UNEXPECTED_TOOL_CALL":
|
|
222
|
+
case "TOO_MANY_TOOL_CALLS":
|
|
223
|
+
case "MALFORMED_RESPONSE":
|
|
224
|
+
case "NO_IMAGE":
|
|
225
|
+
return fail("overload", "the model broke its own turn");
|
|
226
|
+
// These say nothing about why, and a reason added after this list says
|
|
227
|
+
// nothing we can read. Neither proves the answer is whole.
|
|
228
|
+
case "OTHER":
|
|
229
|
+
case "IMAGE_OTHER":
|
|
230
|
+
case "FINISH_REASON_UNSPECIFIED":
|
|
168
231
|
default:
|
|
169
|
-
return "
|
|
232
|
+
return fail("overload", "it gave no reason that shows the answer is complete");
|
|
170
233
|
}
|
|
171
234
|
}
|
|
172
235
|
export function createGeminiProvider(config) {
|
|
@@ -178,7 +241,9 @@ export function createGeminiProvider(config) {
|
|
|
178
241
|
async *createStream(messages, tools, opts = {}) {
|
|
179
242
|
const effort = opts.effort ?? config.effort;
|
|
180
243
|
const maxTokens = opts.maxTokens ?? config.maxTokens;
|
|
181
|
-
|
|
244
|
+
// Repaired first: a result with no call, or a call with no result, is a
|
|
245
|
+
// 400 that loses the turn. See repairHistory.
|
|
246
|
+
const { system, contents } = toGeminiContents(repairHistory(messages).messages);
|
|
182
247
|
// A model id copied out of Gemini's docs is often already `models/…`, and
|
|
183
248
|
// the doubled segment 404s as "model not found" — a confusing way to
|
|
184
249
|
// learn about a prefix.
|
|
@@ -276,6 +341,11 @@ export function createGeminiProvider(config) {
|
|
|
276
341
|
...(opts.signal ? { signal: opts.signal } : {}),
|
|
277
342
|
...(config.fetchImpl ? { fetchImpl: config.fetchImpl } : {}),
|
|
278
343
|
...(opts.onActivity ? { onActivity: opts.onActivity } : {}),
|
|
344
|
+
...(opts.onRateLimit ? { onRateLimit: opts.onRateLimit } : {}),
|
|
345
|
+
// This wire has no terminal event to stop at, so the finish reason is
|
|
346
|
+
// the end: a read that dies after it can cost a late usage record, never
|
|
347
|
+
// the answer.
|
|
348
|
+
finished: () => finished,
|
|
279
349
|
})) {
|
|
280
350
|
let chunk;
|
|
281
351
|
try {
|
|
@@ -335,12 +405,14 @@ export function createGeminiProvider(config) {
|
|
|
335
405
|
if (!call)
|
|
336
406
|
continue;
|
|
337
407
|
const index = callIndex++;
|
|
408
|
+
const identity = { index, id: call.id ?? "", name: call.name ?? "" };
|
|
409
|
+
// The part is the whole call, so it is settled here: one with no
|
|
410
|
+
// name can't run, and one with no id gets one the way the other
|
|
411
|
+
// three wires mint it. Gemini omits the id on a single-call turn, and
|
|
412
|
+
// the seam's consumers pair a result back to its call by id.
|
|
413
|
+
settleToolCalls(id, [identity]);
|
|
338
414
|
toolCalls.push({
|
|
339
|
-
|
|
340
|
-
// Gemini omits the id on a single-call turn, and the seam's
|
|
341
|
-
// consumers pair a result back to its call by id.
|
|
342
|
-
id: call.id ?? `call_${index}`,
|
|
343
|
-
...(call.name ? { name: call.name } : {}),
|
|
415
|
+
...identity,
|
|
344
416
|
// Whole and already assembled — unlike the OpenAI shape, Gemini
|
|
345
417
|
// never fragments an argument object across chunks.
|
|
346
418
|
arguments: JSON.stringify(call.args ?? {}),
|
|
@@ -356,13 +428,16 @@ export function createGeminiProvider(config) {
|
|
|
356
428
|
yield { type: "delta", toolCalls };
|
|
357
429
|
}
|
|
358
430
|
if (candidate.finishReason) {
|
|
431
|
+
// Mapped first: a reason that throws must not be dressed as tool_calls.
|
|
432
|
+
const finishReason = mapFinishReason(id, candidate.finishReason);
|
|
359
433
|
finished = true;
|
|
360
434
|
yield {
|
|
361
435
|
type: "finish",
|
|
362
|
-
//
|
|
363
|
-
// candidate says — Gemini routinely reports STOP there, and a
|
|
436
|
+
// Gemini routinely reports STOP on a turn that called tools, and a
|
|
364
437
|
// caller reading that as "done" drops the tool round entirely.
|
|
365
|
-
|
|
438
|
+
// Only STOP is promoted, as on the other three wires: a length cut
|
|
439
|
+
// or a filter may be what broke the call (invariant 10).
|
|
440
|
+
finishReason: sawFunctionCalls && finishReason === "stop" ? "tool_calls" : finishReason,
|
|
366
441
|
};
|
|
367
442
|
}
|
|
368
443
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,oCAAoC;AACpC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAA+B,MAAM,gBAAgB,CAAC;AA0CtF,MAAM,gBAAgB,GAAG,2CAA2C,CAAC;AAErE;;;;;;;GAOG;AACH,MAAM,cAAc,GAA2B;IAC7C,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;CACZ,CAAC;AAEF;;;;;GAKG;AACH,MAAM,wBAAwB,GAA2B;IACvD,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,KAAK;CACX,CAAC;AAQF,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;uEACuE;AACvE,SAAS,gBAAgB,CAAC,OAAe;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5C,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgC;IAI/D,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,QAAQ;gBACX,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;gBACtE,MAAM;YAER,KAAK,MAAM;gBACT,kEAAkE;gBAClE,gDAAgD;gBAChD,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,MAAM;oBACZ,KAAK,EACH,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;wBACjC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;wBAC7B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC3B,IAAI,CAAC,IAAI,KAAK,MAAM;4BAClB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;4BACrB,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CACjE;iBACR,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,KAAK,GAAc,EAAE,CAAC;gBAC5B,IAAI,OAAO,CAAC,OAAO;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC3D,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;oBAC3C,KAAK,CAAC,IAAI,CAAC;wBACT,YAAY,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;wBAC/E,kEAAkE;wBAClE,+DAA+D;wBAC/D,4CAA4C;wBAC5C,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC9E,CAAC,CAAC;gBACL,CAAC;gBACD,sEAAsE;gBACtE,uCAAuC;gBACvC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;oBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC9D,MAAM;YACR,CAAC;YAED,KAAK,MAAM;gBACT,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE;wBACL;4BACE,gBAAgB,EAAE;gCAChB,EAAE,EAAE,OAAO,CAAC,UAAU;gCACtB,IAAI,EAAE,OAAO,CAAC,IAAI;gCAClB,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;6BAC5C;yBACF;wBACD,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;4BACxC,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;yBAC3D,CAAC,CAAC;qBACJ;iBACF,CAAC,CAAC;gBACH,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,MAA8B;IAClD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IAChE,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IAC1E,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;IAC7E,OAAO,EAAE,qBAAqB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AACzF,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,YAAY;YACf,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ,CAAC;QACd,KAAK,oBAAoB;YACvB,OAAO,gBAAgB,CAAC;QAC1B;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAoCD,MAAM,UAAU,oBAAoB,CAAC,MAAoB;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAC;IACnD,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC;IAEjC,MAAM,QAAQ,GAAa;QACzB,EAAE;QACF,KAAK,EAAE,MAAM,CAAC,KAAK;QAEnB,KAAK,CAAC,CAAC,YAAY,CACjB,QAAuB,EACvB,KAAuB,EACvB,OAAsB,EAAE;YAExB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;YAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC;YACrD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAExD,0EAA0E;YAC1E,qEAAqE;YACrE,wBAAwB;YACxB,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACpE,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,0EAA0E;YAC1E,8CAA8C;YAC9C,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE1C,MAAM,gBAAgB,GAA4B,EAAE,CAAC;YACrD,IAAI,SAAS,KAAK,SAAS;gBAAE,gBAAgB,CAAC,eAAe,GAAG,SAAS,CAAC;YAC1E,6EAA6E;YAC7E,6EAA6E;YAC7E,iEAAiE;YACjE,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM;gBAAE,gBAAgB,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACpF,6EAA6E;YAC7E,yEAAyE;YACzE,2DAA2D;YAC3D,IAAI,MAAM,EAAE,CAAC;gBACX,gBAAgB,CAAC,cAAc,GAAG,SAAS;oBACzC,CAAC,CAAC,EAAE,cAAc,EAAE,wBAAwB,CAAC,MAAM,CAAC,EAAE;oBACtD,CAAC,CAAC,EAAE,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,CAAC;YACD,0EAA0E;YAC1E,sEAAsE;YACtE,6DAA6D;YAC7D,uEAAuE;YACvE,EAAE;YACF,wEAAwE;YACxE,kEAAkE;YAClE,uEAAuE;YACvE,yEAAyE;YACzE,+CAA+C;YAC/C,MAAM,aAAa,GACjB,KAAK,CAAC,MAAM,GAAG,CAAC;gBAChB,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5E,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBAChC,gBAAgB,CAAC,gBAAgB,GAAG,kBAAkB,CAAC;gBACvD,sEAAsE;gBACtE,kEAAkE;gBAClE,kBAAkB;gBAClB,gBAAgB,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7E,CAAC;YAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,IAAI,aAAa,CACrB,EAAE,EACF,SAAS,EACT,GAAG,EAAE,iFAAiF,CACvF,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GAA4B,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;YACxE,0EAA0E;YAC1E,uEAAuE;YACvE,wEAAwE;YACxE,iEAAiE;YACjE,MAAM,WAAW,GAAG;gBAClB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAClF,CAAC;YACF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,iBAAiB,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;YAC/E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,kEAAkE;gBAClE,kEAAkE;gBAClE,IAAI,IAAI,CAAC,iBAAiB,KAAK,KAAK,EAAE,CAAC;oBACrC,MAAM,IAAI,aAAa,CACrB,EAAE,EACF,SAAS,EACT,GAAG,EAAE,8EAA8E;wBACjF,+DAA+D,CAClE,CAAC;gBACJ,CAAC;gBACD,OAAO,CAAC,KAAK,GAAG;oBACd;wBACE,oBAAoB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;4BACzC,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,WAAW,EAAE,IAAI,CAAC,WAAW;4BAC7B,gEAAgE;4BAChE,mEAAmE;4BACnE,oBAAoB,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;yBAC3D,CAAC,CAAC;qBACJ;iBACF,CAAC;gBACF,wEAAwE;gBACxE,uCAAuC;gBACvC,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACjD,IAAI,UAAU;oBAAE,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;YAClD,CAAC;YAED,wEAAwE;YACxE,wEAAwE;YACxE,mDAAmD;YACnD,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAC7B,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,QAAQ,GAAG,KAAK,CAAC;YAErB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,SAAS,CAAC;gBACjC,mEAAmE;gBACnE,+CAA+C;gBAC/C,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,kBAAkB,KAAK,gCAAgC,CAAC;gBAC7E,OAAO,EAAE,EAAE,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE;gBAC/D,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,EAAE;gBACZ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/C,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5D,CAAC,EAAE,CAAC;gBACH,IAAI,KAAqB,CAAC;gBAC1B,IAAI,CAAC;oBACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAC;gBAC7C,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBAED,gEAAgE;gBAChE,+DAA+D;gBAC/D,8DAA8D;gBAC9D,IAAI,KAAK,CAAC,KAAK;oBAAE,MAAM,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBACpD,oEAAoE;gBACpE,kEAAkE;gBAClE,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,EAAE,WAAW,CAAC;gBAClD,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,IAAI,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,6BAA6B,OAAO,GAAG,EAAE;wBACnF,IAAI,EAAE,OAAO;qBACd,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;oBACxB,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;oBAClC,MAAM;wBACJ,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACL,WAAW,EAAE,KAAK,CAAC,gBAAgB,IAAI,CAAC;4BACxC,2DAA2D;4BAC3D,iEAAiE;4BACjE,gCAAgC;4BAChC,YAAY,EAAE,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,CAAC;4BACjF,iBAAiB,EAAE,KAAK,CAAC,uBAAuB,IAAI,CAAC;4BACrD,GAAG,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS;gCACxC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,kBAAkB,EAAE;gCAC/C,CAAC,CAAC,EAAE,CAAC;yBACR;qBACF,CAAC;gBACJ,CAAC;gBAED,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAI,CAAC,SAAS;oBAAE,SAAS;gBAEzB,qEAAqE;gBACrE,sEAAsE;gBACtE,+DAA+D;gBAC/D,IAAI,SAAS,GAAG,EAAE,CAAC;gBACnB,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAoB,EAAE,CAAC;gBACtC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;oBAClD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;wBACd,IAAI,IAAI,CAAC,OAAO;4BAAE,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC;;4BACpC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC;wBAC1B,SAAS;oBACX,CAAC;oBACD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;oBAC/B,IAAI,CAAC,IAAI;wBAAE,SAAS;oBACpB,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;oBAC1B,SAAS,CAAC,IAAI,CAAC;wBACb,KAAK;wBACL,4DAA4D;wBAC5D,kDAAkD;wBAClD,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,QAAQ,KAAK,EAAE;wBAC9B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzC,gEAAgE;wBAChE,oDAAoD;wBACpD,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;wBAC1C,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC9E,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,SAAS;oBAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;gBAClD,IAAI,OAAO;oBAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;gBAC9C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,gBAAgB,GAAG,IAAI,CAAC;oBACxB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;gBACrC,CAAC;gBAED,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;oBAC3B,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;wBACJ,IAAI,EAAE,QAAQ;wBACd,+DAA+D;wBAC/D,8DAA8D;wBAC9D,+DAA+D;wBAC/D,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,YAAY,CAAC;qBACxF,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,uEAAuE;YACvE,uDAAuD;YACvD,IAAI,CAAC,QAAQ;gBAAE,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC;KACF,CAAC;IAEF,OAAO,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC"}
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -83,6 +83,13 @@ export interface OpenAIConfig extends ProviderFallbackConfig {
|
|
|
83
83
|
* no sessionId, the provider's own per-instance id rides instead, so the
|
|
84
84
|
* gateway never sees a call without one. */
|
|
85
85
|
sessionHeader?: string;
|
|
86
|
+
/** The id `sessionHeader` carries when a call has no `sessionId`. Absent, the
|
|
87
|
+
* adapter mints one when it is built. Pass one when something rebuilds the
|
|
88
|
+
* adapter (`withKeyPool` and `withToken` build one per attempt): each build
|
|
89
|
+
* mints a new id, and a gateway that pins a session to one upstream host
|
|
90
|
+
* then treats every call as a new session, re-routes it and misses its
|
|
91
|
+
* prompt cache. Ignored without `sessionHeader`. */
|
|
92
|
+
instanceSessionId?: string;
|
|
86
93
|
/** Send `X-Initiator`: `user` when the last message is the user's, else
|
|
87
94
|
* `agent`. GitHub Copilot bills a premium request per `user` turn and lets
|
|
88
95
|
* the agent's own follow-ups (tool results) ride free. */
|
|
@@ -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":"AAUA,OAAO,KAAK,EACV,WAAW,EAEX,MAAM,EAEN,aAAa,EACb,QAAQ,EAER,WAAW,EAGZ,MAAM,aAAa,CAAC;AAGrB,OAAO,EAA2B,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAEtF,MAAM,WAAW,YAAa,SAAQ,sBAAsB;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;+CAE2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;iFAC6E;IAC7E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC/B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;iDAE6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;yDAKqD;IACrD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;+DAE2D;IAC3D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;8EAC0E;IAC1E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAuCD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMpF;AAED;4EAC4E;AAC5E,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,KAAK,CAAC;AA4CzF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsCzB;AA6FD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,EAAE,QAAQ,SAAW,GAAG,OAAO,EAAE,CAgEjG;AA8CD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE;QAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;CAC7D,GAAG,MAAM,GAAG,SAAS,CAKrB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,QAAQ,CAyQnE"}
|
package/dist/providers/openai.js
CHANGED
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
// This is the dialect most gateways speak, so one adapter serves OpenAI,
|
|
4
4
|
// OpenRouter, DeepSeek, GLM, Kimi, Groq, Together, vLLM, Ollama and LM Studio.
|
|
5
5
|
// Their divergences are small and named where they appear.
|
|
6
|
+
import { repairHistory } from "../context.js";
|
|
6
7
|
import { fileRefused, ProviderError, streamCut, streamError } from "../errors.js";
|
|
7
|
-
import { streamSse, apiUrl } from "../transport.js";
|
|
8
|
+
import { streamSse, apiUrl, parseFrame } from "../transport.js";
|
|
9
|
+
import { settleToolCalls } from "../tool-args.js";
|
|
8
10
|
import { attributionHeaders } from "../attribution.js";
|
|
9
11
|
import { toDataUri } from "../types.js";
|
|
10
12
|
import { isStrictSchema, schemaPrompt } from "../schema.js";
|
|
@@ -211,19 +213,43 @@ function dialectFor(id) {
|
|
|
211
213
|
return "opencode-go";
|
|
212
214
|
return "openai";
|
|
213
215
|
}
|
|
214
|
-
|
|
216
|
+
/**
|
|
217
|
+
* A stated finish, or a throw for one this dialect does not document. An
|
|
218
|
+
* unknown reason used to end the stream as a clean success with no finish at
|
|
219
|
+
* all, so DeepSeek's `insufficient_system_resource`, Z.ai's `network_error` and
|
|
220
|
+
* OpenRouter's `error` each read as a finished answer. Nothing says the answer
|
|
221
|
+
* ended on purpose, so it is `overload`: theirs, and worth a retry (cc-proxy
|
|
222
|
+
* answers it the same way).
|
|
223
|
+
*/
|
|
224
|
+
function mapFinishReason(provider, reason) {
|
|
215
225
|
switch (reason) {
|
|
226
|
+
// A natural end under another name, from servers on this wire: Together's
|
|
227
|
+
// `eos`, Hugging Face TGI's `eos_token` and `stop_sequence`. Thrown as
|
|
228
|
+
// unknown, each would fail an answer that was already whole.
|
|
216
229
|
case "stop":
|
|
230
|
+
case "eos":
|
|
231
|
+
case "eos_token":
|
|
232
|
+
case "stop_sequence":
|
|
217
233
|
return "stop";
|
|
234
|
+
// Z.ai's `model_context_window_exceeded` and Mistral's `model_length`: the
|
|
235
|
+
// context window filled before the answer did. Cut short, and a retry fills
|
|
236
|
+
// it the same way.
|
|
218
237
|
case "length":
|
|
238
|
+
case "model_context_window_exceeded":
|
|
239
|
+
case "model_length":
|
|
219
240
|
return "length";
|
|
220
241
|
case "tool_calls":
|
|
221
242
|
case "function_call":
|
|
222
243
|
return "tool_calls";
|
|
244
|
+
// `sensitive` is Z.ai's name for its safety stop. A retry meets the same
|
|
245
|
+
// filter.
|
|
223
246
|
case "content_filter":
|
|
247
|
+
case "sensitive":
|
|
224
248
|
return "content_filter";
|
|
225
249
|
default:
|
|
226
|
-
|
|
250
|
+
throw new ProviderError(provider, "overload", `${provider} ended the turn on "${reason}"`, {
|
|
251
|
+
code: reason,
|
|
252
|
+
});
|
|
227
253
|
}
|
|
228
254
|
}
|
|
229
255
|
function partsToOpenAI(content, provider) {
|
|
@@ -346,14 +372,18 @@ export function createOpenAIProvider(config) {
|
|
|
346
372
|
// `usage.cost` is its field in its unit. Another gateway that sends a
|
|
347
373
|
// `cost` has not said what it means.
|
|
348
374
|
const reportsCost = isOpenRouter(baseUrl);
|
|
349
|
-
const instanceSessionId = config.sessionHeader
|
|
375
|
+
const instanceSessionId = config.sessionHeader
|
|
376
|
+
? (config.instanceSessionId ?? crypto.randomUUID())
|
|
377
|
+
: undefined;
|
|
350
378
|
const provider = {
|
|
351
379
|
id,
|
|
352
380
|
model: config.model,
|
|
353
381
|
async *createStream(messages, tools, opts = {}) {
|
|
354
382
|
const effort = opts.effort ?? config.effort;
|
|
355
383
|
const model = opts.model ?? config.model;
|
|
356
|
-
|
|
384
|
+
// Repaired first: a result with no call, or a call with no result, is a
|
|
385
|
+
// 400 that loses the turn. See repairHistory.
|
|
386
|
+
const body = toOpenAIMessages(repairHistory(messages).messages, id);
|
|
357
387
|
const request = {
|
|
358
388
|
model,
|
|
359
389
|
messages: body,
|
|
@@ -459,6 +489,9 @@ export function createOpenAIProvider(config) {
|
|
|
459
489
|
? "/chat/completions"
|
|
460
490
|
: "/v1/chat/completions";
|
|
461
491
|
let ended = false;
|
|
492
|
+
// Each call as its deltas named it, by index. The finish checks them
|
|
493
|
+
// before it goes out, and they are what says the turn called a tool.
|
|
494
|
+
const calls = new Map();
|
|
462
495
|
for await (const data of streamSse({
|
|
463
496
|
url: apiUrl(baseUrl, config.path ?? defaultPath),
|
|
464
497
|
headers: {
|
|
@@ -477,17 +510,16 @@ export function createOpenAIProvider(config) {
|
|
|
477
510
|
...(opts.signal ? { signal: opts.signal } : {}),
|
|
478
511
|
...(config.fetchImpl ? { fetchImpl: config.fetchImpl } : {}),
|
|
479
512
|
...(opts.onActivity ? { onActivity: opts.onActivity } : {}),
|
|
513
|
+
...(opts.onRateLimit ? { onRateLimit: opts.onRateLimit } : {}),
|
|
480
514
|
onDone: () => {
|
|
481
515
|
ended = true;
|
|
482
516
|
},
|
|
517
|
+
// Usage comes AFTER the finish on this shape, so the reader keeps going
|
|
518
|
+
// to `[DONE]` (invariant 5). But a read that dies in between costs only
|
|
519
|
+
// the usage frame: the answer is whole once its finish is stated.
|
|
520
|
+
finished: () => ended,
|
|
483
521
|
})) {
|
|
484
|
-
|
|
485
|
-
try {
|
|
486
|
-
chunk = JSON.parse(data);
|
|
487
|
-
}
|
|
488
|
-
catch {
|
|
489
|
-
continue;
|
|
490
|
-
}
|
|
522
|
+
const chunk = parseFrame(data, id);
|
|
491
523
|
// A failure the backend reports after its headers went out. The
|
|
492
524
|
// gateways speaking this dialect — OpenRouter above all — report a
|
|
493
525
|
// throttle or an upstream outage this way rather than as a status
|
|
@@ -556,21 +588,40 @@ export function createOpenAIProvider(config) {
|
|
|
556
588
|
? { arguments: call.function.arguments }
|
|
557
589
|
: {}),
|
|
558
590
|
}));
|
|
591
|
+
for (const call of out.toolCalls) {
|
|
592
|
+
const seen = calls.get(call.index) ?? { index: call.index, id: "", name: "" };
|
|
593
|
+
if (call.id)
|
|
594
|
+
seen.id = call.id;
|
|
595
|
+
if (call.name)
|
|
596
|
+
seen.name = call.name;
|
|
597
|
+
calls.set(call.index, seen);
|
|
598
|
+
}
|
|
559
599
|
has = true;
|
|
560
600
|
}
|
|
561
601
|
if (has)
|
|
562
602
|
yield out;
|
|
563
603
|
}
|
|
564
|
-
if (choice.finish_reason)
|
|
604
|
+
if (choice.finish_reason) {
|
|
605
|
+
const stated = mapFinishReason(id, choice.finish_reason);
|
|
606
|
+
const minted = settleToolCalls(id, calls.values());
|
|
607
|
+
if (minted.length > 0)
|
|
608
|
+
yield { type: "delta", toolCalls: minted };
|
|
565
609
|
ended = true;
|
|
566
|
-
|
|
567
|
-
|
|
610
|
+
// Several gateways end a turn that called a tool on `stop`, and a
|
|
611
|
+
// caller reading that as done never runs the tool. Only `stop` is
|
|
612
|
+
// promoted: a length cut or a filter may be what broke the call.
|
|
613
|
+
const finishReason = stated === "stop" && calls.size > 0 ? "tool_calls" : stated;
|
|
568
614
|
yield { type: "finish", finishReason };
|
|
615
|
+
}
|
|
569
616
|
}
|
|
570
617
|
// Either proof will do: some gateways send `[DONE]` with no finish, and
|
|
571
618
|
// some a finish with no `[DONE]`. Neither means the socket closed early.
|
|
572
619
|
if (!ended)
|
|
573
620
|
throw streamCut(id);
|
|
621
|
+
// A `[DONE]` with no finish stated still owes its calls the same check.
|
|
622
|
+
const minted = settleToolCalls(id, calls.values());
|
|
623
|
+
if (minted.length > 0)
|
|
624
|
+
yield { type: "delta", toolCalls: minted };
|
|
574
625
|
},
|
|
575
626
|
};
|
|
576
627
|
return withConfiguredFallbacks(provider, config);
|