@ank1015/agents-provider-gemini 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/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ # @ank1015/agents-provider-gemini
2
+
3
+ ## 0.1.0
4
+
5
+ - Initial Gemini Interactions runtime adapter.
package/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # @ank1015/agents-provider-gemini
2
+
3
+ Runtime Gemini Interactions provider adapter for the `@ank1015/agents` packages.
4
+
5
+ This package uses Google's Interactions API through the `@google/genai` SDK. It streams Gemini interaction events into the normalized assistant event stream used by `@ank1015/agents-contracts`, while preserving Gemini native steps for stateless multi-turn replay.
6
+
7
+ ## Install
8
+
9
+ ```sh
10
+ pnpm add @ank1015/agents-provider-gemini
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ```ts
16
+ import { createGeminiProviderAdapter } from '@ank1015/agents-provider-gemini';
17
+
18
+ const adapter = createGeminiProviderAdapter({
19
+ provider: 'gemini',
20
+ apiKey: {
21
+ type: 'env',
22
+ name: 'GEMINI_API_KEY',
23
+ },
24
+ });
25
+ ```
26
+
27
+ Pass `baseUrl` in provider config to override the SDK default Gemini endpoint. Values ending in an API version, such as `https://generativelanguage.googleapis.com/v1beta`, are split into SDK `baseUrl` and `apiVersion`.
28
+
29
+ ## Notes
30
+
31
+ - Runtime model support is catalog-only through `@ank1015/agents-provider-gemini-spec`.
32
+ - The adapter always sends `stream: true` and `store: false`.
33
+ - Built-in Gemini tools are provided through `providerOptions.built_in_tools`; generic request `tools` only accepts function tools.
34
+ - Output image/audio generation is not normalized in v1, but native Gemini steps are preserved.
@@ -0,0 +1,36 @@
1
+ import type { AssistantMessageEventStreamSource, LLMProviderAdapter, LLMProviderAdapterFactory, LLMRequest, Model } from '@ank1015/agents-contracts';
2
+ import type { GoogleGenAIOptions } from '@google/genai';
3
+ import type { GeminiProvider, GeminiProviderConfig } from '@ank1015/agents-provider-gemini-spec';
4
+ import { type GeminiInteractionCreateParamsStreaming, type GeminiInteractionStreamEvent } from './mapping.js';
5
+ export type GeminiHttpOptions = NonNullable<GoogleGenAIOptions['httpOptions']>;
6
+ export interface GeminiInteractionsClient {
7
+ interactions: {
8
+ create(params: GeminiInteractionCreateParamsStreaming, options?: {
9
+ signal?: AbortSignal;
10
+ }): AsyncIterable<GeminiInteractionStreamEvent> | Promise<AsyncIterable<GeminiInteractionStreamEvent>>;
11
+ };
12
+ }
13
+ export interface GeminiProviderAdapterDeps {
14
+ readonly client?: GeminiInteractionsClient;
15
+ readonly createClient?: (config: GeminiProviderConfig) => GeminiInteractionsClient;
16
+ readonly createMessageId?: () => string;
17
+ readonly now?: () => number;
18
+ /** Resolves a model id to its descriptor. Defaults to the package's static catalog. */
19
+ readonly resolveModel?: (modelId: string) => Model<GeminiProvider> | undefined;
20
+ }
21
+ export declare class GeminiProviderAdapter implements LLMProviderAdapter<GeminiProvider> {
22
+ #private;
23
+ readonly provider: "gemini";
24
+ constructor(config: GeminiProviderConfig, deps?: GeminiProviderAdapterDeps);
25
+ stream(request: LLMRequest<GeminiProvider>): AssistantMessageEventStreamSource<GeminiProvider>;
26
+ }
27
+ export declare class GeminiProviderAdapterFactory implements LLMProviderAdapterFactory<GeminiProvider> {
28
+ #private;
29
+ readonly provider: "gemini";
30
+ constructor(deps?: GeminiProviderAdapterDeps);
31
+ create(config: GeminiProviderConfig): GeminiProviderAdapter;
32
+ }
33
+ export declare function createGeminiProviderAdapter(config: GeminiProviderConfig, deps?: GeminiProviderAdapterDeps): GeminiProviderAdapter;
34
+ export declare function createGeminiProviderAdapterFactory(deps?: GeminiProviderAdapterDeps): GeminiProviderAdapterFactory;
35
+ export declare function normalizeGeminiHttpOptions(config: Pick<GeminiProviderConfig, 'baseUrl' | 'headers'>): GeminiHttpOptions | undefined;
36
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAKV,iCAAiC,EAMjC,kBAAkB,EAClB,yBAAyB,EACzB,UAAU,EACV,KAAK,EAIN,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EASV,cAAc,EACd,oBAAoB,EAGrB,MAAM,sCAAsC,CAAC;AAO9C,OAAO,EAEL,KAAK,sCAAsC,EAC3C,KAAK,4BAA4B,EAIlC,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;AAE/E,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE;QACZ,MAAM,CACJ,MAAM,EAAE,sCAAsC,EAC9C,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GAEhC,aAAa,CAAC,4BAA4B,CAAC,GAC3C,OAAO,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC,CAAC;KAC1D,CAAC;CACH;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,wBAAwB,CAAC;IACnF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;IACxC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,uFAAuF;IACvF,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;CAChF;AAuDD,qBAAa,qBAAsB,YAAW,kBAAkB,CAAC,cAAc,CAAC;;IAC9E,QAAQ,CAAC,QAAQ,WAAmB;gBAOxB,MAAM,EAAE,oBAAoB,EAAE,IAAI,GAAE,yBAA8B;IAS9E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,GAAG,iCAAiC,CAAC,cAAc,CAAC;CA2J/F;AAED,qBAAa,4BACX,YAAW,yBAAyB,CAAC,cAAc,CAAC;;IAEpD,QAAQ,CAAC,QAAQ,WAAmB;gBAGxB,IAAI,GAAE,yBAA8B;IAIhD,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,qBAAqB;CAG5D;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,oBAAoB,EAC5B,IAAI,CAAC,EAAE,yBAAyB,GAC/B,qBAAqB,CAEvB;AAED,wBAAgB,kCAAkC,CAChD,IAAI,CAAC,EAAE,yBAAyB,GAC/B,4BAA4B,CAE9B;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,GAAG,SAAS,CAAC,GACxD,iBAAiB,GAAG,SAAS,CAmB/B"}
@@ -0,0 +1,723 @@
1
+ import { GoogleGenAI } from '@google/genai';
2
+ import { createEventStream } from '@ank1015/agents-contracts';
3
+ import { GEMINI_PROVIDER, geminiProviderConfigSchema, getGeminiModel, } from '@ank1015/agents-provider-gemini-spec';
4
+ import { getGeminiErrorDetails, isAbortError } from './errors.js';
5
+ import { buildGeminiInteractionParams, } from './mapping.js';
6
+ export class GeminiProviderAdapter {
7
+ provider = GEMINI_PROVIDER;
8
+ #config;
9
+ #client;
10
+ #createMessageId;
11
+ #now;
12
+ #resolveModel;
13
+ constructor(config, deps = {}) {
14
+ this.#config = geminiProviderConfigSchema.parse(config);
15
+ this.#client =
16
+ deps.client ?? deps.createClient?.(this.#config) ?? createGeminiClient(this.#config);
17
+ this.#createMessageId = deps.createMessageId ?? createDefaultMessageId;
18
+ this.#now = deps.now ?? Date.now;
19
+ this.#resolveModel = deps.resolveModel ?? getGeminiModel;
20
+ }
21
+ stream(request) {
22
+ const stream = createEventStream();
23
+ void this.#produce(request, stream);
24
+ return stream;
25
+ }
26
+ async #produce(request, stream) {
27
+ const model = this.#resolveModel(request.modelId);
28
+ if (!model) {
29
+ const message = this.#buildUnknownModelMessage(request);
30
+ stream.push({ type: 'error', reason: 'error', message });
31
+ stream.end(message);
32
+ return;
33
+ }
34
+ const state = {
35
+ request,
36
+ model,
37
+ stream,
38
+ startedAt: this.#now(),
39
+ content: [],
40
+ blocks: new Map(),
41
+ nativeSteps: new Map(),
42
+ completed: false,
43
+ };
44
+ try {
45
+ const params = buildGeminiInteractionParams(request, model);
46
+ const requestOptions = request.signal ? { signal: request.signal } : undefined;
47
+ const geminiStream = await this.#client.interactions.create(params, requestOptions);
48
+ stream.push({ type: 'start' });
49
+ for await (const event of geminiStream) {
50
+ handleStreamEvent(state, event);
51
+ }
52
+ if (request.signal?.aborted) {
53
+ const message = this.#buildAbortedMessage(state);
54
+ stream.push({ type: 'aborted', reason: 'aborted', message });
55
+ stream.end(message);
56
+ return;
57
+ }
58
+ closeOpenBlocks(state);
59
+ if (!state.completed) {
60
+ throw new Error('Gemini stream ended without interaction.completed.');
61
+ }
62
+ const message = this.#buildSuccessfulMessage(state);
63
+ stream.push({ type: 'done', reason: message.stopReason, message });
64
+ stream.end(message);
65
+ }
66
+ catch (error) {
67
+ closeOpenBlocks(state, { allowInvalidToolJson: true });
68
+ if (request.signal?.aborted || isAbortError(error)) {
69
+ const message = this.#buildAbortedMessage(state);
70
+ stream.push({ type: 'aborted', reason: 'aborted', message });
71
+ stream.end(message);
72
+ return;
73
+ }
74
+ const message = this.#buildFailedMessage(state, error);
75
+ stream.push({ type: 'error', reason: 'error', message });
76
+ stream.end(message);
77
+ }
78
+ }
79
+ #buildSuccessfulMessage(state) {
80
+ const nativeMessage = buildNativeMessage(state);
81
+ if (!nativeMessage) {
82
+ throw new Error('Cannot build a successful Gemini message without an interaction.');
83
+ }
84
+ return {
85
+ role: 'assistant',
86
+ id: this.#createMessageId(),
87
+ model: modelRef(state),
88
+ usage: usageFromResponse(state, state.model),
89
+ duration: this.#now() - state.startedAt,
90
+ nativeMessage,
91
+ content: state.content,
92
+ timestamp: this.#now(),
93
+ stopReason: mapDoneStopReason(state.status, state.content),
94
+ };
95
+ }
96
+ #buildFailedMessage(state, error) {
97
+ const message = {
98
+ role: 'assistant',
99
+ id: this.#createMessageId(),
100
+ model: modelRef(state),
101
+ usage: usageFromResponse(state, state.model),
102
+ duration: this.#now() - state.startedAt,
103
+ content: state.content,
104
+ timestamp: this.#now(),
105
+ stopReason: 'error',
106
+ error: getGeminiErrorDetails(error),
107
+ };
108
+ const nativeMessage = buildNativeMessage(state);
109
+ if (nativeMessage) {
110
+ message.nativeMessage = nativeMessage;
111
+ }
112
+ return message;
113
+ }
114
+ #buildAbortedMessage(state) {
115
+ const message = {
116
+ role: 'assistant',
117
+ id: this.#createMessageId(),
118
+ model: modelRef(state),
119
+ usage: usageFromResponse(state, state.model),
120
+ duration: this.#now() - state.startedAt,
121
+ content: state.content,
122
+ timestamp: this.#now(),
123
+ stopReason: 'aborted',
124
+ };
125
+ const nativeMessage = buildNativeMessage(state);
126
+ if (nativeMessage) {
127
+ message.nativeMessage = nativeMessage;
128
+ }
129
+ return message;
130
+ }
131
+ #buildUnknownModelMessage(request) {
132
+ return {
133
+ role: 'assistant',
134
+ id: this.#createMessageId(),
135
+ model: { provider: GEMINI_PROVIDER, id: request.modelId },
136
+ duration: 0,
137
+ content: [],
138
+ timestamp: this.#now(),
139
+ stopReason: 'error',
140
+ error: {
141
+ message: `Model "${request.modelId}" is not a known Gemini model.`,
142
+ canRetry: false,
143
+ },
144
+ };
145
+ }
146
+ }
147
+ export class GeminiProviderAdapterFactory {
148
+ provider = GEMINI_PROVIDER;
149
+ #deps;
150
+ constructor(deps = {}) {
151
+ this.#deps = deps;
152
+ }
153
+ create(config) {
154
+ return new GeminiProviderAdapter(config, this.#deps);
155
+ }
156
+ }
157
+ export function createGeminiProviderAdapter(config, deps) {
158
+ return new GeminiProviderAdapter(config, deps);
159
+ }
160
+ export function createGeminiProviderAdapterFactory(deps) {
161
+ return new GeminiProviderAdapterFactory(deps);
162
+ }
163
+ export function normalizeGeminiHttpOptions(config) {
164
+ const httpOptions = {};
165
+ if (config.baseUrl) {
166
+ const trimmed = config.baseUrl.replace(/\/+$/, '');
167
+ const versionMatch = trimmed.match(/\/(v[0-9][A-Za-z0-9_-]*)$/);
168
+ if (versionMatch?.[1]) {
169
+ httpOptions.baseUrl = trimmed.slice(0, -(versionMatch[1].length + 1));
170
+ httpOptions.apiVersion = versionMatch[1];
171
+ }
172
+ else {
173
+ httpOptions.baseUrl = trimmed;
174
+ }
175
+ }
176
+ if (config.headers) {
177
+ httpOptions.headers = config.headers;
178
+ }
179
+ return Object.keys(httpOptions).length > 0 ? httpOptions : undefined;
180
+ }
181
+ function createGeminiClient(config) {
182
+ const options = {
183
+ apiKey: resolveSecret(config.apiKey),
184
+ };
185
+ const httpOptions = normalizeGeminiHttpOptions(config);
186
+ if (httpOptions) {
187
+ options.httpOptions = httpOptions;
188
+ }
189
+ return new GoogleGenAI(options);
190
+ }
191
+ function resolveSecret(secret) {
192
+ if (secret.type === 'value') {
193
+ return secret.value;
194
+ }
195
+ return resolveEnvSecret(secret.name);
196
+ }
197
+ function resolveEnvSecret(name) {
198
+ const processLike = globalThis.process;
199
+ const value = processLike?.env?.[name];
200
+ if (!value) {
201
+ throw new Error(`Gemini API key environment variable "${name}" is not set.`);
202
+ }
203
+ return value;
204
+ }
205
+ function handleStreamEvent(state, event) {
206
+ updateUsageFromMetadata(state, event.metadata);
207
+ switch (event.event_type) {
208
+ case 'interaction.created':
209
+ mergeInteraction(state, event.interaction);
210
+ return;
211
+ case 'interaction.status_update':
212
+ state.status = event.status;
213
+ return;
214
+ case 'interaction.completed':
215
+ mergeInteraction(state, event.interaction);
216
+ state.completed = true;
217
+ return;
218
+ case 'step.start':
219
+ handleStepStart(state, event.index, event.step);
220
+ return;
221
+ case 'step.delta':
222
+ handleStepDelta(state, event.index, event.delta);
223
+ return;
224
+ case 'step.stop':
225
+ if (event.usage) {
226
+ state.usage = event.usage;
227
+ }
228
+ finishBlockByIndex(state, event.index);
229
+ return;
230
+ case 'error':
231
+ throw errorFromStreamEvent(event.error);
232
+ }
233
+ }
234
+ function mergeInteraction(state, interaction) {
235
+ state.responseId = state.responseId ?? interaction.id;
236
+ state.responseObject = interaction.object ?? state.responseObject;
237
+ state.responseModel = interaction.model ?? state.responseModel;
238
+ state.status = interaction.status;
239
+ state.created = interaction.created ?? state.created;
240
+ state.updated = interaction.updated ?? state.updated;
241
+ state.serviceTier = interaction.service_tier ?? state.serviceTier;
242
+ state.outputText = interaction.output_text ?? state.outputText;
243
+ if (interaction.usage) {
244
+ state.usage = interaction.usage;
245
+ }
246
+ if (interaction.steps) {
247
+ interaction.steps.forEach((step, index) => {
248
+ if (!state.nativeSteps.has(index)) {
249
+ state.nativeSteps.set(index, cloneStep(step));
250
+ }
251
+ });
252
+ }
253
+ }
254
+ function handleStepStart(state, index, step) {
255
+ const nativeStep = cloneStep(step);
256
+ state.nativeSteps.set(index, nativeStep);
257
+ if (isModelOutputStep(nativeStep)) {
258
+ const content = Array.isArray(nativeStep.content) ? nativeStep.content : [];
259
+ for (const part of content) {
260
+ appendTextContent(state, index, part);
261
+ }
262
+ return;
263
+ }
264
+ if (isThoughtStep(nativeStep)) {
265
+ const summary = Array.isArray(nativeStep.summary) ? nativeStep.summary : [];
266
+ for (const part of summary) {
267
+ appendThinkingContent(state, index, part);
268
+ }
269
+ return;
270
+ }
271
+ if (isFunctionCallStep(nativeStep)) {
272
+ const block = getToolCallBlock(state, index);
273
+ block.toolCallId = nativeStep.id;
274
+ block.name = nativeStep.name;
275
+ if (Object.keys(nativeStep.arguments ?? {}).length > 0) {
276
+ block.partialJson = JSON.stringify(nativeStep.arguments);
277
+ }
278
+ openToolCallBlockIfReady(state, block);
279
+ updateToolCallArguments(state, block, parsePartialJsonObject(block.partialJson));
280
+ }
281
+ }
282
+ function handleStepDelta(state, index, delta) {
283
+ mergeDeltaIntoNativeStep(state, index, delta);
284
+ const step = state.nativeSteps.get(index);
285
+ if (step && isModelOutputStep(step) && isTextDelta(delta)) {
286
+ appendTextDelta(state, index, delta.text);
287
+ return;
288
+ }
289
+ if (step && isThoughtStep(step) && isThoughtSummaryDelta(delta)) {
290
+ if (delta.content) {
291
+ appendThinkingContent(state, index, delta.content);
292
+ }
293
+ return;
294
+ }
295
+ if (step && isFunctionCallStep(step) && isArgumentsDelta(delta)) {
296
+ appendToolCallArgumentsDelta(state, index, delta.arguments ?? delta.partial_arguments ?? '');
297
+ }
298
+ }
299
+ function mergeDeltaIntoNativeStep(state, index, delta) {
300
+ const step = ensureNativeStepForDelta(state, index, delta);
301
+ if (isModelOutputStep(step)) {
302
+ const modelStep = step;
303
+ modelStep.content ??= [];
304
+ if (isTextDelta(delta)) {
305
+ modelStep.content.push({ type: 'text', text: delta.text });
306
+ return;
307
+ }
308
+ if (isNativeContentDelta(delta)) {
309
+ modelStep.content.push(delta);
310
+ }
311
+ return;
312
+ }
313
+ if (isThoughtStep(step)) {
314
+ const thoughtStep = step;
315
+ if (isThoughtSignatureDelta(delta)) {
316
+ thoughtStep.signature = delta.signature;
317
+ return;
318
+ }
319
+ if (isThoughtSummaryDelta(delta) && delta.content) {
320
+ thoughtStep.summary ??= [];
321
+ thoughtStep.summary.push(delta.content);
322
+ }
323
+ return;
324
+ }
325
+ if (isFunctionCallStep(step)) {
326
+ const functionStep = step;
327
+ if ('signature' in delta && typeof delta.signature === 'string') {
328
+ functionStep.signature = delta.signature;
329
+ }
330
+ return;
331
+ }
332
+ Object.assign(step, delta);
333
+ }
334
+ function ensureNativeStepForDelta(state, index, delta) {
335
+ const existing = state.nativeSteps.get(index);
336
+ if (existing) {
337
+ return existing;
338
+ }
339
+ const step = { type: inferStepType(delta) };
340
+ state.nativeSteps.set(index, step);
341
+ return step;
342
+ }
343
+ function inferStepType(delta) {
344
+ if (delta.type === 'text') {
345
+ return 'model_output';
346
+ }
347
+ if (delta.type === 'thought_summary' || delta.type === 'thought_signature') {
348
+ return 'thought';
349
+ }
350
+ if (delta.type === 'arguments_delta') {
351
+ return 'function_call';
352
+ }
353
+ return delta.type;
354
+ }
355
+ function isNativeContentDelta(delta) {
356
+ return (delta.type === 'image' ||
357
+ delta.type === 'audio' ||
358
+ delta.type === 'document' ||
359
+ delta.type === 'video');
360
+ }
361
+ function isModelOutputStep(step) {
362
+ return step.type === 'model_output';
363
+ }
364
+ function isThoughtStep(step) {
365
+ return step.type === 'thought';
366
+ }
367
+ function isFunctionCallStep(step) {
368
+ return (step.type === 'function_call' &&
369
+ typeof step.id === 'string' &&
370
+ typeof step.name === 'string');
371
+ }
372
+ function isTextDelta(delta) {
373
+ return delta.type === 'text' && typeof delta.text === 'string';
374
+ }
375
+ function isThoughtSummaryDelta(delta) {
376
+ return (delta.type === 'thought_summary' &&
377
+ (!('content' in delta) ||
378
+ delta.content === undefined ||
379
+ isGeminiInteractionContent(delta.content)));
380
+ }
381
+ function isThoughtSignatureDelta(delta) {
382
+ return (delta.type === 'thought_signature' &&
383
+ (!('signature' in delta) ||
384
+ delta.signature === undefined ||
385
+ typeof delta.signature === 'string'));
386
+ }
387
+ function isArgumentsDelta(delta) {
388
+ return (delta.type === 'arguments_delta' &&
389
+ (!('arguments' in delta) ||
390
+ delta.arguments === undefined ||
391
+ typeof delta.arguments === 'string') &&
392
+ (!('partial_arguments' in delta) ||
393
+ delta.partial_arguments === undefined ||
394
+ typeof delta.partial_arguments === 'string'));
395
+ }
396
+ function isGeminiInteractionContent(value) {
397
+ return (typeof value === 'object' &&
398
+ value !== null &&
399
+ typeof value.type === 'string');
400
+ }
401
+ function appendTextContent(state, stepIndex, content) {
402
+ if (content.type === 'text' && typeof content.text === 'string') {
403
+ appendTextDelta(state, stepIndex, content.text);
404
+ }
405
+ }
406
+ function appendThinkingContent(state, stepIndex, content) {
407
+ if (content.type !== 'text' || typeof content.text !== 'string') {
408
+ return;
409
+ }
410
+ const block = ensureThinkingBlock(state, stepIndex);
411
+ block.content.thinkingText += content.text;
412
+ state.stream.push({
413
+ type: 'thinking_delta',
414
+ contentIndex: block.contentIndex,
415
+ delta: content.text,
416
+ });
417
+ }
418
+ function appendTextDelta(state, stepIndex, delta) {
419
+ const block = ensureResponseBlock(state, stepIndex);
420
+ block.content.response.content += delta;
421
+ state.stream.push({ type: 'text_delta', contentIndex: block.contentIndex, delta });
422
+ }
423
+ function appendToolCallArgumentsDelta(state, stepIndex, delta) {
424
+ const block = getToolCallBlock(state, stepIndex);
425
+ const step = state.nativeSteps.get(stepIndex);
426
+ if (step && isFunctionCallStep(step)) {
427
+ block.toolCallId = block.toolCallId ?? step.id;
428
+ block.name = block.name ?? step.name;
429
+ }
430
+ openToolCallBlockIfReady(state, block);
431
+ if (delta.length === 0) {
432
+ return;
433
+ }
434
+ block.partialJson += delta;
435
+ updateToolCallArguments(state, block, parsePartialJsonObject(block.partialJson));
436
+ if (block.contentIndex !== undefined) {
437
+ state.stream.push({
438
+ type: 'toolcall_delta',
439
+ contentIndex: block.contentIndex,
440
+ delta,
441
+ });
442
+ }
443
+ }
444
+ function ensureResponseBlock(state, stepIndex) {
445
+ const existing = state.blocks.get(stepIndex);
446
+ if (existing?.type === 'response') {
447
+ return existing;
448
+ }
449
+ const content = {
450
+ type: 'response',
451
+ response: { type: 'text', content: '' },
452
+ };
453
+ const block = {
454
+ type: 'response',
455
+ stepIndex,
456
+ contentIndex: state.content.push(content) - 1,
457
+ content,
458
+ ended: false,
459
+ };
460
+ state.blocks.set(stepIndex, block);
461
+ state.stream.push({ type: 'text_start', contentIndex: block.contentIndex });
462
+ return block;
463
+ }
464
+ function ensureThinkingBlock(state, stepIndex) {
465
+ const existing = state.blocks.get(stepIndex);
466
+ if (existing?.type === 'thinking') {
467
+ return existing;
468
+ }
469
+ const content = { type: 'thinking', thinkingText: '' };
470
+ const block = {
471
+ type: 'thinking',
472
+ stepIndex,
473
+ contentIndex: state.content.push(content) - 1,
474
+ content,
475
+ ended: false,
476
+ };
477
+ state.blocks.set(stepIndex, block);
478
+ state.stream.push({ type: 'thinking_start', contentIndex: block.contentIndex });
479
+ return block;
480
+ }
481
+ function getToolCallBlock(state, stepIndex) {
482
+ const existing = state.blocks.get(stepIndex);
483
+ if (existing?.type === 'tool_call') {
484
+ return existing;
485
+ }
486
+ const block = {
487
+ type: 'tool_call',
488
+ stepIndex,
489
+ partialJson: '',
490
+ ended: false,
491
+ };
492
+ state.blocks.set(stepIndex, block);
493
+ return block;
494
+ }
495
+ function openToolCallBlockIfReady(state, block) {
496
+ if (block.contentIndex !== undefined ||
497
+ block.toolCallId === undefined ||
498
+ block.name === undefined) {
499
+ return;
500
+ }
501
+ const toolCall = {
502
+ type: 'toolCall',
503
+ toolCallId: block.toolCallId,
504
+ name: block.name,
505
+ arguments: parsePartialJsonObject(block.partialJson),
506
+ };
507
+ block.contentIndex = state.content.push(toolCall) - 1;
508
+ state.stream.push({
509
+ type: 'toolcall_start',
510
+ contentIndex: block.contentIndex,
511
+ toolCallId: block.toolCallId,
512
+ name: block.name,
513
+ });
514
+ }
515
+ function updateToolCallArguments(state, block, args) {
516
+ if (block.contentIndex === undefined) {
517
+ return;
518
+ }
519
+ const content = state.content[block.contentIndex];
520
+ if (content?.type === 'toolCall') {
521
+ content.arguments = args;
522
+ }
523
+ }
524
+ function finishBlockByIndex(state, stepIndex) {
525
+ const block = state.blocks.get(stepIndex);
526
+ if (block) {
527
+ finishBlock(state, block);
528
+ }
529
+ }
530
+ function closeOpenBlocks(state, options = {}) {
531
+ for (const block of state.blocks.values()) {
532
+ finishBlock(state, block, options);
533
+ }
534
+ }
535
+ function finishBlock(state, block, options = {}) {
536
+ if (block.ended) {
537
+ return;
538
+ }
539
+ if (block.type === 'response') {
540
+ block.ended = true;
541
+ state.stream.push({
542
+ type: 'text_end',
543
+ contentIndex: block.contentIndex,
544
+ content: block.content,
545
+ });
546
+ return;
547
+ }
548
+ if (block.type === 'thinking') {
549
+ block.ended = true;
550
+ state.stream.push({
551
+ type: 'thinking_end',
552
+ contentIndex: block.contentIndex,
553
+ content: block.content,
554
+ });
555
+ return;
556
+ }
557
+ if (block.contentIndex === undefined || !block.toolCallId || !block.name) {
558
+ if (options.allowInvalidToolJson) {
559
+ return;
560
+ }
561
+ throw new Error('Gemini function_call step ended without an id and name.');
562
+ }
563
+ const args = options.allowInvalidToolJson
564
+ ? parsePartialJsonObject(block.partialJson)
565
+ : parseJsonObject(block.partialJson);
566
+ updateToolCallArguments(state, block, args);
567
+ updateNativeFunctionCallArguments(state, block.stepIndex, args);
568
+ const toolCall = {
569
+ type: 'toolCall',
570
+ toolCallId: block.toolCallId,
571
+ name: block.name,
572
+ arguments: args,
573
+ };
574
+ block.ended = true;
575
+ state.stream.push({
576
+ type: 'toolcall_end',
577
+ contentIndex: block.contentIndex,
578
+ toolCall,
579
+ });
580
+ }
581
+ function updateNativeFunctionCallArguments(state, stepIndex, args) {
582
+ const step = state.nativeSteps.get(stepIndex);
583
+ if (step && isFunctionCallStep(step)) {
584
+ step.arguments = args;
585
+ }
586
+ }
587
+ function buildNativeMessage(state) {
588
+ if (state.responseId === undefined) {
589
+ return undefined;
590
+ }
591
+ const responseText = state.content
592
+ .filter((part) => part.type === 'response')
593
+ .map((part) => part.response.content)
594
+ .join('');
595
+ const steps = [...state.nativeSteps.entries()]
596
+ .sort(([left], [right]) => left - right)
597
+ .map(([, step]) => step);
598
+ const response = {
599
+ id: state.responseId,
600
+ object: state.responseObject ?? 'interaction',
601
+ status: state.status ?? 'completed',
602
+ steps,
603
+ };
604
+ if (state.responseModel) {
605
+ response.model = state.responseModel;
606
+ }
607
+ if (state.created) {
608
+ response.created = state.created;
609
+ }
610
+ if (state.updated) {
611
+ response.updated = state.updated;
612
+ }
613
+ if (state.serviceTier) {
614
+ response.service_tier = state.serviceTier;
615
+ }
616
+ if (state.outputText !== undefined || responseText.length > 0) {
617
+ response.output_text = state.outputText ?? responseText;
618
+ }
619
+ if (state.usage) {
620
+ response.usage = state.usage;
621
+ }
622
+ return response;
623
+ }
624
+ function usageFromResponse(state, model) {
625
+ if (!state.usage) {
626
+ return undefined;
627
+ }
628
+ const totalInput = state.usage.total_input_tokens ?? 0;
629
+ const cacheRead = state.usage.total_cached_tokens ?? 0;
630
+ const input = Math.max(totalInput - cacheRead, 0);
631
+ const output = (state.usage.total_output_tokens ??
632
+ Math.max((state.usage.total_tokens ?? 0) - totalInput, 0)) +
633
+ (state.usage.total_thought_tokens ?? 0);
634
+ const cacheWrite = 0;
635
+ const prices = pricingForPromptTokens(model, totalInput);
636
+ const cost = {
637
+ input: costForTokens(input, prices.input),
638
+ output: costForTokens(output, prices.output),
639
+ cacheRead: costForTokens(cacheRead, prices.cacheRead),
640
+ cacheWrite: costForTokens(cacheWrite, prices.cacheWrite),
641
+ total: 0,
642
+ };
643
+ cost.total = cost.input + cost.output + cost.cacheRead + cost.cacheWrite;
644
+ return {
645
+ input,
646
+ output,
647
+ cacheRead,
648
+ cacheWrite,
649
+ cost,
650
+ };
651
+ }
652
+ function pricingForPromptTokens(model, promptTokens) {
653
+ const catalogModel = model;
654
+ const tier = catalogModel.pricingTiers?.find((candidate) => {
655
+ const { gt, lte } = candidate.promptTokens;
656
+ return (gt === undefined || promptTokens > gt) && (lte === undefined || promptTokens <= lte);
657
+ });
658
+ return tier?.cost ?? model.cost;
659
+ }
660
+ function costForTokens(tokens, costPerMillion) {
661
+ return (tokens * costPerMillion) / 1_000_000;
662
+ }
663
+ function mapDoneStopReason(status, content) {
664
+ switch (status) {
665
+ case 'completed':
666
+ return content.some((part) => part.type === 'toolCall') ? 'toolUse' : 'stop';
667
+ case 'requires_action':
668
+ return 'toolUse';
669
+ case 'incomplete':
670
+ case 'budget_exceeded':
671
+ return 'length';
672
+ default:
673
+ if (!status && content.some((part) => part.type === 'toolCall')) {
674
+ return 'toolUse';
675
+ }
676
+ throw new Error(`Gemini interaction ended with status "${String(status)}".`);
677
+ }
678
+ }
679
+ function modelRef(state) {
680
+ return {
681
+ provider: GEMINI_PROVIDER,
682
+ id: state.request.modelId,
683
+ name: state.model.name,
684
+ };
685
+ }
686
+ function updateUsageFromMetadata(state, metadata) {
687
+ if (metadata?.total_usage) {
688
+ state.usage = metadata.total_usage;
689
+ }
690
+ }
691
+ function errorFromStreamEvent(error) {
692
+ const message = typeof error?.message === 'string' && error.message.length > 0
693
+ ? error.message
694
+ : 'Gemini stream returned an error event.';
695
+ return Object.assign(new Error(message), {
696
+ status: error?.status,
697
+ code: error?.code,
698
+ });
699
+ }
700
+ function parsePartialJsonObject(value) {
701
+ try {
702
+ return parseJsonObject(value);
703
+ }
704
+ catch {
705
+ return {};
706
+ }
707
+ }
708
+ function parseJsonObject(value) {
709
+ const parsed = JSON.parse(value || '{}');
710
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
711
+ throw new Error('Gemini function_call arguments must be a JSON object.');
712
+ }
713
+ return parsed;
714
+ }
715
+ function cloneStep(step) {
716
+ return globalThis.structuredClone
717
+ ? globalThis.structuredClone(step)
718
+ : JSON.parse(JSON.stringify(step));
719
+ }
720
+ function createDefaultMessageId() {
721
+ return `msg_${globalThis.crypto?.randomUUID?.() ?? `${Date.now()}_${Math.random().toString(36).slice(2)}`}`;
722
+ }
723
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { AssistantError } from '@ank1015/agents-contracts';
2
+ export declare function isAbortError(error: unknown): boolean;
3
+ export declare function canRetryGeminiError(error: unknown): boolean;
4
+ export declare function getGeminiErrorDetails(error: unknown): AssistantError;
5
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AA8DhE,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CASpD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAoB3D;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAKpE"}
package/dist/errors.js ADDED
@@ -0,0 +1,83 @@
1
+ import { ApiError } from '@google/genai';
2
+ function isObject(value) {
3
+ return typeof value === 'object' && value !== null;
4
+ }
5
+ function getErrorMessage(error) {
6
+ if (error instanceof Error) {
7
+ return error.message;
8
+ }
9
+ if (isObject(error)) {
10
+ const nested = error.error;
11
+ if (isObject(nested) && typeof nested.message === 'string') {
12
+ return nested.message;
13
+ }
14
+ if (typeof error.message === 'string') {
15
+ return error.message;
16
+ }
17
+ }
18
+ try {
19
+ return JSON.stringify(error) ?? String(error);
20
+ }
21
+ catch {
22
+ return String(error);
23
+ }
24
+ }
25
+ function getStatus(error) {
26
+ const status = error?.status;
27
+ if (typeof status === 'number') {
28
+ return status;
29
+ }
30
+ if (typeof status === 'string') {
31
+ const parsed = Number.parseInt(status, 10);
32
+ return Number.isFinite(parsed) ? parsed : undefined;
33
+ }
34
+ return undefined;
35
+ }
36
+ function getErrorCode(error) {
37
+ const code = error?.code;
38
+ return typeof code === 'string' ? code : undefined;
39
+ }
40
+ function isRetryableCode(code) {
41
+ return (code === 'rate_limit_exceeded' ||
42
+ code === 'resource_exhausted' ||
43
+ code === 'server_error' ||
44
+ code === 'internal' ||
45
+ code === 'unavailable' ||
46
+ code === 'deadline_exceeded' ||
47
+ code === 'timeout' ||
48
+ code === 'ETIMEDOUT' ||
49
+ code === 'ECONNRESET' ||
50
+ code === 'ECONNREFUSED' ||
51
+ code === 'EAI_AGAIN');
52
+ }
53
+ export function isAbortError(error) {
54
+ const name = error?.name;
55
+ const code = getErrorCode(error);
56
+ return (name === 'AbortError' ||
57
+ name === 'CanceledError' ||
58
+ code === 'ABORT_ERR' ||
59
+ code === 'ERR_CANCELED');
60
+ }
61
+ export function canRetryGeminiError(error) {
62
+ if (isAbortError(error)) {
63
+ return false;
64
+ }
65
+ const status = getStatus(error);
66
+ if (status === 408 ||
67
+ status === 409 ||
68
+ status === 429 ||
69
+ (typeof status === 'number' && status >= 500)) {
70
+ return true;
71
+ }
72
+ if (error instanceof ApiError) {
73
+ return false;
74
+ }
75
+ return isRetryableCode(getErrorCode(error));
76
+ }
77
+ export function getGeminiErrorDetails(error) {
78
+ return {
79
+ message: getErrorMessage(error),
80
+ canRetry: canRetryGeminiError(error),
81
+ };
82
+ }
83
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './adapter.js';
2
+ export * from '@ank1015/agents-provider-gemini-spec';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,sCAAsC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from './adapter.js';
2
+ export * from '@ank1015/agents-provider-gemini-spec';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,sCAAsC,CAAC"}
@@ -0,0 +1,101 @@
1
+ import type { LLMRequest, Model, ToolDefinition } from '@ank1015/agents-contracts';
2
+ import type { GeminiBuiltInTool, GeminiInteractionContent, GeminiInteractionResponse, GeminiInteractionStep, GeminiJsonObject, GeminiProvider, GeminiProviderOptions, GeminiUsageInfo } from '@ank1015/agents-provider-gemini-spec';
3
+ export interface GeminiFunctionTool {
4
+ type: 'function';
5
+ name: string;
6
+ description?: string;
7
+ parameters?: GeminiJsonObject;
8
+ }
9
+ export type GeminiInteractionTool = GeminiFunctionTool | GeminiBuiltInTool;
10
+ export type GeminiInteractionCreateParamsStreaming = Omit<GeminiProviderOptions, 'built_in_tools'> & {
11
+ model: string;
12
+ input: GeminiInteractionStep[];
13
+ stream: true;
14
+ store: false;
15
+ system_instruction?: string;
16
+ tools?: GeminiInteractionTool[];
17
+ };
18
+ export interface GeminiStreamInteraction {
19
+ id: string;
20
+ object?: string;
21
+ model?: string;
22
+ status: string;
23
+ created?: string;
24
+ updated?: string;
25
+ service_tier?: string;
26
+ output_text?: string;
27
+ usage?: GeminiUsageInfo;
28
+ steps?: GeminiInteractionStep[];
29
+ }
30
+ export interface GeminiStreamMetadata {
31
+ total_usage?: GeminiUsageInfo;
32
+ [key: string]: unknown;
33
+ }
34
+ export type GeminiStepDelta = {
35
+ type: 'text';
36
+ text: string;
37
+ } | {
38
+ type: 'thought_summary';
39
+ content?: GeminiInteractionContent;
40
+ } | {
41
+ type: 'thought_signature';
42
+ signature?: string;
43
+ } | {
44
+ type: 'arguments_delta';
45
+ arguments?: string;
46
+ partial_arguments?: string;
47
+ } | ({
48
+ type: string;
49
+ } & GeminiJsonObject);
50
+ export type GeminiInteractionStreamEvent = {
51
+ event_type: 'interaction.created';
52
+ interaction: GeminiStreamInteraction;
53
+ event_id?: string;
54
+ metadata?: GeminiStreamMetadata;
55
+ } | {
56
+ event_type: 'interaction.status_update';
57
+ interaction_id: string;
58
+ status: string;
59
+ event_id?: string;
60
+ metadata?: GeminiStreamMetadata;
61
+ } | {
62
+ event_type: 'interaction.completed';
63
+ interaction: GeminiStreamInteraction;
64
+ event_id?: string;
65
+ metadata?: GeminiStreamMetadata;
66
+ } | {
67
+ event_type: 'step.start';
68
+ index: number;
69
+ step: GeminiInteractionStep;
70
+ event_id?: string;
71
+ metadata?: GeminiStreamMetadata;
72
+ } | {
73
+ event_type: 'step.delta';
74
+ index: number;
75
+ delta: GeminiStepDelta;
76
+ event_id?: string;
77
+ metadata?: GeminiStreamMetadata;
78
+ } | {
79
+ event_type: 'step.stop';
80
+ index: number;
81
+ usage?: GeminiUsageInfo;
82
+ step_usage?: GeminiUsageInfo;
83
+ event_id?: string;
84
+ metadata?: GeminiStreamMetadata;
85
+ } | {
86
+ event_type: 'error';
87
+ error?: GeminiStreamError;
88
+ event_id?: string;
89
+ metadata?: GeminiStreamMetadata;
90
+ };
91
+ export interface GeminiStreamError {
92
+ message?: string;
93
+ code?: string | number;
94
+ status?: string | number;
95
+ [key: string]: unknown;
96
+ }
97
+ export declare function buildGeminiInteractionParams(request: LLMRequest<GeminiProvider>, model: Model<GeminiProvider>): GeminiInteractionCreateParamsStreaming;
98
+ export declare function buildGeminiInput(request: LLMRequest<GeminiProvider>, model: Model<GeminiProvider>): GeminiInteractionStep[];
99
+ export declare function convertTools(tools: readonly ToolDefinition[]): GeminiFunctionTool[];
100
+ export declare function isGeminiInteractionResponse(value: unknown): value is GeminiInteractionResponse;
101
+ //# sourceMappingURL=mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ import { toolParametersToJsonSchema } from '@ank1015/agents-contracts';
2
+ import { GEMINI_PROVIDER, assertGeminiToolsSupported, } from '@ank1015/agents-provider-gemini-spec';
3
+ export function buildGeminiInteractionParams(request, model) {
4
+ const { built_in_tools: builtInTools, ...providerOptions } = request.providerOptions ?? {};
5
+ const params = {
6
+ ...providerOptions,
7
+ model: request.modelId,
8
+ input: buildGeminiInput(request, model),
9
+ stream: true,
10
+ store: false,
11
+ };
12
+ if (request.instructions !== undefined) {
13
+ params.system_instruction = request.instructions;
14
+ }
15
+ const tools = [
16
+ ...(request.tools?.length ? convertTools(request.tools) : []),
17
+ ...(builtInTools ?? []),
18
+ ];
19
+ if (tools.length > 0) {
20
+ params.tools = tools;
21
+ }
22
+ return params;
23
+ }
24
+ export function buildGeminiInput(request, model) {
25
+ const input = [];
26
+ for (const message of request.messages) {
27
+ input.push(...buildMessageInput(message, model));
28
+ }
29
+ return input;
30
+ }
31
+ export function convertTools(tools) {
32
+ assertGeminiToolsSupported(tools);
33
+ return tools.map((tool) => ({
34
+ type: 'function',
35
+ name: tool.name,
36
+ ...(tool.description !== undefined ? { description: tool.description } : {}),
37
+ parameters: toolParametersToJsonSchema(tool.parameters),
38
+ }));
39
+ }
40
+ export function isGeminiInteractionResponse(value) {
41
+ return (typeof value === 'object' &&
42
+ value !== null &&
43
+ typeof value.id === 'string' &&
44
+ Array.isArray(value.steps));
45
+ }
46
+ function buildMessageInput(message, model) {
47
+ switch (message.role) {
48
+ case 'user': {
49
+ const content = contentToGeminiContent(message.content, model);
50
+ return content.length > 0 ? [{ type: 'user_input', content }] : [];
51
+ }
52
+ case 'toolResult':
53
+ return [buildToolResultStep(message, model)];
54
+ case 'assistant':
55
+ return buildAssistantSteps(message);
56
+ case 'custom':
57
+ return [];
58
+ }
59
+ }
60
+ function buildToolResultStep(message, model) {
61
+ return {
62
+ type: 'function_result',
63
+ name: message.toolName,
64
+ call_id: message.toolCallId,
65
+ result: contentToToolResultContent(message, model),
66
+ };
67
+ }
68
+ function buildAssistantSteps(message) {
69
+ if (message.model.provider === GEMINI_PROVIDER &&
70
+ isGeminiInteractionResponse(message.nativeMessage)) {
71
+ return [...message.nativeMessage.steps];
72
+ }
73
+ return assistantResponseToSteps(message.content);
74
+ }
75
+ function assistantResponseToSteps(content) {
76
+ const steps = [];
77
+ let text = '';
78
+ const flushText = () => {
79
+ if (text.length === 0) {
80
+ return;
81
+ }
82
+ steps.push({
83
+ type: 'model_output',
84
+ content: [{ type: 'text', text }],
85
+ });
86
+ text = '';
87
+ };
88
+ for (const part of content) {
89
+ if (part.type === 'response') {
90
+ text += part.response.content;
91
+ continue;
92
+ }
93
+ if (part.type === 'thinking') {
94
+ continue;
95
+ }
96
+ flushText();
97
+ steps.push({
98
+ type: 'function_call',
99
+ id: part.toolCallId,
100
+ name: part.name,
101
+ arguments: typeof part.arguments === 'string'
102
+ ? parseJsonObject(part.arguments, 'Gemini assistant tool call arguments')
103
+ : part.arguments,
104
+ });
105
+ }
106
+ flushText();
107
+ return steps;
108
+ }
109
+ function contentToGeminiContent(content, model) {
110
+ return content.map((part) => {
111
+ if (part.type === 'text') {
112
+ return {
113
+ type: 'text',
114
+ text: part.content,
115
+ };
116
+ }
117
+ assertImageInputSupported(model);
118
+ return {
119
+ type: 'image',
120
+ data: part.data,
121
+ mime_type: part.mimeType,
122
+ };
123
+ });
124
+ }
125
+ function contentToToolResultContent(message, model) {
126
+ const content = contentToGeminiContent(message.content, model);
127
+ if (!message.isError) {
128
+ return content;
129
+ }
130
+ const firstText = content.find((part) => part.type === 'text');
131
+ if (firstText) {
132
+ firstText.text = `[TOOL ERROR] ${firstText.text}`;
133
+ return content;
134
+ }
135
+ return [{ type: 'text', text: '[TOOL ERROR]' }, ...content];
136
+ }
137
+ function assertImageInputSupported(model) {
138
+ if (!model.input.includes('image')) {
139
+ throw new Error(`Model "${model.id}" does not support image input.`);
140
+ }
141
+ }
142
+ function parseJsonObject(value, label) {
143
+ const parsed = JSON.parse(value || '{}');
144
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
145
+ throw new Error(`${label} must be a JSON object.`);
146
+ }
147
+ return parsed;
148
+ }
149
+ //# sourceMappingURL=mapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@ank1015/agents-provider-gemini",
3
+ "version": "0.1.0",
4
+ "description": "Gemini Interactions runtime adapter for @ank1015/agents.",
5
+ "keywords": [
6
+ "agents",
7
+ "gemini",
8
+ "google",
9
+ "llm",
10
+ "interactions",
11
+ "typescript"
12
+ ],
13
+ "license": "UNLICENSED",
14
+ "type": "module",
15
+ "sideEffects": false,
16
+ "main": "./dist/index.js",
17
+ "types": "./dist/index.d.ts",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/ank1015/agent.git",
21
+ "directory": "packages/provider-gemini"
22
+ },
23
+ "bugs": {
24
+ "url": "https://github.com/ank1015/agent/issues"
25
+ },
26
+ "homepage": "https://github.com/ank1015/agent#readme",
27
+ "exports": {
28
+ ".": {
29
+ "types": "./dist/index.d.ts",
30
+ "import": "./dist/index.js"
31
+ },
32
+ "./adapter": {
33
+ "types": "./dist/adapter.d.ts",
34
+ "import": "./dist/adapter.js"
35
+ }
36
+ },
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
40
+ "files": [
41
+ "dist",
42
+ "README.md",
43
+ "CHANGELOG.md"
44
+ ],
45
+ "scripts": {
46
+ "prepack": "tsc -b",
47
+ "build": "tsc -b",
48
+ "check": "tsc -b --pretty false",
49
+ "test": "vitest run && tsc --noEmit --strict --skipLibCheck --module NodeNext --moduleResolution NodeNext --target ES2022 --ignoreConfig tests/*.test.ts",
50
+ "clean": "rm -rf dist ../../.tsbuildinfo/provider-gemini.tsbuildinfo"
51
+ },
52
+ "dependencies": {
53
+ "@ank1015/agents-contracts": "^0.1.1",
54
+ "@ank1015/agents-provider-gemini-spec": "^0.1.0",
55
+ "@google/genai": "^2.10.0",
56
+ "zod": "^4.4.3"
57
+ },
58
+ "devDependencies": {
59
+ "vitest": "^4.1.9"
60
+ }
61
+ }