langfx.js 0.1.0-alpha.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.
Files changed (104) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +11 -0
  3. package/README.md +107 -0
  4. package/dist/agentic.d.ts +128 -0
  5. package/dist/agentic.js +265 -0
  6. package/dist/agentic.js.map +1 -0
  7. package/dist/cache.d.ts +32 -0
  8. package/dist/cache.js +135 -0
  9. package/dist/cache.js.map +1 -0
  10. package/dist/cancellation.d.ts +9 -0
  11. package/dist/cancellation.js +70 -0
  12. package/dist/cancellation.js.map +1 -0
  13. package/dist/errors.d.ts +40 -0
  14. package/dist/errors.js +44 -0
  15. package/dist/errors.js.map +1 -0
  16. package/dist/index.d.ts +18 -0
  17. package/dist/index.js +15 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/json-stream.d.ts +73 -0
  20. package/dist/json-stream.js +222 -0
  21. package/dist/json-stream.js.map +1 -0
  22. package/dist/langfunc.d.ts +20 -0
  23. package/dist/langfunc.js +28 -0
  24. package/dist/langfunc.js.map +1 -0
  25. package/dist/language-model.d.ts +78 -0
  26. package/dist/language-model.js +218 -0
  27. package/dist/language-model.js.map +1 -0
  28. package/dist/llms/anthropic.d.ts +30 -0
  29. package/dist/llms/anthropic.js +365 -0
  30. package/dist/llms/anthropic.js.map +1 -0
  31. package/dist/llms/gemini.d.ts +34 -0
  32. package/dist/llms/gemini.js +380 -0
  33. package/dist/llms/gemini.js.map +1 -0
  34. package/dist/llms/images.d.ts +10 -0
  35. package/dist/llms/images.js +43 -0
  36. package/dist/llms/images.js.map +1 -0
  37. package/dist/llms/index.d.ts +7 -0
  38. package/dist/llms/index.js +4 -0
  39. package/dist/llms/index.js.map +1 -0
  40. package/dist/llms/openai.d.ts +30 -0
  41. package/dist/llms/openai.js +398 -0
  42. package/dist/llms/openai.js.map +1 -0
  43. package/dist/llms/transport.d.ts +4 -0
  44. package/dist/llms/transport.js +90 -0
  45. package/dist/llms/transport.js.map +1 -0
  46. package/dist/mapping.d.ts +71 -0
  47. package/dist/mapping.js +190 -0
  48. package/dist/mapping.js.map +1 -0
  49. package/dist/message.d.ts +56 -0
  50. package/dist/message.js +86 -0
  51. package/dist/message.js.map +1 -0
  52. package/dist/python-preview.d.ts +24 -0
  53. package/dist/python-preview.js +368 -0
  54. package/dist/python-preview.js.map +1 -0
  55. package/dist/python-stream.d.ts +15 -0
  56. package/dist/python-stream.js +29 -0
  57. package/dist/python-stream.js.map +1 -0
  58. package/dist/python.d.ts +85 -0
  59. package/dist/python.js +728 -0
  60. package/dist/python.js.map +1 -0
  61. package/dist/query.d.ts +31 -0
  62. package/dist/query.js +151 -0
  63. package/dist/query.js.map +1 -0
  64. package/dist/retry.d.ts +12 -0
  65. package/dist/retry.js +56 -0
  66. package/dist/retry.js.map +1 -0
  67. package/dist/schema/zod.d.ts +4 -0
  68. package/dist/schema/zod.js +7 -0
  69. package/dist/schema/zod.js.map +1 -0
  70. package/dist/schema.d.ts +10 -0
  71. package/dist/schema.js +7 -0
  72. package/dist/schema.js.map +1 -0
  73. package/dist/template.d.ts +14 -0
  74. package/dist/template.js +75 -0
  75. package/dist/template.js.map +1 -0
  76. package/dist/testing/index.d.ts +33 -0
  77. package/dist/testing/index.js +56 -0
  78. package/dist/testing/index.js.map +1 -0
  79. package/dist/tool-call.d.ts +27 -0
  80. package/dist/tool-call.js +16 -0
  81. package/dist/tool-call.js.map +1 -0
  82. package/dist/tools.d.ts +43 -0
  83. package/dist/tools.js +155 -0
  84. package/dist/tools.js.map +1 -0
  85. package/docs/ANTHROPIC.md +43 -0
  86. package/docs/API_DESIGN.md +200 -0
  87. package/docs/GEMINI.md +68 -0
  88. package/docs/IMPLEMENTATION_STATUS.md +77 -0
  89. package/docs/LIVE_TESTING.md +24 -0
  90. package/docs/MAPPING.md +54 -0
  91. package/docs/OPENAI.md +40 -0
  92. package/docs/PORTING_PLAN.md +135 -0
  93. package/docs/PROMPT_PARITY.md +379 -0
  94. package/docs/PYTHON_PROTOCOL.md +109 -0
  95. package/docs/PYTHON_PROTOCOL_PARITY.md +964 -0
  96. package/docs/PYTHON_SCHEMA_EVALUATION.md +93 -0
  97. package/docs/PYTHON_STREAMING_PARITY.md +59 -0
  98. package/docs/RELEASING.md +25 -0
  99. package/docs/RETRIES_AND_CACHE.md +56 -0
  100. package/docs/SESSION_EVENTS.md +40 -0
  101. package/docs/SOURCE_AUDIT.md +133 -0
  102. package/docs/STREAMING.md +76 -0
  103. package/docs/TOOL_STREAMING.md +31 -0
  104. package/package.json +95 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/llms/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { LanguageModel } from '../language-model.js';
