vern-llm 1.2.0 → 1.4.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/dist/index.cjs +250 -45
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +257 -135
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +257 -135
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +250 -45
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -38,8 +38,142 @@ declare class InMemoryCacheAdapter<T = unknown> implements CacheAdapter<T> {
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
//#endregion
|
|
41
|
-
//#region src/types/
|
|
41
|
+
//#region src/types/schema.d.ts
|
|
42
42
|
//# sourceMappingURL=cache.d.ts.map
|
|
43
|
+
/**
|
|
44
|
+
* Minimal structural type for a Zod-like schema, so this package doesnt need
|
|
45
|
+
* a hard dependency on a specific Zod major version. Any object exposing
|
|
46
|
+
* `safeParse` (Zod v3/v4, and most Zod-compatible validators) should satisfy this
|
|
47
|
+
*/
|
|
48
|
+
interface SchemaLike<T> {
|
|
49
|
+
safeParse(data: unknown): {
|
|
50
|
+
success: true;
|
|
51
|
+
data: T;
|
|
52
|
+
} | {
|
|
53
|
+
success: false;
|
|
54
|
+
error: unknown;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* A provider-native JSON Schema for structured outputs (OpenAI/Groq
|
|
59
|
+
* `response_format: { type: 'json_schema' }`) This is the wire-format
|
|
60
|
+
* schema the model is constrained to generate against, distinct from
|
|
61
|
+
* `schema`, which is a client-side Zod validator run on the parsed result
|
|
62
|
+
* You can use one, both, or neither; using both gets you provider-level
|
|
63
|
+
* constraint plus client-side type inference/validation as a safety net
|
|
64
|
+
*/
|
|
65
|
+
interface JsonSchemaSpec {
|
|
66
|
+
name: string;
|
|
67
|
+
schema: Record<string, unknown>;
|
|
68
|
+
/** Enforces the schema strictly (OpenAI-specific), default true when supported */
|
|
69
|
+
strict?: boolean;
|
|
70
|
+
description?: string;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
//#endregion
|
|
74
|
+
//#region src/types/usage.d.ts
|
|
75
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
76
|
+
interface UsageInfo {
|
|
77
|
+
coalesced: boolean;
|
|
78
|
+
}
|
|
79
|
+
type ReserveUsage = (info: UsageInfo) => Promise<void>;
|
|
80
|
+
type RefundUsage = (info: UsageInfo) => Promise<void>;
|
|
81
|
+
interface TokenUsage {
|
|
82
|
+
promptTokens: number;
|
|
83
|
+
completionTokens: number;
|
|
84
|
+
totalTokens: number;
|
|
85
|
+
requestId: string;
|
|
86
|
+
model: string;
|
|
87
|
+
}
|
|
88
|
+
type OnUsage = (usage: TokenUsage) => void;
|
|
89
|
+
|
|
90
|
+
//#endregion
|
|
91
|
+
//#region src/types/call.d.ts
|
|
92
|
+
//# sourceMappingURL=usage.d.ts.map
|
|
93
|
+
/** A single prior turn in a multi-turn conversation, passed via `history`. */
|
|
94
|
+
interface ConversationTurn {
|
|
95
|
+
role: 'user' | 'assistant';
|
|
96
|
+
content: string;
|
|
97
|
+
}
|
|
98
|
+
/** A plain text segment of a multimodal `userContent` array. */
|
|
99
|
+
interface TextBlock {
|
|
100
|
+
type: 'text';
|
|
101
|
+
text: string;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* An inline image segment of a multimodal `userContent` array.
|
|
105
|
+
*
|
|
106
|
+
* `data` is the raw base64-encoded image bytes, with no `data:` URL prefix
|
|
107
|
+
* (adapters that need a data URL, e.g. OpenAI-compatible `image_url`, build
|
|
108
|
+
* it themselves from `mimeType` + `data`; adapters that need raw bytes, e.g.
|
|
109
|
+
* Bedrock, decode the base64 themselves).
|
|
110
|
+
*/
|
|
111
|
+
interface ImageBlock {
|
|
112
|
+
type: 'image';
|
|
113
|
+
/** Base64-encoded image bytes, no `data:` prefix */
|
|
114
|
+
data: string;
|
|
115
|
+
/** e.g. 'image/png', 'image/jpeg', 'image/webp', 'image/gif' */
|
|
116
|
+
mimeType: string;
|
|
117
|
+
}
|
|
118
|
+
/** A single segment of multimodal `userContent`. */
|
|
119
|
+
type ContentBlock = TextBlock | ImageBlock;
|
|
120
|
+
interface CallParams<T = unknown> {
|
|
121
|
+
systemPrompt?: string;
|
|
122
|
+
/**
|
|
123
|
+
* The current user turn. A plain string for text-only prompts (the common
|
|
124
|
+
* case), or an array of `ContentBlock`s (text and/or image) for multimodal
|
|
125
|
+
* input. Each adapter translates image blocks into its provider's native
|
|
126
|
+
* shape; providers/models that don't support image input will reject or
|
|
127
|
+
* ignore them.
|
|
128
|
+
*/
|
|
129
|
+
userContent: string | ContentBlock[];
|
|
130
|
+
/**
|
|
131
|
+
* Prior turns in the conversation, oldest first, NOT including the current
|
|
132
|
+
* `userContent` (that's appended automatically as the final user turn).
|
|
133
|
+
* Passed straight through to the provider so follow-up questions have
|
|
134
|
+
* access to earlier context. Must strictly alternate user/assistant and
|
|
135
|
+
* end on an assistant turn; validated up front and rejected with an
|
|
136
|
+
* LLMError('validation') before any request is made if malformed.
|
|
137
|
+
*/
|
|
138
|
+
history?: ConversationTurn[];
|
|
139
|
+
temperature?: number;
|
|
140
|
+
jsonMode?: boolean;
|
|
141
|
+
maxTokens?: number;
|
|
142
|
+
requestId?: string;
|
|
143
|
+
signal?: AbortSignal;
|
|
144
|
+
/** Overrides the model set on the VernLLM instance for this call only */
|
|
145
|
+
model?: string;
|
|
146
|
+
/**
|
|
147
|
+
* OpenAI-style reasoning effort for reasoning models (o-series, gpt-5, etc).
|
|
148
|
+
* Passed through as-is, providers/models that don't support it ignore it
|
|
149
|
+
*/
|
|
150
|
+
reasoningEffort?: 'minimal' | 'low' | 'medium' | 'high';
|
|
151
|
+
/**
|
|
152
|
+
* Provider-native JSON Schema structured-output mode. When set, this is sent
|
|
153
|
+
* as `response_format: { type: 'json_schema', json_schema: ... }` instead of
|
|
154
|
+
* the looser `json_object` mode, constraining the models output shape at
|
|
155
|
+
* generation time (not just validating it after the fact). Implies jsonMode: true.
|
|
156
|
+
*/
|
|
157
|
+
jsonSchema?: JsonSchemaSpec;
|
|
158
|
+
/**
|
|
159
|
+
* Optional Zod (or Zod-compatible) schema. When provided, the parsed JSON
|
|
160
|
+
* is validated against it; on failure an LLMError('validation') is thrown
|
|
161
|
+
* with `.issues` set to the schema's error object. Implies jsonMode: true.
|
|
162
|
+
* Can be combined with `jsonSchema` for provider-level constraint + client-side typing.
|
|
163
|
+
*/
|
|
164
|
+
schema?: SchemaLike<T>;
|
|
165
|
+
}
|
|
166
|
+
interface CachedCallParams<T> {
|
|
167
|
+
cacheKey: string;
|
|
168
|
+
ttl: number;
|
|
169
|
+
fn: () => Promise<T>;
|
|
170
|
+
reserveUsage?: ReserveUsage;
|
|
171
|
+
refundUsage?: RefundUsage;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
//#endregion
|
|
175
|
+
//#region src/types/client.d.ts
|
|
176
|
+
//# sourceMappingURL=call.d.ts.map
|
|
43
177
|
/**
|
|
44
178
|
* Minimal shape compatible with the OpenAI SDKs chat.completions.create,
|
|
45
179
|
* so consumers can pass an OpenAI client directly
|
|
@@ -69,8 +203,11 @@ interface LLMClient {
|
|
|
69
203
|
/** OpenAI reasoning-model param (o-series, gpt-5), ignored by providers that don't support it */
|
|
70
204
|
reasoning_effort?: 'minimal' | 'low' | 'medium' | 'high';
|
|
71
205
|
messages: Array<{
|
|
72
|
-
role: 'system' | '
|
|
206
|
+
role: 'system' | 'assistant';
|
|
73
207
|
content: string;
|
|
208
|
+
} | {
|
|
209
|
+
role: 'user';
|
|
210
|
+
content: string | ContentBlock[];
|
|
74
211
|
}>;
|
|
75
212
|
}, options: {
|
|
76
213
|
signal: AbortSignal;
|
|
@@ -90,56 +227,9 @@ interface LLMClient {
|
|
|
90
227
|
};
|
|
91
228
|
}
|
|
92
229
|
|
|
93
|
-
//#endregion
|
|
94
|
-
//#region src/types/usage.d.ts
|
|
95
|
-
//# sourceMappingURL=client.d.ts.map
|
|
96
|
-
type ReserveUsage = () => Promise<void>;
|
|
97
|
-
type RefundUsage = () => Promise<void>;
|
|
98
|
-
interface TokenUsage {
|
|
99
|
-
promptTokens: number;
|
|
100
|
-
completionTokens: number;
|
|
101
|
-
totalTokens: number;
|
|
102
|
-
requestId: string;
|
|
103
|
-
model: string;
|
|
104
|
-
}
|
|
105
|
-
type OnUsage = (usage: TokenUsage) => void;
|
|
106
|
-
|
|
107
|
-
//#endregion
|
|
108
|
-
//#region src/types/schema.d.ts
|
|
109
|
-
//# sourceMappingURL=usage.d.ts.map
|
|
110
|
-
/**
|
|
111
|
-
* Minimal structural type for a Zod-like schema, so this package doesnt need
|
|
112
|
-
* a hard dependency on a specific Zod major version. Any object exposing
|
|
113
|
-
* `safeParse` (Zod v3/v4, and most Zod-compatible validators) should satisfy this
|
|
114
|
-
*/
|
|
115
|
-
interface SchemaLike<T> {
|
|
116
|
-
safeParse(data: unknown): {
|
|
117
|
-
success: true;
|
|
118
|
-
data: T;
|
|
119
|
-
} | {
|
|
120
|
-
success: false;
|
|
121
|
-
error: unknown;
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* A provider-native JSON Schema for structured outputs (OpenAI/Groq
|
|
126
|
-
* `response_format: { type: 'json_schema' }`) This is the wire-format
|
|
127
|
-
* schema the model is constrained to generate against, distinct from
|
|
128
|
-
* `schema`, which is a client-side Zod validator run on the parsed result
|
|
129
|
-
* You can use one, both, or neither; using both gets you provider-level
|
|
130
|
-
* constraint plus client-side type inference/validation as a safety net
|
|
131
|
-
*/
|
|
132
|
-
interface JsonSchemaSpec {
|
|
133
|
-
name: string;
|
|
134
|
-
schema: Record<string, unknown>;
|
|
135
|
-
/** Enforces the schema strictly (OpenAI-specific), default true when supported */
|
|
136
|
-
strict?: boolean;
|
|
137
|
-
description?: string;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
230
|
//#endregion
|
|
141
231
|
//#region src/circuitBreaker.d.ts
|
|
142
|
-
//# sourceMappingURL=
|
|
232
|
+
//# sourceMappingURL=client.d.ts.map
|
|
143
233
|
interface CircuitBreakerOptions {
|
|
144
234
|
/** Consecutive failures before the circuit opens, default 5 */
|
|
145
235
|
threshold?: number;
|
|
@@ -159,8 +249,20 @@ declare class CircuitBreaker {
|
|
|
159
249
|
private openedAt;
|
|
160
250
|
private threshold;
|
|
161
251
|
private cooldownMs;
|
|
252
|
+
/**
|
|
253
|
+
* True while a single half-open trial call is in flight. Guards against
|
|
254
|
+
* multiple concurrent callers all treating themselves as "the" trial once
|
|
255
|
+
* the cooldown elapses
|
|
256
|
+
*/
|
|
257
|
+
private trialInFlight;
|
|
162
258
|
constructor(options?: CircuitBreakerOptions);
|
|
163
|
-
/**
|
|
259
|
+
/**
|
|
260
|
+
* Throws if the circuit is open and the cooldown hasn't elapsed, or if
|
|
261
|
+
* the circuit is half-open and a trial call is already in flight.
|
|
262
|
+
* Otherwise, if the circuit just became eligible for a trial (cooldown
|
|
263
|
+
* elapsed, or half-open with no trial currently running), this call
|
|
264
|
+
* becomes that trial
|
|
265
|
+
*/
|
|
164
266
|
assertClosed(): void;
|
|
165
267
|
recordSuccess(): void;
|
|
166
268
|
recordFailure(): void;
|
|
@@ -200,11 +302,12 @@ interface VernLLMOptions {
|
|
|
200
302
|
baseDelayMs?: number;
|
|
201
303
|
/** Default max_tokens for calls that don't override it. Default 1000 */
|
|
202
304
|
defaultMaxTokens?: number;
|
|
203
|
-
/** Enables debug logging of raw model output
|
|
305
|
+
/** Enables debug logging of raw model output (logs up to 800 chars of each
|
|
306
|
+
* response). Off by default */
|
|
204
307
|
debug?: boolean;
|
|
205
308
|
/** Cache adapter for cachedCall. Defaults to an in-memory adapter */
|
|
206
309
|
cache?: CacheAdapter;
|
|
207
|
-
/** HTTP status codes that should fail fast without retrying. Default [400, 401, 403] */
|
|
310
|
+
/** HTTP status codes that should fail fast without retrying. Default [400, 401, 403, 404, 422] */
|
|
208
311
|
nonRetryableStatus?: number[];
|
|
209
312
|
/** Custom JSON parser. Must return undefined/null on failure. Default: JSON.parse wrapped in try/catch */
|
|
210
313
|
parseJson?: (content: string) => unknown;
|
|
@@ -220,64 +323,9 @@ interface VernLLMOptions {
|
|
|
220
323
|
circuitBreaker?: boolean | CircuitBreakerOptions;
|
|
221
324
|
}
|
|
222
325
|
|
|
223
|
-
//#endregion
|
|
224
|
-
//#region src/types/call.d.ts
|
|
225
|
-
//# sourceMappingURL=options.d.ts.map
|
|
226
|
-
/** A single prior turn in a multi-turn conversation, passed via `history`. */
|
|
227
|
-
interface ConversationTurn {
|
|
228
|
-
role: 'user' | 'assistant';
|
|
229
|
-
content: string;
|
|
230
|
-
}
|
|
231
|
-
interface CallParams<T = unknown> {
|
|
232
|
-
systemPrompt?: string;
|
|
233
|
-
userContent: string;
|
|
234
|
-
/**
|
|
235
|
-
* Prior turns in the conversation, oldest first, NOT including the current
|
|
236
|
-
* `userContent` (that's appended automatically as the final user turn).
|
|
237
|
-
* Passed straight through to the provider so follow-up questions have
|
|
238
|
-
* access to earlier context. Must strictly alternate user/assistant and
|
|
239
|
-
* end on an assistant turn; validated up front and rejected with an
|
|
240
|
-
* LLMError('validation') before any request is made if malformed.
|
|
241
|
-
*/
|
|
242
|
-
history?: ConversationTurn[];
|
|
243
|
-
temperature?: number;
|
|
244
|
-
jsonMode?: boolean;
|
|
245
|
-
maxTokens?: number;
|
|
246
|
-
requestId?: string;
|
|
247
|
-
signal?: AbortSignal;
|
|
248
|
-
/** Overrides the model set on the VernLLM instance for this call only */
|
|
249
|
-
model?: string;
|
|
250
|
-
/**
|
|
251
|
-
* OpenAI-style reasoning effort for reasoning models (o-series, gpt-5, etc).
|
|
252
|
-
* Passed through as-is, providers/models that don't support it ignore it
|
|
253
|
-
*/
|
|
254
|
-
reasoningEffort?: 'minimal' | 'low' | 'medium' | 'high';
|
|
255
|
-
/**
|
|
256
|
-
* Provider-native JSON Schema structured-output mode. When set, this is sent
|
|
257
|
-
* as `response_format: { type: 'json_schema', json_schema: ... }` instead of
|
|
258
|
-
* the looser `json_object` mode, constraining the models output shape at
|
|
259
|
-
* generation time (not just validating it after the fact). Implies jsonMode: true.
|
|
260
|
-
*/
|
|
261
|
-
jsonSchema?: JsonSchemaSpec;
|
|
262
|
-
/**
|
|
263
|
-
* Optional Zod (or Zod-compatible) schema. When provided, the parsed JSON
|
|
264
|
-
* is validated against it; on failure an LLMError('validation') is thrown
|
|
265
|
-
* with `.issues` set to the schema's error object. Implies jsonMode: true.
|
|
266
|
-
* Can be combined with `jsonSchema` for provider-level constraint + client-side typing.
|
|
267
|
-
*/
|
|
268
|
-
schema?: SchemaLike<T>;
|
|
269
|
-
}
|
|
270
|
-
interface CachedCallParams<T> {
|
|
271
|
-
cacheKey: string;
|
|
272
|
-
ttl: number;
|
|
273
|
-
fn: () => Promise<T>;
|
|
274
|
-
reserveUsage?: ReserveUsage;
|
|
275
|
-
refundUsage?: RefundUsage;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
326
|
//#endregion
|
|
279
327
|
//#region src/vernLLM.d.ts
|
|
280
|
-
//# sourceMappingURL=
|
|
328
|
+
//# sourceMappingURL=options.d.ts.map
|
|
281
329
|
/**
|
|
282
330
|
* A resilient wrapper around an LLM chat completions client, this is VernLLM!
|
|
283
331
|
*
|
|
@@ -295,6 +343,7 @@ declare class VernLLM {
|
|
|
295
343
|
private readonly defaultMaxTokens;
|
|
296
344
|
private readonly cache;
|
|
297
345
|
private readonly nonRetryableStatus;
|
|
346
|
+
private readonly inFlight;
|
|
298
347
|
private readonly parseJson;
|
|
299
348
|
private readonly onUsage?;
|
|
300
349
|
private readonly logger;
|
|
@@ -312,8 +361,8 @@ declare class VernLLM {
|
|
|
312
361
|
private resolveRetryConfig;
|
|
313
362
|
/**
|
|
314
363
|
* Returns the caller supplied logger, or a console-based logger whose
|
|
315
|
-
* debug output is gated by the `debug` option (defaulting to
|
|
316
|
-
*
|
|
364
|
+
* debug output is gated by the `debug` option (defaulting to off,
|
|
365
|
+
* so response content isn't unintentionally written to logs)
|
|
317
366
|
*/
|
|
318
367
|
private resolveLogger;
|
|
319
368
|
/**
|
|
@@ -396,8 +445,11 @@ declare class VernLLM {
|
|
|
396
445
|
private parseAndValidate;
|
|
397
446
|
/**
|
|
398
447
|
* Waits out the backoff delay for a given retry attempt, logging the
|
|
399
|
-
* attempt for observability before the wait begins.
|
|
400
|
-
* the
|
|
448
|
+
* attempt for observability before the wait begins. Honors a
|
|
449
|
+
* Retry-After header on the failed attempt's error when present
|
|
450
|
+
* (capped at the same maxDelayMs as backoff), otherwise falls back to
|
|
451
|
+
* exponential backoff exactly as before. Rejects early if the signal
|
|
452
|
+
* aborts during the wait
|
|
401
453
|
*/
|
|
402
454
|
private recoverDelay;
|
|
403
455
|
/**
|
|
@@ -417,12 +469,21 @@ declare class VernLLM {
|
|
|
417
469
|
*/
|
|
418
470
|
deleteCache(key: string): Promise<void>;
|
|
419
471
|
/**
|
|
420
|
-
*
|
|
421
|
-
*
|
|
422
|
-
*
|
|
423
|
-
*
|
|
472
|
+
* Cache wrapper around caller-supplied logic. `params.fn` should invoke
|
|
473
|
+
* `this.call(...)` (see `cachedLLMCall`); retry/timeout handling is left
|
|
474
|
+
* to the caller.
|
|
475
|
+
*
|
|
476
|
+
* Concurrent misses for the same `cacheKey` share a single in-flight call,
|
|
477
|
+
* avoiding cache stampedes. Each caller still receives its own
|
|
478
|
+
* `reserveUsage`/`refundUsage` callbacks with coalescing metadata.
|
|
424
479
|
*/
|
|
425
480
|
cachedCall<T>(params: CachedCallParams<T>): Promise<T>;
|
|
481
|
+
/** Starts the shared fn() call for a cache miss, reserving usage first, and registers it in the in-flight map until it settles */
|
|
482
|
+
private registerTrigger;
|
|
483
|
+
/** Runs `fn` and writes its result to the cache. Only ever called once per cacheKey per in-flight window, from registerTrigger */
|
|
484
|
+
private runAndCache;
|
|
485
|
+
/** Awaits `run`, calling this caller's own refundUsage (tagged with whether it was coalesced) if it rejects, then rethrows the original error */
|
|
486
|
+
private withRefundOnFailure;
|
|
426
487
|
/**
|
|
427
488
|
* Convenience wrapper composing `call` + `cachedCall`, so cached LLM calls
|
|
428
489
|
* automatically get retry/timeout/circuit-breaker behavior without callers
|
|
@@ -441,6 +502,18 @@ declare class VernLLM {
|
|
|
441
502
|
//#endregion
|
|
442
503
|
//#region src/adapters/anthropic.d.ts
|
|
443
504
|
//# sourceMappingURL=vernLLM.d.ts.map
|
|
505
|
+
/** Anthropic's native per-block content shape for a message. */
|
|
506
|
+
type AnthropicContentBlock = {
|
|
507
|
+
type: 'text';
|
|
508
|
+
text: string;
|
|
509
|
+
} | {
|
|
510
|
+
type: 'image';
|
|
511
|
+
source: {
|
|
512
|
+
type: 'base64';
|
|
513
|
+
media_type: string;
|
|
514
|
+
data: string;
|
|
515
|
+
};
|
|
516
|
+
};
|
|
444
517
|
/** Minimal structural type for the Anthropic SDKs `messages.create` */
|
|
445
518
|
interface AnthropicClient {
|
|
446
519
|
messages: {
|
|
@@ -451,7 +524,7 @@ interface AnthropicClient {
|
|
|
451
524
|
system?: string;
|
|
452
525
|
messages: Array<{
|
|
453
526
|
role: 'user' | 'assistant';
|
|
454
|
-
content: string;
|
|
527
|
+
content: string | AnthropicContentBlock[];
|
|
455
528
|
}>;
|
|
456
529
|
tools?: Array<{
|
|
457
530
|
name: string;
|
|
@@ -497,7 +570,15 @@ declare function fromAnthropic(anthropicClient: AnthropicClient): LLMClient;
|
|
|
497
570
|
|
|
498
571
|
//#endregion
|
|
499
572
|
//#region src/adapters/gemini.d.ts
|
|
500
|
-
|
|
573
|
+
/** Gemini's native per-part content shape for a `contents` entry. */
|
|
574
|
+
type GeminiPart = {
|
|
575
|
+
text: string;
|
|
576
|
+
} | {
|
|
577
|
+
inlineData: {
|
|
578
|
+
mimeType: string;
|
|
579
|
+
data: string;
|
|
580
|
+
};
|
|
581
|
+
};
|
|
501
582
|
/**
|
|
502
583
|
* Minimal structural type for Geminis `generateContent`, matching both the
|
|
503
584
|
* legacy `@google/generative-ai` SDKs `model.generateContent(...)` and the
|
|
@@ -509,9 +590,7 @@ interface GeminiClient {
|
|
|
509
590
|
model?: string;
|
|
510
591
|
contents: Array<{
|
|
511
592
|
role: 'user' | 'model';
|
|
512
|
-
parts:
|
|
513
|
-
text: string;
|
|
514
|
-
}>;
|
|
593
|
+
parts: GeminiPart[];
|
|
515
594
|
}>;
|
|
516
595
|
systemInstruction?: {
|
|
517
596
|
parts: Array<{
|
|
@@ -556,7 +635,19 @@ declare function fromGemini(geminiClient: GeminiClient): LLMClient;
|
|
|
556
635
|
|
|
557
636
|
//#endregion
|
|
558
637
|
//#region src/adapters/bedrock.d.ts
|
|
559
|
-
|
|
638
|
+
/** Bedrock Converse's supported inline image formats. */
|
|
639
|
+
type BedrockImageFormat = 'png' | 'jpeg' | 'gif' | 'webp';
|
|
640
|
+
/** Bedrock Converse's native per-block content shape for a message. */
|
|
641
|
+
type BedrockContentBlock = {
|
|
642
|
+
text: string;
|
|
643
|
+
} | {
|
|
644
|
+
image: {
|
|
645
|
+
format: BedrockImageFormat;
|
|
646
|
+
source: {
|
|
647
|
+
bytes: Uint8Array;
|
|
648
|
+
};
|
|
649
|
+
};
|
|
650
|
+
};
|
|
560
651
|
/**
|
|
561
652
|
* Minimal structural type matching AWS Bedrocks Converse API. This is
|
|
562
653
|
* intentionally NOT `BedrockRuntimeClient` itself, the AWS SDK v3 client
|
|
@@ -578,9 +669,7 @@ interface BedrockConverseClient {
|
|
|
578
669
|
modelId: string;
|
|
579
670
|
messages: Array<{
|
|
580
671
|
role: 'user' | 'assistant';
|
|
581
|
-
content:
|
|
582
|
-
text: string;
|
|
583
|
-
}>;
|
|
672
|
+
content: BedrockContentBlock[];
|
|
584
673
|
}>;
|
|
585
674
|
system?: Array<{
|
|
586
675
|
text: string;
|
|
@@ -648,9 +737,30 @@ declare function fromBedrock(bedrockClient: BedrockConverseClient): LLMClient;
|
|
|
648
737
|
|
|
649
738
|
//#endregion
|
|
650
739
|
//#region src/adapters/fetch.d.ts
|
|
651
|
-
//# sourceMappingURL=bedrock.d.ts.map
|
|
652
740
|
/** The chat-completion-shaped request VernLLM builds internally */
|
|
653
741
|
type ChatRequest = Parameters<LLMClient['chat']['completions']['create']>[0];
|
|
742
|
+
/**
|
|
743
|
+
* The minimal shape the fetch adapter needs from a response object.
|
|
744
|
+
* Native `fetch`'s `Response` satisfies this, but so do wrappers around
|
|
745
|
+
* `axios`, `node-fetch`, `undici`, etc, which makes `request` swappable
|
|
746
|
+
* without forcing consumers to polyfill the full `Response` interface
|
|
747
|
+
*/
|
|
748
|
+
interface ResponseLike {
|
|
749
|
+
ok: boolean;
|
|
750
|
+
status: number;
|
|
751
|
+
headers: {
|
|
752
|
+
get(name: string): string | null;
|
|
753
|
+
};
|
|
754
|
+
text(): Promise<string>;
|
|
755
|
+
json(): Promise<unknown>;
|
|
756
|
+
}
|
|
757
|
+
/** A fetch-compatible request function; defaults to native `fetch` */
|
|
758
|
+
type RequestLike = (url: string, init: {
|
|
759
|
+
method: string;
|
|
760
|
+
headers: Record<string, string>;
|
|
761
|
+
body?: string;
|
|
762
|
+
signal?: AbortSignal;
|
|
763
|
+
}) => Promise<ResponseLike>;
|
|
654
764
|
interface FetchAdapterConfig {
|
|
655
765
|
/** Endpoint URL, or a function of the request in case it depends on model/params */
|
|
656
766
|
url: string | ((params: ChatRequest) => string);
|
|
@@ -658,6 +768,12 @@ interface FetchAdapterConfig {
|
|
|
658
768
|
headers?: Record<string, string> | (() => Record<string, string> | Promise<Record<string, string>>);
|
|
659
769
|
/** HTTP method. Default 'POST' */
|
|
660
770
|
method?: string;
|
|
771
|
+
/**
|
|
772
|
+
* The function used to make the HTTP request. Defaults to native `fetch`.
|
|
773
|
+
* Swap in `axios`, `node-fetch`, or any other transport, as long as it
|
|
774
|
+
* resolves to a `ResponseLike` object
|
|
775
|
+
*/
|
|
776
|
+
request?: RequestLike;
|
|
661
777
|
/** Maps VernLLMs internal chat-completion request into the providers raw request body */
|
|
662
778
|
mapRequest: (params: ChatRequest) => unknown;
|
|
663
779
|
/**
|
|
@@ -689,13 +805,19 @@ declare function fromFetch(config: FetchAdapterConfig): LLMClient;
|
|
|
689
805
|
//#endregion
|
|
690
806
|
//#region src/adapters/openaiCompatible.d.ts
|
|
691
807
|
/**
|
|
692
|
-
*
|
|
693
|
-
*
|
|
694
|
-
*
|
|
695
|
-
*
|
|
696
|
-
* so call sites read clearly (`fromMistral(client)` vs
|
|
697
|
-
* client to something typed for OpenAI) and so a real
|
|
698
|
-
* be added later, per-provider, without a breaking
|
|
808
|
+
* Adapter for any SDK/client whose `chat.completions.create` already
|
|
809
|
+
* matches the OpenAI wire format: this covers most hosted inference
|
|
810
|
+
* providers, since "OpenAI-compatible" is a de facto standard for chat
|
|
811
|
+
* completion APIs. Almost everything passes straight through untouched,
|
|
812
|
+
* this exists purely so call sites read clearly (`fromMistral(client)` vs
|
|
813
|
+
* handing a Mistral client to something typed for OpenAI) and so a real
|
|
814
|
+
* transformation could be added later, per-provider, without a breaking
|
|
815
|
+
* change.
|
|
816
|
+
*
|
|
817
|
+
* The one thing that isn't a pure passthrough: a `ContentBlock[]`
|
|
818
|
+
* `userContent` is translated into OpenAI's native `image_url` content-part
|
|
819
|
+
* shape, since VernLLM's `ContentBlock` is intentionally provider-agnostic
|
|
820
|
+
* rather than a copy of any one provider's wire format.
|
|
699
821
|
*
|
|
700
822
|
* Not every SDKs own TypeScript types line up exactly with `LLMClient`
|
|
701
823
|
* (extra fields, stricter unions, etc.), so this takes `unknown` and casts:
|
|
@@ -796,5 +918,5 @@ declare const from01AI: typeof fromOpenAICompatible;
|
|
|
796
918
|
//#endregion
|
|
797
919
|
//# sourceMappingURL=openaiCompatible.d.ts.map
|
|
798
920
|
|
|
799
|
-
export { AnthropicClient, BedrockConverseClient, CacheAdapter, CachedCallParams, CallParams, CircuitBreaker, CircuitBreakerOptions, ConsoleLogger, ConversationTurn, FetchAdapterConfig, GeminiClient, InMemoryCacheAdapter, JsonSchemaSpec, LLMClient, LLMError, LLMErrorType, Logger, OnUsage, RefundUsage, ReserveUsage, SchemaLike, TokenUsage, VernLLM, VernLLMOptions, from01AI, fromAnthropic, fromAnyscale, fromAtlasCloud, fromBaseten, fromBedrock, fromCerebras, fromCloudflareWorkersAI, fromDeepInfra, fromDeepSeek, fromFeatherless, fromFetch, fromFireworks, fromFriendli, fromGemini, fromGitHubModels, fromGroq, fromHyperbolic, fromInferenceNet, fromInfermatic, fromKlusterAI, fromLMStudio, fromLambdaLabs, fromLepton, fromMiniMax, fromMistral, fromMoonshot, fromNebius, fromNovita, fromNvidiaNIM, fromOllama, fromOpenAICompatible, fromOpenRouter, fromParasail, fromPerplexity, fromSambaNova, fromSiliconFlow, fromSnowflakeCortex, fromStepFun, fromTogether, fromVLLM, fromVercelAIGateway, fromXAI, fromZhipu, isLLMError };
|
|
921
|
+
export { AnthropicClient, BedrockConverseClient, CacheAdapter, CachedCallParams, CallParams, CircuitBreaker, CircuitBreakerOptions, ConsoleLogger, ContentBlock, ConversationTurn, FetchAdapterConfig, GeminiClient, ImageBlock, InMemoryCacheAdapter, JsonSchemaSpec, LLMClient, LLMError, LLMErrorType, Logger, OnUsage, RefundUsage, ReserveUsage, SchemaLike, TextBlock, TokenUsage, VernLLM, VernLLMOptions, from01AI, fromAnthropic, fromAnyscale, fromAtlasCloud, fromBaseten, fromBedrock, fromCerebras, fromCloudflareWorkersAI, fromDeepInfra, fromDeepSeek, fromFeatherless, fromFetch, fromFireworks, fromFriendli, fromGemini, fromGitHubModels, fromGroq, fromHyperbolic, fromInferenceNet, fromInfermatic, fromKlusterAI, fromLMStudio, fromLambdaLabs, fromLepton, fromMiniMax, fromMistral, fromMoonshot, fromNebius, fromNovita, fromNvidiaNIM, fromOllama, fromOpenAICompatible, fromOpenRouter, fromParasail, fromPerplexity, fromSambaNova, fromSiliconFlow, fromSnowflakeCortex, fromStepFun, fromTogether, fromVLLM, fromVercelAIGateway, fromXAI, fromZhipu, isLLMError };
|
|
800
922
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types/errors.ts","../src/types/cache.ts","../src/types/
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types/errors.ts","../src/types/cache.ts","../src/types/schema.ts","../src/types/usage.ts","../src/types/call.ts","../src/types/client.ts","../src/circuitBreaker.ts","../src/logger.ts","../src/types/options.ts","../src/vernLLM.ts","../src/adapters/anthropic.ts","../src/adapters/gemini.ts","../src/adapters/bedrock.ts","../src/adapters/fetch.ts","../src/adapters/openaiCompatible.ts"],"sourcesContent":null,"mappings":"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"}
|