@curie-agent/providers 0.2.4 → 0.2.5
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 +179 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/anthropic.d.ts.map +1 -1
- package/dist/src/anthropic.js +81 -27
- package/dist/src/anthropic.js.map +1 -1
- package/dist/src/google.d.ts +6 -3
- package/dist/src/google.d.ts.map +1 -1
- package/dist/src/google.js +234 -80
- package/dist/src/google.js.map +1 -1
- package/dist/src/ollama.d.ts.map +1 -1
- package/dist/src/ollama.js +4 -55
- package/dist/src/ollama.js.map +1 -1
- package/dist/src/openai-compatible-stream.d.ts +17 -0
- package/dist/src/openai-compatible-stream.d.ts.map +1 -0
- package/dist/src/openai-compatible-stream.js +122 -0
- package/dist/src/openai-compatible-stream.js.map +1 -0
- package/dist/src/openai.d.ts +8 -0
- package/dist/src/openai.d.ts.map +1 -1
- package/dist/src/openai.js +232 -71
- package/dist/src/openai.js.map +1 -1
- package/dist/src/openrouter.d.ts.map +1 -1
- package/dist/src/openrouter.js +42 -0
- package/dist/src/openrouter.js.map +1 -1
- package/dist/src/provider.d.ts +3 -0
- package/dist/src/provider.d.ts.map +1 -1
- package/dist/src/provider.js.map +1 -1
- package/package.json +10 -10
package/dist/src/anthropic.js
CHANGED
|
@@ -9,10 +9,29 @@ function effortToBudget(effort) {
|
|
|
9
9
|
default: return undefined;
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
+
function effortToAdaptiveEffort(effort) {
|
|
13
|
+
switch (effort) {
|
|
14
|
+
case 'low': return 'low';
|
|
15
|
+
case 'medium': return 'medium';
|
|
16
|
+
case 'high': return 'high';
|
|
17
|
+
case 'max': return 'max';
|
|
18
|
+
case 'auto':
|
|
19
|
+
default: return undefined;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
const ADAPTIVE_MODELS = new Set([
|
|
23
|
+
'claude-opus-4-7',
|
|
24
|
+
'claude-sonnet-4-6',
|
|
25
|
+
'claude-opus-4-6',
|
|
26
|
+
]);
|
|
27
|
+
function isAdaptiveModel(model) {
|
|
28
|
+
return ADAPTIVE_MODELS.has(model);
|
|
29
|
+
}
|
|
12
30
|
export class AnthropicProvider {
|
|
13
31
|
name = 'anthropic';
|
|
14
32
|
models = [
|
|
15
33
|
'claude-opus-4-7',
|
|
34
|
+
'claude-opus-4-6',
|
|
16
35
|
'claude-sonnet-4-6',
|
|
17
36
|
'claude-haiku-4-5-20251001',
|
|
18
37
|
];
|
|
@@ -32,23 +51,38 @@ export class AnthropicProvider {
|
|
|
32
51
|
}
|
|
33
52
|
stream(args) {
|
|
34
53
|
const model = args.model || this.defaultModel;
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
// so raise the ceiling to leave room for the actual answer.
|
|
38
|
-
const maxTokens = args.maxTokens || (thinkingBudget ? thinkingBudget + 8192 : 8192);
|
|
54
|
+
const useAdaptive = isAdaptiveModel(model);
|
|
55
|
+
const adaptiveEffort = effortToAdaptiveEffort(args.effort);
|
|
39
56
|
const messages = this.mapMessages(args.messages);
|
|
40
57
|
const tools = args.tools ? this.mapTools(args.tools) : undefined;
|
|
41
58
|
const streamArgs = {
|
|
42
59
|
model,
|
|
43
|
-
max_tokens: maxTokens,
|
|
60
|
+
max_tokens: args.maxTokens || 16384,
|
|
44
61
|
system: args.system,
|
|
45
62
|
messages,
|
|
46
63
|
tools,
|
|
47
|
-
// Extended thinking requires temperature = 1.
|
|
48
|
-
temperature: thinkingBudget ? 1 : args.temperature,
|
|
49
64
|
};
|
|
50
|
-
if (
|
|
51
|
-
streamArgs.thinking = { type: '
|
|
65
|
+
if (useAdaptive) {
|
|
66
|
+
streamArgs.thinking = { type: 'adaptive', display: 'summarized' };
|
|
67
|
+
if (adaptiveEffort) {
|
|
68
|
+
streamArgs.output_config = { effort: adaptiveEffort };
|
|
69
|
+
}
|
|
70
|
+
streamArgs.temperature = args.temperature;
|
|
71
|
+
}
|
|
72
|
+
else if (!useAdaptive && args.effort && args.effort !== 'auto') {
|
|
73
|
+
// Manual budget_tokens for older models (Haiku 4.5, etc.)
|
|
74
|
+
const thinkingBudget = effortToBudget(args.effort);
|
|
75
|
+
if (thinkingBudget) {
|
|
76
|
+
streamArgs.max_tokens = thinkingBudget + 8192;
|
|
77
|
+
streamArgs.thinking = { type: 'enabled', budget_tokens: thinkingBudget };
|
|
78
|
+
streamArgs.temperature = 1;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
streamArgs.temperature = args.temperature;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
streamArgs.temperature = args.temperature;
|
|
52
86
|
}
|
|
53
87
|
const sdkStream = this.client.messages.stream(streamArgs);
|
|
54
88
|
// keyed by content block index
|
|
@@ -94,6 +128,7 @@ export class AnthropicProvider {
|
|
|
94
128
|
const t = thinkingBlocks.get(event.index);
|
|
95
129
|
if (t)
|
|
96
130
|
t.thinking += event.delta.thinking;
|
|
131
|
+
yield { type: 'thinking-delta', text: event.delta.thinking };
|
|
97
132
|
}
|
|
98
133
|
else if (event.delta.type === 'signature_delta') {
|
|
99
134
|
const t = thinkingBlocks.get(event.index);
|
|
@@ -102,16 +137,8 @@ export class AnthropicProvider {
|
|
|
102
137
|
}
|
|
103
138
|
}
|
|
104
139
|
if (event.type === 'content_block_stop') {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
let input = {};
|
|
108
|
-
try {
|
|
109
|
-
input = JSON.parse(tool.inputStr || '{}');
|
|
110
|
-
}
|
|
111
|
-
catch { /* empty input */ }
|
|
112
|
-
yield { type: 'tool-call', id: tool.id, name: tool.name, input };
|
|
113
|
-
toolBlocks.delete(event.index);
|
|
114
|
-
}
|
|
140
|
+
// Tool calls are buffered until the stream completes so the TUI
|
|
141
|
+
// can render them as one grouped block (matching OpenRouter).
|
|
115
142
|
const thinking = thinkingBlocks.get(event.index);
|
|
116
143
|
if (thinking) {
|
|
117
144
|
yield { type: 'thinking-block', thinking: thinking.thinking, signature: thinking.signature };
|
|
@@ -132,6 +159,16 @@ export class AnthropicProvider {
|
|
|
132
159
|
yield { type: 'stop', reason: 'aborted' };
|
|
133
160
|
return;
|
|
134
161
|
}
|
|
162
|
+
// Flush buffered tool calls in stream order (Map preserves insertion order).
|
|
163
|
+
for (const [, tool] of toolBlocks) {
|
|
164
|
+
let input = {};
|
|
165
|
+
try {
|
|
166
|
+
input = JSON.parse(tool.inputStr || '{}');
|
|
167
|
+
}
|
|
168
|
+
catch { /* empty input */ }
|
|
169
|
+
yield { type: 'tool-call', id: tool.id, name: tool.name, input };
|
|
170
|
+
}
|
|
171
|
+
toolBlocks.clear();
|
|
135
172
|
try {
|
|
136
173
|
const final = await sdkStream.finalMessage();
|
|
137
174
|
if (final.usage) {
|
|
@@ -176,22 +213,39 @@ export class AnthropicProvider {
|
|
|
176
213
|
}
|
|
177
214
|
async complete(args) {
|
|
178
215
|
const model = args.model || this.defaultModel;
|
|
179
|
-
const
|
|
180
|
-
const
|
|
216
|
+
const useAdaptive = isAdaptiveModel(model);
|
|
217
|
+
const adaptiveEffort = effortToAdaptiveEffort(args.effort);
|
|
181
218
|
const messages = this.mapMessages(args.messages);
|
|
182
219
|
const tools = args.tools ? this.mapTools(args.tools) : undefined;
|
|
183
|
-
const
|
|
220
|
+
const createArgs = {
|
|
184
221
|
model,
|
|
185
|
-
max_tokens: maxTokens,
|
|
222
|
+
max_tokens: args.maxTokens || 16384,
|
|
186
223
|
system: args.system,
|
|
187
224
|
messages,
|
|
188
225
|
tools,
|
|
189
|
-
temperature: thinkingBudget ? 1 : (args.temperature ?? 0),
|
|
190
226
|
};
|
|
191
|
-
if (
|
|
192
|
-
|
|
227
|
+
if (useAdaptive) {
|
|
228
|
+
createArgs.thinking = { type: 'adaptive', display: 'summarized' };
|
|
229
|
+
if (adaptiveEffort) {
|
|
230
|
+
createArgs.output_config = { effort: adaptiveEffort };
|
|
231
|
+
}
|
|
232
|
+
createArgs.temperature = args.temperature;
|
|
233
|
+
}
|
|
234
|
+
else if (!useAdaptive && args.effort && args.effort !== 'auto') {
|
|
235
|
+
const thinkingBudget = effortToBudget(args.effort);
|
|
236
|
+
if (thinkingBudget) {
|
|
237
|
+
createArgs.max_tokens = thinkingBudget + 8192;
|
|
238
|
+
createArgs.thinking = { type: 'enabled', budget_tokens: thinkingBudget };
|
|
239
|
+
createArgs.temperature = 1;
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
createArgs.temperature = args.temperature ?? 0;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
createArgs.temperature = args.temperature ?? 0;
|
|
193
247
|
}
|
|
194
|
-
const response = await this.client.messages.create(
|
|
248
|
+
const response = await this.client.messages.create(createArgs);
|
|
195
249
|
const text = response.content
|
|
196
250
|
.filter((c) => c.type === 'text')
|
|
197
251
|
.map(c => c.text)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/anthropic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/anthropic.ts"],"names":[],"mappings":"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"}
|
package/dist/src/google.d.ts
CHANGED
|
@@ -7,12 +7,15 @@ export declare class GoogleGeminiProvider implements Provider {
|
|
|
7
7
|
readonly name = "google";
|
|
8
8
|
readonly models: string[];
|
|
9
9
|
readonly defaultModel = "gemini-2.0-flash";
|
|
10
|
-
private
|
|
10
|
+
private apiKey;
|
|
11
11
|
private baseUrl;
|
|
12
12
|
constructor(apiKey?: string, baseUrl?: string);
|
|
13
13
|
private isThinkingModel;
|
|
14
|
-
private
|
|
15
|
-
|
|
14
|
+
private apiEndpoint;
|
|
15
|
+
/** Build the API request body, including thinkingConfig for thinking models. */
|
|
16
|
+
private buildRequestBody;
|
|
17
|
+
/** Parse the SSE stream response line by line into complete JSON chunks. */
|
|
18
|
+
private parseSSEStream;
|
|
16
19
|
stream(args: ProviderStreamArgs): CancelableIterable<ProviderEvent>;
|
|
17
20
|
check(prompt: string, args?: {
|
|
18
21
|
model?: string;
|
package/dist/src/google.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../src/google.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../src/google.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EAIvB,MAAM,eAAe,CAAC;AAEvB,KAAK,kBAAkB,CAAC,CAAC,IAAI;IAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,IAAI,IAAI,CAAA;CAAE,CAAC;AAmC5E,qBAAa,oBAAqB,YAAW,QAAQ;IACnD,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,MAAM,WAKb;IACF,QAAQ,CAAC,YAAY,sBAAsB;IAE3C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAa7C,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,WAAW;IASnB,gFAAgF;IAChF,OAAO,CAAC,gBAAgB;IA6BxB,4EAA4E;YAC7D,cAAc;IA0D9B,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,CAAC,aAAa,CAAC;IAkH5D,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QACjC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GAAG,OAAO,CAAC,MAAM,CAAC;IA2Bb,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAwF3E,OAAO,CAAC,sBAAsB;IAQ9B;;;;;OAKG;IAEH,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,WAAW;CAsEpB"}
|
package/dist/src/google.js
CHANGED
|
@@ -1,13 +1,29 @@
|
|
|
1
|
-
import { GoogleGenerativeAI } from '@google/generative-ai';
|
|
2
1
|
let _callId = 0;
|
|
3
2
|
function nextCallId() {
|
|
4
3
|
return `call_${++_callId}`;
|
|
5
4
|
}
|
|
6
|
-
/** Returns true if the model may return
|
|
5
|
+
/** Returns true if the model may return thought fields on parts. */
|
|
7
6
|
function isThinkingModelName(model) {
|
|
8
7
|
const m = model.toLowerCase();
|
|
9
8
|
return m.startsWith('gemini-2.5') || m.startsWith('gemini-3') || m.includes('flash-latest') || m.includes('pro-latest');
|
|
10
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Map curie effort level to Gemini thinkingBudget.
|
|
12
|
+
* Without an explicit budget, Gemini often allocates 0 tokens for tool-call
|
|
13
|
+
* turns — resulting in no thought parts and no thinking-delta events.
|
|
14
|
+
* -1 means dynamic (model always allocates some thinking tokens).
|
|
15
|
+
*/
|
|
16
|
+
function effortToThinkingBudget(effort) {
|
|
17
|
+
switch (effort) {
|
|
18
|
+
case 'low': return 1024;
|
|
19
|
+
case 'medium': return 4096;
|
|
20
|
+
case 'high': return 16000;
|
|
21
|
+
case 'max': return 24576;
|
|
22
|
+
default: return -1;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const DEFAULT_BASE_URL = 'https://generativelanguage.googleapis.com';
|
|
26
|
+
const DEFAULT_API_VERSION = 'v1beta';
|
|
11
27
|
export class GoogleGeminiProvider {
|
|
12
28
|
name = 'google';
|
|
13
29
|
models = [
|
|
@@ -17,7 +33,7 @@ export class GoogleGeminiProvider {
|
|
|
17
33
|
'gemini-2.0-flash',
|
|
18
34
|
];
|
|
19
35
|
defaultModel = 'gemini-2.0-flash';
|
|
20
|
-
|
|
36
|
+
apiKey;
|
|
21
37
|
baseUrl;
|
|
22
38
|
constructor(apiKey, baseUrl) {
|
|
23
39
|
const resolvedKey = (apiKey && apiKey.length > 0)
|
|
@@ -26,128 +42,260 @@ export class GoogleGeminiProvider {
|
|
|
26
42
|
if (!resolvedKey) {
|
|
27
43
|
throw new Error('GoogleGeminiProvider: no API key (pass explicitly or set GOOGLE_API_KEY).');
|
|
28
44
|
}
|
|
29
|
-
this.
|
|
30
|
-
this.baseUrl = baseUrl ||
|
|
45
|
+
this.apiKey = resolvedKey;
|
|
46
|
+
this.baseUrl = baseUrl || DEFAULT_BASE_URL;
|
|
31
47
|
}
|
|
32
48
|
isThinkingModel(model) {
|
|
33
49
|
return isThinkingModelName(model || this.defaultModel);
|
|
34
50
|
}
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
51
|
+
apiEndpoint(model, task, altSse) {
|
|
52
|
+
const safeModel = model.startsWith('models/') ? model : `models/${model}`;
|
|
53
|
+
let url = `${this.baseUrl}/${DEFAULT_API_VERSION}/${safeModel}:${task}`;
|
|
54
|
+
if (altSse) {
|
|
55
|
+
url += '?alt=sse';
|
|
39
56
|
}
|
|
40
|
-
return
|
|
57
|
+
return url;
|
|
41
58
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
59
|
+
/** Build the API request body, including thinkingConfig for thinking models. */
|
|
60
|
+
buildRequestBody(model, contents, opts) {
|
|
61
|
+
const safeModel = model.startsWith('models/') ? model : `models/${model}`;
|
|
62
|
+
const body = { model: safeModel, contents };
|
|
63
|
+
if (opts?.system) {
|
|
64
|
+
body.systemInstruction = { role: 'system', parts: [{ text: opts.system }] };
|
|
47
65
|
}
|
|
48
|
-
if (tools && tools.length
|
|
49
|
-
|
|
66
|
+
if (opts?.tools && opts.tools.length)
|
|
67
|
+
body.tools = opts.tools;
|
|
68
|
+
const generationConfig = {};
|
|
69
|
+
if (opts?.thinking) {
|
|
70
|
+
generationConfig.thinkingConfig = {
|
|
71
|
+
includeThoughts: true,
|
|
72
|
+
thinkingBudget: effortToThinkingBudget(opts.effort),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
if (Object.keys(generationConfig).length) {
|
|
76
|
+
body.generationConfig = generationConfig;
|
|
77
|
+
}
|
|
78
|
+
return body;
|
|
79
|
+
}
|
|
80
|
+
/** Parse the SSE stream response line by line into complete JSON chunks. */
|
|
81
|
+
async *parseSSEStream(response) {
|
|
82
|
+
const reader = response.body.getReader();
|
|
83
|
+
const decoder = new TextDecoder();
|
|
84
|
+
let buffer = '';
|
|
85
|
+
let dataLines = [];
|
|
86
|
+
while (true) {
|
|
87
|
+
const { done, value } = await reader.read();
|
|
88
|
+
if (done)
|
|
89
|
+
break;
|
|
90
|
+
buffer += decoder.decode(value, { stream: true });
|
|
91
|
+
let nlIdx;
|
|
92
|
+
while ((nlIdx = buffer.indexOf('\n')) !== -1) {
|
|
93
|
+
const line = buffer.slice(0, nlIdx).replace(/\r$/, '');
|
|
94
|
+
buffer = buffer.slice(nlIdx + 1);
|
|
95
|
+
if (line.startsWith('data: ')) {
|
|
96
|
+
dataLines.push(line.slice(6));
|
|
97
|
+
}
|
|
98
|
+
else if (line.startsWith('event:')) {
|
|
99
|
+
// `event: default` lines are Gemini's event boundaries — yield
|
|
100
|
+
// accumulated data before moving to the next event.
|
|
101
|
+
if (dataLines.length > 0) {
|
|
102
|
+
for (const dl of dataLines) {
|
|
103
|
+
const trimmed = dl.trim();
|
|
104
|
+
if (!trimmed)
|
|
105
|
+
continue;
|
|
106
|
+
try {
|
|
107
|
+
yield JSON.parse(trimmed);
|
|
108
|
+
}
|
|
109
|
+
catch { /* skip malformed */ }
|
|
110
|
+
}
|
|
111
|
+
dataLines = [];
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else if (line === '') {
|
|
115
|
+
if (dataLines.length > 0) {
|
|
116
|
+
for (const dl of dataLines) {
|
|
117
|
+
const trimmed = dl.trim();
|
|
118
|
+
if (!trimmed)
|
|
119
|
+
continue;
|
|
120
|
+
try {
|
|
121
|
+
yield JSON.parse(trimmed);
|
|
122
|
+
}
|
|
123
|
+
catch { /* skip malformed */ }
|
|
124
|
+
}
|
|
125
|
+
dataLines = [];
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// ignore comment lines (':'), id:, retry: — skip them
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (dataLines.length > 0) {
|
|
132
|
+
for (const dl of dataLines) {
|
|
133
|
+
const trimmed = dl.trim();
|
|
134
|
+
if (!trimmed)
|
|
135
|
+
continue;
|
|
136
|
+
try {
|
|
137
|
+
yield JSON.parse(trimmed);
|
|
138
|
+
}
|
|
139
|
+
catch { /* empty */ }
|
|
140
|
+
}
|
|
50
141
|
}
|
|
51
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
52
|
-
return this.genAI.getGenerativeModel(params);
|
|
53
142
|
}
|
|
54
143
|
stream(args) {
|
|
55
144
|
const model = args.model || this.defaultModel;
|
|
145
|
+
const thinking = this.isThinkingModel(model);
|
|
56
146
|
const tools = args.tools ? this.toFunctionDeclarations(args.tools) : undefined;
|
|
57
|
-
const genModel = this.getModel(model, tools);
|
|
58
147
|
const contents = this.mapMessages(args.messages);
|
|
59
|
-
const
|
|
148
|
+
const requestBody = this.buildRequestBody(model, contents, {
|
|
149
|
+
system: args.system,
|
|
150
|
+
tools: tools ? [{ functionDeclarations: tools }] : undefined,
|
|
151
|
+
thinking,
|
|
152
|
+
effort: args.effort,
|
|
153
|
+
});
|
|
154
|
+
const controller = new AbortController();
|
|
155
|
+
if (args.signal) {
|
|
156
|
+
args.signal.addEventListener('abort', () => controller.abort(), { once: true });
|
|
157
|
+
}
|
|
158
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
159
|
+
const self = this;
|
|
60
160
|
async function* generator() {
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
161
|
+
const url = self.apiEndpoint(model, 'streamGenerateContent', true);
|
|
162
|
+
const response = await fetch(url, {
|
|
163
|
+
method: 'POST',
|
|
164
|
+
headers: {
|
|
165
|
+
'Content-Type': 'application/json',
|
|
166
|
+
'x-goog-api-key': self.apiKey,
|
|
167
|
+
},
|
|
168
|
+
body: JSON.stringify(requestBody),
|
|
169
|
+
signal: controller.signal,
|
|
65
170
|
});
|
|
66
|
-
|
|
67
|
-
|
|
171
|
+
if (!response.ok) {
|
|
172
|
+
const errText = await response.text();
|
|
173
|
+
throw new Error(`Google API error ${response.status} (${url}): ${errText}`);
|
|
174
|
+
}
|
|
68
175
|
const rawParts = [];
|
|
69
|
-
|
|
70
|
-
|
|
176
|
+
let accumulatedThinking = '';
|
|
177
|
+
let totalInputTokens = 0;
|
|
178
|
+
let totalOutputTokens = 0;
|
|
179
|
+
for await (const chunk of self.parseSSEStream(response)) {
|
|
180
|
+
if (args.signal?.aborted || controller.signal.aborted) {
|
|
71
181
|
break;
|
|
72
182
|
}
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
yield { type: 'text-delta', text };
|
|
76
|
-
}
|
|
77
|
-
// Capture raw parts from each chunk before the SDK strips unknown fields
|
|
78
|
-
const chunkParts = chunk.candidates?.[0]?.content?.parts ?? [];
|
|
183
|
+
const apiChunk = chunk;
|
|
184
|
+
const chunkParts = apiChunk.candidates?.[0]?.content?.parts ?? [];
|
|
79
185
|
for (const part of chunkParts) {
|
|
80
|
-
|
|
186
|
+
const raw = part;
|
|
187
|
+
if (raw.thought === true && typeof raw.text === 'string' && raw.text) {
|
|
188
|
+
accumulatedThinking += raw.text;
|
|
189
|
+
yield { type: 'thinking-delta', text: raw.text };
|
|
190
|
+
}
|
|
191
|
+
else if (typeof raw.text === 'string' && raw.text) {
|
|
192
|
+
yield { type: 'text-delta', text: raw.text };
|
|
193
|
+
}
|
|
194
|
+
rawParts.push(raw);
|
|
81
195
|
}
|
|
196
|
+
const usage = chunk.usageMetadata;
|
|
197
|
+
if (usage) {
|
|
198
|
+
totalInputTokens = Number(usage.promptTokenCount ?? totalInputTokens);
|
|
199
|
+
totalOutputTokens = Number(usage.candidatesTokenCount ?? totalOutputTokens);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (accumulatedThinking) {
|
|
203
|
+
yield { type: 'thinking-block', thinking: accumulatedThinking, signature: '' };
|
|
82
204
|
}
|
|
83
|
-
if (args.signal?.aborted) {
|
|
205
|
+
if (args.signal?.aborted || controller.signal.aborted) {
|
|
84
206
|
yield { type: 'stop', reason: 'aborted' };
|
|
85
207
|
return;
|
|
86
208
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
const fc = p.functionCall;
|
|
96
|
-
const sig = (typeof p.thoughtSignature === 'string' ? p.thoughtSignature : undefined)
|
|
97
|
-
?? (typeof p.thought_signature === 'string' ? p.thought_signature : undefined);
|
|
98
|
-
yield {
|
|
99
|
-
type: 'tool-call',
|
|
100
|
-
id: nextCallId(),
|
|
101
|
-
name: fc.name,
|
|
102
|
-
input: (fc.args ?? {}),
|
|
103
|
-
...(sig ? { thoughtSignature: sig } : {}),
|
|
104
|
-
};
|
|
209
|
+
let thoughtSignature = '';
|
|
210
|
+
for (const p of rawParts) {
|
|
211
|
+
if (p.functionCall && typeof p.functionCall === 'object') {
|
|
212
|
+
// Extract thoughtSignature from function call part (Gemini API quirk)
|
|
213
|
+
if (!thoughtSignature) {
|
|
214
|
+
thoughtSignature = (typeof p.thoughtSignature === 'string' ? p.thoughtSignature : undefined)
|
|
215
|
+
?? (typeof p.thought_signature === 'string' ? p.thought_signature : undefined)
|
|
216
|
+
?? '';
|
|
105
217
|
}
|
|
218
|
+
const fc = p.functionCall;
|
|
219
|
+
yield {
|
|
220
|
+
type: 'tool-call',
|
|
221
|
+
id: nextCallId(),
|
|
222
|
+
name: fc.name,
|
|
223
|
+
input: (fc.args ?? {}),
|
|
224
|
+
...(thoughtSignature ? { thoughtSignature: thoughtSignature } : {}),
|
|
225
|
+
};
|
|
106
226
|
}
|
|
107
227
|
}
|
|
108
|
-
|
|
109
|
-
|
|
228
|
+
if (totalInputTokens || totalOutputTokens) {
|
|
229
|
+
yield { type: 'usage', inputTokens: totalInputTokens, outputTokens: totalOutputTokens };
|
|
110
230
|
}
|
|
111
231
|
yield { type: 'stop', reason: 'stop' };
|
|
112
232
|
}
|
|
113
233
|
return {
|
|
114
234
|
iterable: generator(),
|
|
115
235
|
cancel() {
|
|
116
|
-
|
|
117
|
-
// The signal.aborted check inside the generator loop breaks on the
|
|
118
|
-
// next iteration, but there's no way to synchronously abort.
|
|
236
|
+
controller.abort();
|
|
119
237
|
},
|
|
120
238
|
};
|
|
121
239
|
}
|
|
122
240
|
async check(prompt, args) {
|
|
123
241
|
const model = args?.model || this.defaultModel;
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
contents: [{ role: 'user', parts: [{ text: prompt }] }],
|
|
127
|
-
systemInstruction: args?.system,
|
|
242
|
+
const requestBody = this.buildRequestBody(model, [{ role: 'user', parts: [{ text: prompt }] }], {
|
|
243
|
+
system: args?.system,
|
|
128
244
|
});
|
|
129
|
-
|
|
245
|
+
const response = await fetch(this.apiEndpoint(model, 'generateContent'), {
|
|
246
|
+
method: 'POST',
|
|
247
|
+
headers: {
|
|
248
|
+
'Content-Type': 'application/json',
|
|
249
|
+
'x-goog-api-key': this.apiKey,
|
|
250
|
+
},
|
|
251
|
+
body: JSON.stringify(requestBody),
|
|
252
|
+
signal: args?.signal,
|
|
253
|
+
});
|
|
254
|
+
if (!response.ok) {
|
|
255
|
+
const errText = await response.text();
|
|
256
|
+
throw new Error(`Google API error ${response.status}: ${errText}`);
|
|
257
|
+
}
|
|
258
|
+
const json = await response.json();
|
|
259
|
+
const parts = (json.candidates?.[0]?.content?.parts ?? []);
|
|
260
|
+
const text = parts.map((p) => p.text).filter(Boolean).join('');
|
|
261
|
+
return text.trim().slice(0, 256);
|
|
130
262
|
}
|
|
131
263
|
async complete(args) {
|
|
132
264
|
const model = args.model || this.defaultModel;
|
|
133
|
-
const
|
|
134
|
-
const genModel = this.getModel(model, tools);
|
|
265
|
+
const thinking = this.isThinkingModel(model);
|
|
135
266
|
let contents = this.mapMessages(args.messages);
|
|
136
267
|
const allText = [];
|
|
137
268
|
let stopReason = 'stop';
|
|
138
269
|
let toolCalls;
|
|
139
270
|
for (let turn = 0; turn < 16; turn++) {
|
|
140
|
-
const
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
271
|
+
const tools = args.tools ? this.toFunctionDeclarations(args.tools) : undefined;
|
|
272
|
+
const requestBody = this.buildRequestBody(model, contents, {
|
|
273
|
+
system: args.system,
|
|
274
|
+
tools: tools ? [{ functionDeclarations: tools }] : undefined,
|
|
275
|
+
thinking,
|
|
276
|
+
effort: args.effort,
|
|
277
|
+
});
|
|
278
|
+
const response = await fetch(this.apiEndpoint(model, 'generateContent'), {
|
|
279
|
+
method: 'POST',
|
|
280
|
+
headers: {
|
|
281
|
+
'Content-Type': 'application/json',
|
|
282
|
+
'x-goog-api-key': this.apiKey,
|
|
283
|
+
},
|
|
284
|
+
body: JSON.stringify(requestBody),
|
|
285
|
+
signal: args.signal,
|
|
145
286
|
});
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
const
|
|
287
|
+
if (!response.ok) {
|
|
288
|
+
const errText = await response.text();
|
|
289
|
+
throw new Error(`Google API error ${response.status}: ${errText}`);
|
|
290
|
+
}
|
|
291
|
+
const json = await response.json();
|
|
292
|
+
const rawParts = (json.candidates?.[0]?.content?.parts ?? []);
|
|
293
|
+
// Collect text (non-thought) parts
|
|
294
|
+
for (const part of rawParts) {
|
|
295
|
+
if (part.thought !== true && typeof part.text === 'string' && part.text) {
|
|
296
|
+
allText.push(part.text);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
151
299
|
const fcParts = rawParts.filter((p) => p.functionCall);
|
|
152
300
|
if (fcParts.length === 0) {
|
|
153
301
|
stopReason = 'stop';
|
|
@@ -158,8 +306,6 @@ export class GoogleGeminiProvider {
|
|
|
158
306
|
return { id: nextCallId(), name: fc.name, input: (fc.args ?? {}) };
|
|
159
307
|
});
|
|
160
308
|
stopReason = 'tool_use';
|
|
161
|
-
// Build follow-up content echoing thoughtSignature back for thinking models.
|
|
162
|
-
// thoughtSignature is a top-level Part field (camelCase in JS SDK).
|
|
163
309
|
contents.push({
|
|
164
310
|
role: 'model',
|
|
165
311
|
parts: fcParts.map((p) => {
|
|
@@ -180,7 +326,7 @@ export class GoogleGeminiProvider {
|
|
|
180
326
|
parts: [{
|
|
181
327
|
functionResponse: {
|
|
182
328
|
name: fc.name,
|
|
183
|
-
response: {
|
|
329
|
+
response: { output: fc.args },
|
|
184
330
|
},
|
|
185
331
|
}],
|
|
186
332
|
});
|
|
@@ -257,6 +403,14 @@ export class GoogleGeminiProvider {
|
|
|
257
403
|
if (c.type === 'text') {
|
|
258
404
|
parts.push({ text: c.text });
|
|
259
405
|
}
|
|
406
|
+
else if (c.type === 'thinking') {
|
|
407
|
+
// Thinking blocks from turn loop are sent as regular text (Gemini
|
|
408
|
+
// uses accumulated text approach; thinking blocks are internal).
|
|
409
|
+
const tc = c;
|
|
410
|
+
if (tc.thinking) {
|
|
411
|
+
parts.push({ text: tc.thinking });
|
|
412
|
+
}
|
|
413
|
+
}
|
|
260
414
|
else if (c.type === 'tool-use') {
|
|
261
415
|
// thoughtSignature is a top-level Part field (camelCase in JS SDK)
|
|
262
416
|
const fcPart = {
|