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