2
+ import type { LanguageModelOptions, ModelContext, SamplingResult, StreamChunk } from '../language-model.js';
3
+ import { Message } from '../message.js';
4
+ import type { Transport } from './transport.js';
5
+ export interface GeminiOptions extends LanguageModelOptions {
6
+ readonly model: string;
7
+ readonly apiKey?: string | ((signal: AbortSignal) => string | Promise<string>);
8
+ /** Base URL ending at the API version; host gateways may supply their own. */
9
+ readonly baseUrl?: string;
10
+ readonly transport?: Transport;
11
+ }
12
+ /** Google Gemini Developer API adapter. No SDK, environment reads, or eager I/O. */
13
+ export declare class Gemini extends LanguageModel {
14
+ readonly capabilities: Readonly<{
15
+ streaming: true;
16
+ nativeStructuredOutput: true;
17
+ media: true;
18
+ tools: true;
19
+ toolStreaming: true;
20
+ }>;
21
+ private readonly endpoint;
22
+ private readonly transport;
23
+ private readonly apiKey;
24
+ constructor(options: GeminiOptions);
25
+ protected _sample(prompts: readonly Message[], context: ModelContext): Promise<SamplingResult[]>;
26
+ protected _stream(prompt: Message, context: ModelContext): AsyncIterable<StreamChunk>;
27
+ private request;
28
+ private body;
29
+ private metadata;
30
+ private parse;
31
+ }
32
+ /** Explicit Developer API name for users migrating from Python GoogleGenAI. */
33
+ export declare class GoogleGenAI extends Gemini {
34
+ }
@@ -0,0 +1,380 @@
1
+ import { LanguageModel } from '../language-model.js';
2
+ import { AIMessage, Image, Message, Modality } from '../message.js';
3
+ import { ToolCall } from '../tool-call.js';
4
+ import { abortable, checkCancelled } from '../cancellation.js';
5
+ import { AuthenticationError, ContentFilteredError, EmptyGenerationError, IncompleteGenerationError, LMError, RateLimitError, TemporaryLMError, UnsupportedCapabilityError } from '../errors.js';
6
+ import { readJson, sse } from './transport.js';
7
+ let callSerial = 0;
8
+ function object(value, label) {
9
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
10
+ throw new LMError(`Invalid Gemini ${label}.`);
11
+ return value;
12
+ }
13
+ function nonempty(value, label) {
14
+ if (typeof value !== 'string' || !value)
15
+ throw new LMError(`Invalid Gemini ${label}.`);
16
+ return value;
17
+ }
18
+ function freeze(value) {
19
+ if (value && typeof value === 'object') {
20
+ for (const child of Object.values(value))
21
+ freeze(child);
22
+ Object.freeze(value);
23
+ }
24
+ return value;
25
+ }
26
+ function usage(value) {
27
+ if (value === undefined)
28
+ return undefined;
29
+ const input = object(value, 'usage');
30
+ const fields = [input['promptTokenCount'], input['candidatesTokenCount'], input['totalTokenCount']];
31
+ if (fields.some(value => value === undefined))
32
+ return undefined;
33
+ if (fields.some(value => typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0))
34
+ throw new LMError('Invalid Gemini token counts.');
35
+ return { promptTokens: fields[0], completionTokens: fields[1], totalTokens: fields[2] };
36
+ }
37
+ /** Conservative supported subset: reject constraints we cannot promise to convey. */
38
+ function wireSchema(input, depth = 0) {
39
+ if (depth > 64)
40
+ throw new UnsupportedCapabilityError('Schema nesting exceeds 64 levels.');
41
+ if ('const' in input && 'enum' in input)
42
+ throw new UnsupportedCapabilityError('Use const or enum, not both, in Gemini schemas.');
43
+ const output = {};
44
+ for (const [key, value] of Object.entries(input)) {
45
+ if (key === '$schema')
46
+ continue; // dialect annotation, not a validation constraint
47
+ if (['type', 'title', 'description', 'required', 'minimum', 'maximum', 'minItems', 'maxItems'].includes(key))
48
+ output[key] = value;
49
+ else if (key === 'const') {
50
+ if (typeof value !== 'string' && typeof value !== 'number')
51
+ throw new UnsupportedCapabilityError('Gemini const supports strings/numbers in this adapter.');
52
+ output['enum'] = [value];
53
+ }
54
+ else if (key === 'enum') {
55
+ if (!Array.isArray(value) || value.some(v => typeof v !== 'string' && typeof v !== 'number'))
56
+ throw new UnsupportedCapabilityError('Gemini enum supports strings/numbers in this adapter.');
57
+ output[key] = value;
58
+ }
59
+ else if (key === 'properties') {
60
+ output[key] = Object.fromEntries(Object.entries(object(value, 'schema properties')).map(([name, schema]) => [name, wireSchema(object(schema, 'property schema'), depth + 1)]));
61
+ }
62
+ else if (key === 'anyOf') {
63
+ if (!Array.isArray(value))
64
+ throw new TypeError('anyOf must be an array.');
65
+ output[key] = value.map(schema => wireSchema(object(schema, 'union schema'), depth + 1));
66
+ }
67
+ else if (key === 'items' || key === 'additionalProperties') {
68
+ output[key] = typeof value === 'boolean' && key === 'additionalProperties' ? value : wireSchema(object(value, 'item schema'), depth + 1);
69
+ }
70
+ else
71
+ throw new UnsupportedCapabilityError(`Unsupported Gemini schema keyword: ${key}`);
72
+ }
73
+ return output;
74
+ }
75
+ function base64(bytes) {
76
+ let binary = '';
77
+ for (let start = 0; start < bytes.length; start += 8192)
78
+ binary += String.fromCharCode(...bytes.subarray(start, start + 8192));
79
+ return btoa(binary);
80
+ }
81
+ /** Google Gemini Developer API adapter. No SDK, environment reads, or eager I/O. */
82
+ export class Gemini extends LanguageModel {
83
+ capabilities = Object.freeze({ streaming: true, nativeStructuredOutput: true, media: true, tools: true, toolStreaming: true });
84
+ endpoint;
85
+ transport;
86
+ apiKey;
87
+ constructor(options) {
88
+ const { apiKey, baseUrl = 'https://generativelanguage.googleapis.com/v1beta', transport, model, ...sampling } = options;
89
+ const id = model.replace(/^models\//, '');
90
+ if (!/^[A-Za-z0-9._-]+$/.test(id))
91
+ throw new TypeError('Expected a Gemini model ID, not a URL or resource path.');
92
+ super({ ...sampling, model: id });
93
+ this.endpoint = baseUrl.replace(/\/$/, '');
94
+ this.apiKey = apiKey;
95
+ this.transport = transport ?? ((url, init) => globalThis.fetch(url, init));
96
+ }
97
+ async _sample(prompts, context) {
98
+ // Deliberately sequential: no implicit unbounded request fan-out.
99
+ const results = [];
100
+ for (const prompt of prompts) {
101
+ const response = await this.request(prompt, context, false);
102
+ const parsed = this.parse(await readJson(response, context.signal));
103
+ if (parsed.finishReason !== 'STOP')
104
+ throw new IncompleteGenerationError('Gemini response did not complete.');
105
+ if (!parsed.message.text && !parsed.message.toolCalls.length)
106
+ throw new EmptyGenerationError('Gemini returned no visible output or tool calls.');
107
+ results.push({ samples: [{ response: parsed.message }], ...(parsed.usage ? { usage: parsed.usage } : {}) });
108
+ }
109
+ return results;
110
+ }
111
+ async *_stream(prompt, context) {
112
+ const response = await this.request(prompt, context, true);
113
+ let text = '', finished = false;
114
+ let tokens;
115
+ const parts = [];
116
+ let accumulatedSize = 0;
117
+ const calls = [], bindings = [];
118
+ const ids = new Set();
119
+ for await (const data of sse(response, context.signal)) {
120
+ let payload;
121
+ try {
122
+ payload = JSON.parse(data);
123
+ }
124
+ catch (cause) {
125
+ throw new LMError('Invalid Gemini SSE JSON.', { cause });
126
+ }
127
+ const parsed = this.parse(payload, true);
128
+ if (parts.length + parsed.parts.length > 1024)
129
+ throw new LMError('Gemini stream exceeds part limit.');
130
+ for (const call of parsed.message.toolCalls) {
131
+ if (ids.has(call.id))
132
+ throw new LMError('Duplicate Gemini function-call IDs.');
133
+ ids.add(call.id);
134
+ }
135
+ if (finished && (parsed.message.text || parsed.parts.length))
136
+ throw new LMError('Gemini sent content after completion.');
137
+ accumulatedSize += JSON.stringify(parsed.parts).length;
138
+ if (accumulatedSize > 16 * 1024 * 1024)
139
+ throw new LMError('Gemini stream exceeded 16 MiB.');
140
+ parts.push(...parsed.parts);
141
+ tokens = parsed.usage ?? tokens;
142
+ finished ||= parsed.finishReason === 'STOP';
143
+ const continuation = parsed.message.metadata['gemini'];
144
+ let callIndex = 0;
145
+ for (const part of parsed.parts) {
146
+ if ('functionCall' in part) {
147
+ const call = parsed.message.toolCalls[callIndex];
148
+ bindings.push(continuation.calls[callIndex++]);
149
+ calls.push(call);
150
+ yield { delta: new AIMessage(''), aggregated: new AIMessage(text), index: 0, isFinal: false, toolEvent: Object.freeze({ type: 'toolCallStart', id: call.id, name: call.name }) };
151
+ yield { delta: new AIMessage(''), aggregated: new AIMessage(text), index: 0, isFinal: false, toolEvent: Object.freeze({ type: 'toolCallEnd', call }) };
152
+ }
153
+ else if (typeof part['text'] === 'string' && !part['thought'] && part['text']) {
154
+ text += part['text'];
155
+ yield { delta: new AIMessage(part['text']), aggregated: new AIMessage(text), index: 0, isFinal: false };
156
+ }
157
+ }
158
+ }
159
+ if (!finished)
160
+ throw new IncompleteGenerationError('Gemini stream ended before completion.');
161
+ if (!text && !calls.length)
162
+ throw new EmptyGenerationError('Gemini stream returned no visible text or calls.');
163
+ yield {
164
+ delta: new AIMessage(''), aggregated: new AIMessage(text, { metadata: this.metadata(parts, calls, bindings) }),
165
+ index: 0, isFinal: true, finishReason: 'stop', ...(tokens ? { usage: tokens } : {}),
166
+ };
167
+ }
168
+ async request(prompt, context, streaming) {
169
+ const body = await this.body(prompt, context);
170
+ checkCancelled(context.signal);
171
+ const key = typeof this.apiKey === 'function'
172
+ ? await abortable(Promise.resolve(this.apiKey(context.signal)), context.signal) : this.apiKey;
173
+ checkCancelled(context.signal);
174
+ const headers = { 'Content-Type': 'application/json', Accept: streaming ? 'text/event-stream' : 'application/json' };
175
+ if (key)
176
+ headers['x-goog-api-key'] = key;
177
+ const method = streaming ? 'streamGenerateContent?alt=sse' : 'generateContent';
178
+ let response;
179
+ try {
180
+ response = await abortable(this.transport(`${this.endpoint}/models/${this.modelId}:${method}`, {
181
+ method: 'POST', headers, body: JSON.stringify(body), signal: context.signal,
182
+ }), context.signal);
183
+ }
184
+ catch (cause) {
185
+ checkCancelled(context.signal);
186
+ throw new TemporaryLMError('Gemini transport failed.', { cause });
187
+ }
188
+ if (!response.ok) {
189
+ try {
190
+ await response.body?.cancel();
191
+ }
192
+ catch { /* Do not expose the raw error body. */ }
193
+ const message = `Gemini HTTP ${response.status}.`;
194
+ if (response.status === 401 || response.status === 403)
195
+ throw new AuthenticationError(message);
196
+ if (response.status === 429)
197
+ throw new RateLimitError(message);
198
+ if (response.status >= 500)
199
+ throw new TemporaryLMError(message);
200
+ throw new LMError(message);
201
+ }
202
+ if (streaming && !response.headers.get('content-type')?.toLowerCase().startsWith('text/event-stream')) {
203
+ await response.body?.cancel();
204
+ throw new LMError('Expected a Gemini SSE response.');
205
+ }
206
+ return response;
207
+ }
208
+ async body(prompt, context) {
209
+ const contents = [];
210
+ const systemParts = [];
211
+ const pending = new Map();
212
+ for (const section of prompt.sections) {
213
+ checkCancelled(context.signal);
214
+ if (section.toolCalls.length && section.role !== 'assistant')
215
+ throw new LMError('Only assistant messages may contain tool calls.');
216
+ const continuation = section.metadata['gemini'];
217
+ if (continuation) {
218
+ if (continuation.provider !== 'gemini' || continuation.model !== this.modelId || continuation.endpoint !== this.endpoint)
219
+ throw new UnsupportedCapabilityError('Gemini continuation belongs to a different provider/model/endpoint.');
220
+ contents.push(continuation.content);
221
+ section.toolCalls.forEach((call, index) => {
222
+ const binding = continuation.calls[index];
223
+ if (!binding || binding.localId !== call.id)
224
+ throw new LMError('Mismatched Gemini tool continuation.');
225
+ pending.set(call.id, { name: call.name, ...(binding.wireId ? { wireId: binding.wireId } : {}) });
226
+ });
227
+ continue;
228
+ }
229
+ if (section.role === 'tool') {
230
+ const id = section.metadata['toolCallId'];
231
+ const call = typeof id === 'string' ? pending.get(id) : undefined;
232
+ if (!call)
233
+ throw new LMError('Tool result has no preceding matching call.');
234
+ pending.delete(id);
235
+ let output;
236
+ try {
237
+ output = JSON.parse(section.text);
238
+ }
239
+ catch {
240
+ output = section.text;
241
+ }
242
+ const part = { functionResponse: { name: call.name, ...(call.wireId ? { id: call.wireId } : {}), response: { result: output } } };
243
+ const previous = contents.at(-1);
244
+ if (previous?.role === 'user' && previous.parts.every(part => 'functionResponse' in part))
245
+ previous.parts.push(part);
246
+ else
247
+ contents.push({ role: 'user', parts: [part] });
248
+ continue;
249
+ }
250
+ const parts = [];
251
+ for (const part of section.parts) {
252
+ if (typeof part === 'string')
253
+ parts.push({ text: part });
254
+ else if (part instanceof Image) {
255
+ if (section.role !== 'user')
256
+ throw new UnsupportedCapabilityError('Images are supported only in user messages.');
257
+ if (part.mimeType === 'image/*')
258
+ throw new TypeError('Gemini image URIs require an explicit MIME type.');
259
+ if (part.source.kind === 'uri')
260
+ parts.push({ fileData: { fileUri: part.source.uri, mimeType: part.mimeType } });
261
+ else {
262
+ const bytes = part.source.kind === 'bytes' ? part.source.bytes : new Uint8Array(await part.source.blob.arrayBuffer());
263
+ if (bytes.length > 20 * 1024 * 1024)
264
+ throw new RangeError('Inline image exceeds 20 MiB; use an uploaded file URI.');
265
+ parts.push({ inlineData: { data: base64(bytes), mimeType: part.mimeType } });
266
+ }
267
+ }
268
+ else if (part instanceof Modality)
269
+ throw new UnsupportedCapabilityError('This Gemini adapter currently supports only text and image input.');
270
+ else
271
+ throw new LMError('Unexpected nested message after normalization.');
272
+ }
273
+ for (const call of section.toolCalls) {
274
+ parts.push({ functionCall: { id: call.id, name: call.name, args: call.args } });
275
+ pending.set(call.id, { name: call.name, wireId: call.id });
276
+ }
277
+ if (section.role === 'system') {
278
+ if (contents.length)
279
+ throw new UnsupportedCapabilityError('System messages must precede conversation turns.');
280
+ systemParts.push(...parts);
281
+ }
282
+ else
283
+ contents.push({ role: section.role === 'assistant' ? 'model' : 'user', parts });
284
+ }
285
+ if (pending.size)
286
+ throw new LMError('Conversation contains tool calls without results.');
287
+ const generationConfig = { candidateCount: 1 };
288
+ if (context.temperature !== undefined)
289
+ generationConfig['temperature'] = context.temperature;
290
+ if (context.maxTokens !== undefined)
291
+ generationConfig['maxOutputTokens'] = context.maxTokens;
292
+ if (context.responseSchema) {
293
+ generationConfig['responseMimeType'] = 'application/json';
294
+ generationConfig['responseJsonSchema'] = wireSchema(context.responseSchema);
295
+ }
296
+ const body = { contents, generationConfig };
297
+ if (systemParts.length)
298
+ body['systemInstruction'] = { parts: systemParts };
299
+ if (context.tools?.length) {
300
+ body['tools'] = [{ functionDeclarations: context.tools.map(tool => {
301
+ if (tool.inputSchema['type'] !== 'object')
302
+ throw new UnsupportedCapabilityError('Gemini tool inputs must have an object root.');
303
+ return { name: tool.name, description: tool.description, parametersJsonSchema: wireSchema(tool.inputSchema) };
304
+ }) }];
305
+ const choice = context.toolChoice ?? 'auto';
306
+ if (typeof choice === 'object' && !context.tools.some(tool => tool.name === choice.name))
307
+ throw new TypeError('Named tool choice is not registered.');
308
+ body['toolConfig'] = { functionCallingConfig: typeof choice === 'object'
309
+ ? { mode: 'ANY', allowedFunctionNames: [choice.name] }
310
+ : { mode: { auto: 'AUTO', any: 'ANY', none: 'NONE' }[choice] } };
311
+ }
312
+ return body;
313
+ }
314
+ metadata(parts, calls, bindings) {
315
+ return {
316
+ toolCalls: Object.freeze(calls),
317
+ gemini: freeze({ provider: 'gemini', model: this.modelId, endpoint: this.endpoint, content: { role: 'model', parts }, calls: bindings }),
318
+ };
319
+ }
320
+ parse(value, streaming = false) {
321
+ const response = object(value, 'response');
322
+ if (response['error'])
323
+ throw new LMError('Gemini returned an API error.');
324
+ const feedback = response['promptFeedback'];
325
+ if (feedback && object(feedback, 'feedback')['blockReason'])
326
+ throw new ContentFilteredError('Gemini blocked the prompt.');
327
+ const tokens = usage(response['usageMetadata']);
328
+ const candidates = response['candidates'];
329
+ if ((!candidates || Array.isArray(candidates) && !candidates.length) && streaming) {
330
+ return { message: new AIMessage(''), parts: [], finishReason: undefined, usage: tokens };
331
+ }
332
+ if (!Array.isArray(candidates) || candidates.length !== 1)
333
+ throw new LMError('Expected one Gemini candidate.');
334
+ const candidate = object(candidates[0], 'candidate');
335
+ if (candidate['index'] !== undefined && candidate['index'] !== 0)
336
+ throw new UnsupportedCapabilityError('Only candidate zero is supported.');
337
+ const finishReason = candidate['finishReason'];
338
+ if (finishReason && finishReason !== 'STOP') {
339
+ if (finishReason === 'MAX_TOKENS')
340
+ throw new IncompleteGenerationError('Gemini reached the output token limit.');
341
+ if (['SAFETY', 'RECITATION', 'BLOCKLIST', 'PROHIBITED_CONTENT', 'SPII', 'IMAGE_SAFETY'].includes(finishReason))
342
+ throw new ContentFilteredError(`Gemini filtered the response (${finishReason}).`);
343
+ throw new LMError(`Gemini generation failed (${finishReason}).`);
344
+ }
345
+ const content = candidate['content'] === undefined ? {} : object(candidate['content'], 'content');
346
+ const rawParts = content['parts'] ?? [];
347
+ if (!Array.isArray(rawParts))
348
+ throw new LMError('Invalid Gemini parts.');
349
+ const parts = rawParts.map(part => object(part, 'part'));
350
+ let text = '';
351
+ const calls = [];
352
+ const bindings = [];
353
+ for (const part of parts) {
354
+ if ('functionCall' in part) {
355
+ const fc = object(part['functionCall'], 'function call');
356
+ if ('partialArgs' in fc || 'willContinue' in fc)
357
+ throw new UnsupportedCapabilityError('Partial Gemini function arguments are not supported by this adapter.');
358
+ const wireId = fc['id'] === undefined ? undefined : nonempty(fc['id'], 'call ID');
359
+ const localId = wireId ?? `gemini-call-${++callSerial}`;
360
+ calls.push(new ToolCall(localId, nonempty(fc['name'], 'function name'), object(fc['args'] ?? {}, 'function arguments')));
361
+ bindings.push({ localId, ...(wireId ? { wireId } : {}) });
362
+ }
363
+ else if ('text' in part) {
364
+ if (typeof part['text'] !== 'string')
365
+ throw new LMError('Invalid Gemini text.');
366
+ if (!part['thought'])
367
+ text += part['text'];
368
+ }
369
+ else if (!part['thoughtSignature'])
370
+ throw new UnsupportedCapabilityError('Unsupported Gemini output part.');
371
+ }
372
+ if (new Set(calls.map(call => call.id)).size !== calls.length)
373
+ throw new LMError('Duplicate Gemini function-call IDs.');
374
+ return { message: new AIMessage(text, { metadata: this.metadata(parts, calls, bindings) }), parts, finishReason, usage: tokens };
375
+ }
376
+ }
377
+ /** Explicit Developer API name for users migrating from Python GoogleGenAI. */
378
+ export class GoogleGenAI extends Gemini {
379
+ }
380
+ //# sourceMappingURL=gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/llms/gemini.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Image, Message } from '../message.js';
2
+ type EncodedImage = {
3
+ url: string;
4
+ } | {
5
+ mimeType: string;
6
+ data: string;
7
+ };
8
+ export declare function validateImageRole(message: Message): void;
9
+ export declare function encodeImage(image: Image, signal: AbortSignal): Promise<EncodedImage>;
10
+ export {};
@@ -0,0 +1,43 @@
1
+ import { Image, Message } from '../message.js';
2
+ import { abortable, checkCancelled } from '../cancellation.js';
3
+ import { UnsupportedCapabilityError } from '../errors.js';
4
+ /** A conservative adapter bound, independent of provider/model limits. */
5
+ const MAX_IMAGE_BYTES = 5 * 1024 * 1024;
6
+ const MIME_TYPES = new Set(['image/png', 'image/jpeg', 'image/gif', 'image/webp']);
7
+ export function validateImageRole(message) {
8
+ for (const part of message.parts) {
9
+ if (typeof part !== 'string' && (!(part instanceof Image) || message.role !== 'user')) {
10
+ throw new UnsupportedCapabilityError('Only user messages support image inputs; other modalities are unsupported.');
11
+ }
12
+ }
13
+ }
14
+ export async function encodeImage(image, signal) {
15
+ checkCancelled(signal);
16
+ const source = image.source;
17
+ if (source.kind === 'uri') {
18
+ let url;
19
+ try {
20
+ url = new URL(source.uri);
21
+ }
22
+ catch {
23
+ throw new TypeError('Image URI must be an absolute HTTP(S) URL.');
24
+ }
25
+ if (!['https:', 'http:'].includes(url.protocol) || url.username || url.password)
26
+ throw new TypeError('Image URI must be an HTTP(S) URL without credentials.');
27
+ return { url: source.uri };
28
+ }
29
+ if (!MIME_TYPES.has(image.mimeType))
30
+ throw new UnsupportedCapabilityError('Image bytes require a PNG, JPEG, GIF, or WebP MIME type.');
31
+ const size = source.kind === 'bytes' ? source.bytes.byteLength : source.blob.size;
32
+ if (!size || size > MAX_IMAGE_BYTES)
33
+ throw new RangeError('Image must contain between 1 byte and 5 MiB.');
34
+ const bytes = source.kind === 'bytes' ? source.bytes : new Uint8Array(await abortable(source.blob.arrayBuffer(), signal));
35
+ checkCancelled(signal);
36
+ if (bytes.byteLength !== size)
37
+ throw new TypeError('Image size changed while reading.');
38
+ let binary = '';
39
+ for (let i = 0; i < bytes.length; i += 8192)
40
+ binary += String.fromCharCode(...bytes.subarray(i, i + 8192));
41
+ return { mimeType: image.mimeType, data: btoa(binary) };
42
+ }
43
+ //# sourceMappingURL=images.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"images.js","sourceRoot":"","sources":["../../src/llms/images.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { Gemini, GoogleGenAI } from './gemini.js';
2
+ export type { GeminiOptions } from './gemini.js';
3
+ export type { Transport } from './transport.js';
4
+ export { Anthropic } from './anthropic.js';
5
+ export type { AnthropicOptions } from './anthropic.js';
6
+ export { OpenAI } from './openai.js';
7
+ export type { OpenAIOptions } from './openai.js';
@@ -0,0 +1,4 @@
1
+ export { Gemini, GoogleGenAI } from './gemini.js';
2
+ export { Anthropic } from './anthropic.js';
3
+ export { OpenAI } from './openai.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/llms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { LanguageModel } from '../language-model.js';
2
+ import type { LanguageModelOptions, ModelContext, SamplingResult, StreamChunk } from '../language-model.js';
3
+ import { Message } from '../message.js';
4
+ import type { Transport } from './transport.js';
5
+ export interface OpenAIOptions extends LanguageModelOptions {
6
+ readonly model: string;
7
+ readonly apiKey?: string | ((signal: AbortSignal) => string | Promise<string>);
8
+ readonly baseUrl?: string;
9
+ readonly transport?: Transport;
10
+ }
11
+ /** Stateless Responses API adapter. Text, client tools, strict JSON output, and text SSE. */
12
+ export declare class OpenAI extends LanguageModel {
13
+ readonly capabilities: Readonly<{
14
+ streaming: true;
15
+ nativeStructuredOutput: true;
16
+ media: true;
17
+ tools: true;
18
+ toolStreaming: true;
19
+ }>;
20
+ private readonly endpoint;
21
+ private readonly transport;
22
+ private readonly apiKey;
23
+ constructor(options: OpenAIOptions);
24
+ protected _sample(prompts: readonly Message[], context: ModelContext): Promise<SamplingResult[]>;
25
+ protected _stream(prompt: Message, context: ModelContext): AsyncIterable<StreamChunk>;
26
+ private parse;
27
+ private parseOutput;
28
+ private body;
29
+ private request;
30
+ }