@captra-ai/gemini 0.0.0-stage → 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/README.md +13 -2
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +81 -0
- package/dist/index.js.map +1 -0
- package/package.json +14 -4
package/README.md
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @captra-ai/gemini
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Official Google Gemini GenerateContent adapter for Captra. It supports text generation, token streaming, function calling, native structured output, usage accounting, cancellation, retries, and portable provider errors.
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
import { createGemini } from '@captra-ai/gemini'
|
|
7
|
+
|
|
8
|
+
const model=createGemini({
|
|
9
|
+
model:process.env.GEMINI_MODEL ?? 'gemini-3-flash-preview',
|
|
10
|
+
apiKey:process.env.GEMINI_API_KEY,
|
|
11
|
+
})
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
The adapter is server-only. Never expose `GEMINI_API_KEY` to browser code.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ModelAdapter } from '@captra-ai/core';
|
|
2
|
+
export type GeminiOptions = {
|
|
3
|
+
model: string;
|
|
4
|
+
apiKey?: string;
|
|
5
|
+
baseUrl?: string;
|
|
6
|
+
fetch?: typeof fetch;
|
|
7
|
+
headers?: HeadersInit;
|
|
8
|
+
maxRetries?: number;
|
|
9
|
+
};
|
|
10
|
+
export declare function createGemini(options: GeminiOptions): ModelAdapter;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,YAAY,EAA4E,MAAM,iBAAiB,CAAA;AAEhJ,MAAM,MAAM,aAAa,GAAC;IAAC,KAAK,EAAC,MAAM,CAAC;IAAA,MAAM,CAAC,EAAC,MAAM,CAAC;IAAA,OAAO,CAAC,EAAC,MAAM,CAAC;IAAA,KAAK,CAAC,EAAC,OAAO,KAAK,CAAC;IAAA,OAAO,CAAC,EAAC,WAAW,CAAC;IAAA,UAAU,CAAC,EAAC,MAAM,CAAA;CAAC,CAAA;AAInI,wBAAgB,YAAY,CAAC,OAAO,EAAC,aAAa,GAAE,YAAY,CAU/D"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { ModelProviderError } from '@captra-ai/core';
|
|
2
|
+
export function createGemini(options) {
|
|
3
|
+
const request = options.fetch ?? globalThis.fetch, baseUrl = (options.baseUrl ?? 'https://generativelanguage.googleapis.com/v1beta').replace(/\/$/, ''), apiKey = options.apiKey ?? env('GEMINI_API_KEY') ?? env('GOOGLE_API_KEY');
|
|
4
|
+
if (!apiKey)
|
|
5
|
+
throw new Error('Gemini API key is required');
|
|
6
|
+
const headers = { 'content-type': 'application/json', 'x-goog-api-key': apiKey, ...options.headers }, model = encodeURIComponent(options.model);
|
|
7
|
+
const bodyFor = (input) => { const system = input.messages.filter(message => message.role === 'system').map(message => message.content).join('\n\n'); return { contents: toContents(input.messages), ...(system ? { systemInstruction: { parts: [{ text: system }] } } : {}), ...(input.tools?.length ? { tools: [{ functionDeclarations: input.tools.map(tool => ({ name: tool.name, description: tool.description, parameters: tool.inputSchema })) }] } : {}), generationConfig: { ...(input.temperature === undefined ? {} : { temperature: input.temperature }), ...(input.maxOutputTokens === undefined ? {} : { maxOutputTokens: input.maxOutputTokens }), ...(input.output ? { responseMimeType: 'application/json', responseJsonSchema: input.output.schema } : {}) } }; };
|
|
8
|
+
const send = async (url, body, signal) => { for (let attempt = 0;; attempt++) {
|
|
9
|
+
const response = await request(url, { method: 'POST', headers, body: JSON.stringify(body), signal });
|
|
10
|
+
if (!retryable(response.status) || attempt >= (options.maxRetries ?? 2))
|
|
11
|
+
return response;
|
|
12
|
+
await wait(response, attempt, signal);
|
|
13
|
+
} };
|
|
14
|
+
return {
|
|
15
|
+
async generate(input) { const response = await send(`${baseUrl}/models/${model}:generateContent`, bodyFor(input), input.signal), data = await response.json(); if (!response.ok)
|
|
16
|
+
throw providerError(response.status, data.error); return { ...fromResponse(data), provider: 'gemini' }; },
|
|
17
|
+
async *stream(input) { const response = await send(`${baseUrl}/models/${model}:streamGenerateContent?alt=sse`, bodyFor(input), input.signal); if (!response.ok || !response.body) {
|
|
18
|
+
const data = await safeJson(response);
|
|
19
|
+
throw providerError(response.status, data?.error, await safeText(response));
|
|
20
|
+
} let text = '', modelVersion, usage, toolCalls = []; for await (const data of sse(response.body)) {
|
|
21
|
+
if (data.error)
|
|
22
|
+
throw providerError(data.error.code ?? 500, data.error);
|
|
23
|
+
const chunk = fromResponse(data), delta = chunk.text;
|
|
24
|
+
if (delta) {
|
|
25
|
+
text += delta;
|
|
26
|
+
yield { type: 'text-delta', delta };
|
|
27
|
+
}
|
|
28
|
+
modelVersion = data.modelVersion ?? modelVersion;
|
|
29
|
+
usage = data.usageMetadata ?? usage;
|
|
30
|
+
for (const call of chunk.toolCalls ?? [])
|
|
31
|
+
if (!toolCalls.some(item => item.id === call.id))
|
|
32
|
+
toolCalls.push(call);
|
|
33
|
+
} yield { type: 'finish', response: { text, toolCalls: toolCalls.length ? toolCalls : undefined, model: modelVersion, provider: 'gemini', usage: toUsage(usage) } }; }
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function toContents(messages) { return messages.filter(message => message.role !== 'system').map(message => { if (message.role === 'tool')
|
|
37
|
+
return { role: 'user', parts: [{ functionResponse: { id: message.toolCallId, name: message.name, response: parseToolResult(message.content) } }] }; if (message.toolCalls?.length)
|
|
38
|
+
return { role: 'model', parts: [...(message.content ? [{ text: message.content }] : []), ...message.toolCalls.map(call => ({ functionCall: { id: call.id, name: call.name, args: call.input } }))] }; return { role: message.role === 'assistant' ? 'model' : 'user', parts: [{ text: message.content }] }; }); }
|
|
39
|
+
function fromResponse(data) { const parts = data.candidates?.[0]?.content?.parts ?? [], text = parts.map(part => part.text ?? '').join(''), toolCalls = parts.flatMap(part => part.functionCall ? [{ id: part.functionCall.id ?? crypto.randomUUID(), name: part.functionCall.name ?? '', input: part.functionCall.args ?? {} }] : []); return { text, toolCalls: toolCalls.length ? toolCalls : undefined, model: data.modelVersion, usage: toUsage(data.usageMetadata) }; }
|
|
40
|
+
function toUsage(usage) { return { inputTokens: usage?.promptTokenCount, outputTokens: usage?.candidatesTokenCount, cachedInputTokens: usage?.cachedContentTokenCount, reasoningTokens: usage?.thoughtsTokenCount }; }
|
|
41
|
+
function parseToolResult(value) { try {
|
|
42
|
+
const parsed = JSON.parse(value);
|
|
43
|
+
return parsed && typeof parsed === 'object' ? parsed : { result: parsed };
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return { result: value };
|
|
47
|
+
} }
|
|
48
|
+
function providerError(status, error, fallback) { return new ModelProviderError(error?.message ?? fallback ?? `Gemini request failed: ${status}`, { provider: 'gemini', status, code: error?.status?.toLowerCase() ?? `gemini_http_${status}`, retryable: retryable(status) }); }
|
|
49
|
+
function retryable(status) { return status === 408 || status === 429 || status >= 500; }
|
|
50
|
+
function env(name) { return globalThis.process?.env?.[name]; }
|
|
51
|
+
async function wait(response, attempt, signal) { const value = Number(response.headers.get('retry-after')); await delay(Number.isFinite(value) ? value * 1000 : 250 * 2 ** attempt, signal); }
|
|
52
|
+
function delay(ms, signal) { return new Promise((resolve, reject) => { const done = () => { signal?.removeEventListener('abort', abort); resolve(); }, timer = setTimeout(done, ms), abort = () => { clearTimeout(timer); reject(signal?.reason ?? new DOMException('Aborted', 'AbortError')); }; if (signal?.aborted)
|
|
53
|
+
abort();
|
|
54
|
+
else
|
|
55
|
+
signal?.addEventListener('abort', abort, { once: true }); }); }
|
|
56
|
+
async function* sse(body) { const reader = body.pipeThrough(new TextDecoderStream()).getReader(); let buffer = ''; for (;;) {
|
|
57
|
+
const { done, value } = await reader.read();
|
|
58
|
+
buffer += value ?? '';
|
|
59
|
+
const frames = buffer.split('\n\n');
|
|
60
|
+
buffer = frames.pop() ?? '';
|
|
61
|
+
for (const frame of frames) {
|
|
62
|
+
const raw = frame.split('\n').filter(line => line.startsWith('data:')).map(line => line.slice(5).trim()).join('');
|
|
63
|
+
if (raw)
|
|
64
|
+
yield JSON.parse(raw);
|
|
65
|
+
}
|
|
66
|
+
if (done)
|
|
67
|
+
break;
|
|
68
|
+
} }
|
|
69
|
+
async function safeJson(response) { try {
|
|
70
|
+
return await response.clone().json();
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return undefined;
|
|
74
|
+
} }
|
|
75
|
+
async function safeText(response) { try {
|
|
76
|
+
return await response.text();
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return undefined;
|
|
80
|
+
} }
|
|
81
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@captra-ai/gemini",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
}
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Google Gemini model adapter for Captra.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": { "type": "git", "url": "git+https://github.com/VaibhavBansal26/captra.git", "directory": "packages/gemini" },
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": { ".": { "types": "./dist/index.d.ts", "import": "./dist/index.js" } },
|
|
11
|
+
"files": ["dist"],
|
|
12
|
+
"publishConfig": { "access": "public" },
|
|
13
|
+
"peerDependencies": { "@captra-ai/core": ">=0.21.0 <1" },
|
|
14
|
+
"devDependencies": { "vitest": "^4.1.12" },
|
|
15
|
+
"scripts": { "build": "tsc -p tsconfig.json", "test": "vitest run" }
|
|
16
|
+
}
|