universal-llm-client 3.1.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/README.md +177 -0
- package/dist/ai-model.d.ts +87 -0
- package/dist/ai-model.d.ts.map +1 -1
- package/dist/ai-model.js +99 -0
- package/dist/ai-model.js.map +1 -1
- package/dist/auditor.d.ts +5 -1
- package/dist/auditor.d.ts.map +1 -1
- package/dist/auditor.js +9 -0
- package/dist/auditor.js.map +1 -1
- package/dist/client.d.ts +14 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +60 -0
- package/dist/client.js.map +1 -1
- package/dist/http.d.ts +2 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +1 -0
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +186 -6
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js +14 -0
- package/dist/interfaces.js.map +1 -1
- package/dist/providers/anthropic.d.ts +56 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +524 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/google.d.ts +5 -0
- package/dist/providers/google.d.ts.map +1 -1
- package/dist/providers/google.js +81 -4
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +1 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/ollama.d.ts +13 -1
- package/dist/providers/ollama.d.ts.map +1 -1
- package/dist/providers/ollama.js +72 -10
- package/dist/providers/ollama.js.map +1 -1
- package/dist/providers/openai.d.ts +4 -0
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +53 -1
- package/dist/providers/openai.js.map +1 -1
- package/dist/router.d.ts +50 -0
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +319 -0
- package/dist/router.js.map +1 -1
- package/dist/stream-decoder.d.ts +29 -2
- package/dist/stream-decoder.d.ts.map +1 -1
- package/dist/stream-decoder.js +39 -11
- package/dist/stream-decoder.js.map +1 -1
- package/dist/structured-output.d.ts +370 -0
- package/dist/structured-output.d.ts.map +1 -0
- package/dist/structured-output.js +397 -0
- package/dist/structured-output.js.map +1 -0
- package/dist/zod-adapter.d.ts +44 -0
- package/dist/zod-adapter.d.ts.map +1 -0
- package/dist/zod-adapter.js +61 -0
- package/dist/zod-adapter.js.map +1 -0
- package/package.json +23 -4
- package/src/ai-model.ts +350 -0
- package/src/auditor.ts +213 -0
- package/src/client.ts +402 -0
- package/src/debug/debug-google-streaming.ts +97 -0
- package/src/debug/debug-tool-execution.ts +86 -0
- package/src/debug/test-lmstudio-tools.ts +155 -0
- package/src/demos/README.md +47 -0
- package/src/demos/basic/universal-llm-examples.ts +161 -0
- package/src/demos/mcp/astrid-memory-demo.ts +295 -0
- package/src/demos/mcp/astrid-persona-memory.ts +357 -0
- package/src/demos/mcp/mcp-mongodb-demo.ts +275 -0
- package/src/demos/mcp/simple-astrid-memory.ts +148 -0
- package/src/demos/mcp/simple-mcp-demo.ts +68 -0
- package/src/demos/mcp/working-mcp-demo.ts +62 -0
- package/src/demos/model-alias-demo.ts +0 -0
- package/src/demos/tools/RAG_MEMORY_INTEGRATION.md +267 -0
- package/src/demos/tools/astrid-memory-demo.ts +270 -0
- package/src/demos/tools/astrid-production-memory-clean.ts +785 -0
- package/src/demos/tools/astrid-production-memory.ts +558 -0
- package/src/demos/tools/basic-translation-test.ts +66 -0
- package/src/demos/tools/chromadb-similarity-tuning.ts +390 -0
- package/src/demos/tools/clean-multilingual-conversation.ts +209 -0
- package/src/demos/tools/clean-translation-test.ts +119 -0
- package/src/demos/tools/clean-universal-multilingual-test.ts +131 -0
- package/src/demos/tools/complete-rag-demo.ts +369 -0
- package/src/demos/tools/complete-tool-demo.ts +132 -0
- package/src/demos/tools/demo-tool-calling.ts +124 -0
- package/src/demos/tools/dynamic-language-switching-test.ts +251 -0
- package/src/demos/tools/hybrid-thinking-test.ts +154 -0
- package/src/demos/tools/memory-integration-test.ts +420 -0
- package/src/demos/tools/multilingual-memory-system.ts +802 -0
- package/src/demos/tools/ondemand-translation-demo.ts +655 -0
- package/src/demos/tools/production-tool-demo.ts +245 -0
- package/src/demos/tools/revolutionary-multilingual-test.ts +151 -0
- package/src/demos/tools/rigorous-language-analysis.ts +218 -0
- package/src/demos/tools/test-universal-memory-system.ts +126 -0
- package/src/demos/tools/translation-integration-guide.ts +346 -0
- package/src/demos/tools/universal-memory-system.ts +560 -0
- package/src/http.ts +247 -0
- package/src/index.ts +160 -0
- package/src/interfaces.ts +657 -0
- package/src/mcp.ts +345 -0
- package/src/providers/anthropic.ts +762 -0
- package/src/providers/google.ts +620 -0
- package/src/providers/index.ts +8 -0
- package/src/providers/ollama.ts +469 -0
- package/src/providers/openai.ts +392 -0
- package/src/router.ts +780 -0
- package/src/stream-decoder.ts +361 -0
- package/src/structured-output.ts +702 -0
- package/src/test-scripts/test-advanced-tools.ts +310 -0
- package/src/test-scripts/test-google-streaming-enhanced.ts +147 -0
- package/src/test-scripts/test-google-streaming.ts +63 -0
- package/src/test-scripts/test-google-system-prompt-comprehensive.ts +189 -0
- package/src/test-scripts/test-mcp-config.ts +28 -0
- package/src/test-scripts/test-mcp-connection.ts +29 -0
- package/src/test-scripts/test-system-message-positions.ts +163 -0
- package/src/test-scripts/test-system-prompt-improvement-demo.ts +83 -0
- package/src/test-scripts/test-tool-calling.ts +231 -0
- package/src/tests/ai-model.test.ts +1614 -0
- package/src/tests/auditor.test.ts +224 -0
- package/src/tests/http.test.ts +200 -0
- package/src/tests/interfaces.test.ts +117 -0
- package/src/tests/providers/google.test.ts +660 -0
- package/src/tests/providers/ollama.test.ts +954 -0
- package/src/tests/providers/openai.test.ts +1122 -0
- package/src/tests/router.test.ts +254 -0
- package/src/tests/stream-decoder.test.ts +179 -0
- package/src/tests/structured-output.test.ts +1340 -0
- package/src/tests/tools.test.ts +175 -0
- package/src/tools.ts +246 -0
- package/src/zod-adapter.ts +72 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,45 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [4.0.0] - 2026-03-13
|
|
9
|
+
|
|
10
|
+
### ⚠ BREAKING CHANGES
|
|
11
|
+
|
|
12
|
+
- **Zod 4 required** — `zod@^4.0.0` is now a peer dependency (upgraded from Zod 3). Consumers must install `zod@^4.0.0`.
|
|
13
|
+
- **Zero-dependency core** — Removed `zod-to-json-schema` from dependencies. Schema conversion now uses Zod 4's native `z.toJSONSchema()`. The library has no runtime dependencies (only peer deps).
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **Structured Output** — First-class structured output with Zod schema validation
|
|
18
|
+
- `generateStructured(schema, messages, options)` — returns typed, validated output
|
|
19
|
+
- `tryParseStructured(schema, messages, options)` — non-throwing variant returning `Result<T>`
|
|
20
|
+
- `generateStructuredStream(schema, messages, options)` — streaming with partial validated objects
|
|
21
|
+
- `chat(messages, { output: { schema } })` — structured output via `output` parameter on `chat()`
|
|
22
|
+
- Custom `StructuredOutputError` with `rawOutput` and `cause` for debuggability
|
|
23
|
+
- **Provider Structured Output Support** — Native format negotiation per provider
|
|
24
|
+
- OpenAI: `response_format: { type: 'json_schema' }` with configurable `strict` mode
|
|
25
|
+
- Google/Vertex AI: `responseMimeType` + `responseSchema` with automatic unsupported feature stripping
|
|
26
|
+
- Ollama: `format` parameter with JSON Schema objects
|
|
27
|
+
- **Streaming JSON Parser** — `StreamingJsonParser` for progressive partial object validation
|
|
28
|
+
- **Audit Events** — `structured_request`, `structured_response`, `structured_validation_error` events
|
|
29
|
+
- **Schema Utilities** — `zodToJsonSchema()`, `normalizeJsonSchema()`, `stripUnsupportedFeatures()`, `getJsonSchema()`
|
|
30
|
+
- **`./structured-output` sub-path export** — Direct import of structured output utilities
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
|
|
34
|
+
- Validation logic deduplicated into `BaseLLMClient` (was copy-pasted across 3 providers)
|
|
35
|
+
- Removed double validation (Router + Provider both validated the same response)
|
|
36
|
+
- Audit events no longer log `"assistant"` as the model name
|
|
37
|
+
- `chatStream()` now throws a clear error if `output` parameter is provided (use `generateStructuredStream()`)
|
|
38
|
+
- `zodToJsonSchema()` preserves `definitions`/`$defs` when `$ref` references exist in the schema tree
|
|
39
|
+
- OpenAI `strict` mode is now configurable via `output.strict` (defaults to `true`)
|
|
40
|
+
|
|
41
|
+
### Deprecated
|
|
42
|
+
|
|
43
|
+
- `ChatOptions.schema`, `.jsonSchema`, `.schemaName`, `.schemaDescription` — use `output` parameter or `generateStructured()` instead
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
8
47
|
## [3.1.0] - 2026-03-12
|
|
9
48
|
|
|
10
49
|
### Added
|
package/README.md
CHANGED
|
@@ -27,6 +27,7 @@ const response = await model.chat([
|
|
|
27
27
|
|
|
28
28
|
- 🔄 **Transparent Failover** — Priority-ordered provider chain with retries, health tracking, and cooldowns
|
|
29
29
|
- 🛠️ **Tool Calling** — Register tools once, works across all providers. Autonomous multi-turn execution loop
|
|
30
|
+
- 📋 **Structured Output** — Zod schema validation, JSON Schema support, streaming, and type-safe responses
|
|
30
31
|
- 🌊 **Streaming** — First-class async generator streaming with pluggable decoder strategies
|
|
31
32
|
- 🧠 **Reasoning** — Native `<think>` tag parsing, interleaved reasoning, and model thinking support
|
|
32
33
|
- 🔍 **Observability** — Built-in auditor interface for logging, cost tracking, and behavioral analysis
|
|
@@ -183,6 +184,133 @@ const vectors = await embedModel.embedArray(['Hello', 'World']);
|
|
|
183
184
|
// [[0.006, ...], [0.012, ...]]
|
|
184
185
|
```
|
|
185
186
|
|
|
187
|
+
### Structured Output
|
|
188
|
+
|
|
189
|
+
Get typed, validated JSON responses from any LLM using Zod schemas:
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
import { AIModel } from 'universal-llm-client';
|
|
193
|
+
import { z } from 'zod';
|
|
194
|
+
|
|
195
|
+
const model = new AIModel({
|
|
196
|
+
model: 'gemini-2.5-flash',
|
|
197
|
+
providers: [
|
|
198
|
+
{ type: 'google', apiKey: process.env.GOOGLE_API_KEY },
|
|
199
|
+
{ type: 'ollama' },
|
|
200
|
+
],
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
// Define your schema
|
|
204
|
+
const UserSchema = z.object({
|
|
205
|
+
name: z.string(),
|
|
206
|
+
age: z.number(),
|
|
207
|
+
email: z.string().email(),
|
|
208
|
+
interests: z.array(z.string()),
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
// Method 1: generateStructured (throws on validation failure)
|
|
212
|
+
const user = await model.generateStructured(UserSchema, [
|
|
213
|
+
{ role: 'user', content: 'Generate a user profile for a software developer' },
|
|
214
|
+
]);
|
|
215
|
+
|
|
216
|
+
console.log(user.name); // TypeScript knows this is string
|
|
217
|
+
console.log(user.age); // TypeScript knows this is number
|
|
218
|
+
console.log(user.email); // TypeScript knows this is string
|
|
219
|
+
console.log(user.interests); // TypeScript knows this is string[]
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
**Non-throwing variant:**
|
|
223
|
+
|
|
224
|
+
```typescript
|
|
225
|
+
// Method 2: tryParseStructured (returns result object, never throws)
|
|
226
|
+
const result = await model.tryParseStructured(UserSchema, messages);
|
|
227
|
+
|
|
228
|
+
if (result.ok) {
|
|
229
|
+
console.log('User:', result.value.name);
|
|
230
|
+
} else {
|
|
231
|
+
console.log('Error:', result.error.message);
|
|
232
|
+
console.log('Raw LLM output:', result.rawOutput);
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**Via chat options:**
|
|
237
|
+
|
|
238
|
+
```typescript
|
|
239
|
+
// Method 3: chat with output parameter
|
|
240
|
+
const response = await model.chat(messages, {
|
|
241
|
+
output: { schema: UserSchema },
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
// response.structured is typed as { name: string, age: number, ... }
|
|
245
|
+
if (response.structured) {
|
|
246
|
+
console.log(response.structured.name);
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
**Streaming structured output:**
|
|
251
|
+
|
|
252
|
+
```typescript
|
|
253
|
+
// Stream partial validated objects as JSON generates
|
|
254
|
+
for await (const partial of model.generateStructuredStream(UserSchema, messages)) {
|
|
255
|
+
console.log('Partial:', partial);
|
|
256
|
+
// Partial: { name: 'Alice' }
|
|
257
|
+
// Partial: { name: 'Alice', age: 30 }
|
|
258
|
+
// Partial: { name: 'Alice', age: 30, email: 'alice@example.com' }
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**Raw JSON Schema (without Zod):**
|
|
263
|
+
|
|
264
|
+
```typescript
|
|
265
|
+
const response = await model.chat(messages, {
|
|
266
|
+
jsonSchema: {
|
|
267
|
+
type: 'object',
|
|
268
|
+
properties: {
|
|
269
|
+
name: { type: 'string' },
|
|
270
|
+
age: { type: 'number' },
|
|
271
|
+
},
|
|
272
|
+
required: ['name', 'age'],
|
|
273
|
+
},
|
|
274
|
+
name: 'Person', // Optional, used for LLM guidance
|
|
275
|
+
});
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
**Separate module import (tree-shaking):**
|
|
279
|
+
|
|
280
|
+
```typescript
|
|
281
|
+
// Import only structured output types if you don't need the full client
|
|
282
|
+
import {
|
|
283
|
+
StructuredOutputError,
|
|
284
|
+
type StructuredOutputResult,
|
|
285
|
+
type StructuredOutputOptions,
|
|
286
|
+
parseStructured,
|
|
287
|
+
tryParseStructured,
|
|
288
|
+
zodToJsonSchema,
|
|
289
|
+
} from 'universal-llm-client/structured-output';
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
**Vision with structured output:**
|
|
293
|
+
|
|
294
|
+
```typescript
|
|
295
|
+
const ImageAnalysisSchema = z.object({
|
|
296
|
+
objects: z.array(z.string()),
|
|
297
|
+
scene: z.string(),
|
|
298
|
+
mood: z.string(),
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
const response = await model.generateStructured(ImageAnalysisSchema, [
|
|
302
|
+
multimodalMessage('Analyze this image', ['https://example.com/photo.jpg']),
|
|
303
|
+
]);
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**Provider compatibility:**
|
|
307
|
+
|
|
308
|
+
| Provider | Method | Notes |
|
|
309
|
+
|----------|--------|-------|
|
|
310
|
+
| OpenAI | `response_format.json_schema` | Strict mode enabled |
|
|
311
|
+
| Ollama | `format: { schema }` | Model must support grammar |
|
|
312
|
+
| Google | `responseMimeType + responseSchema` | Some features stripped |
|
|
313
|
+
|
|
186
314
|
### Observability
|
|
187
315
|
|
|
188
316
|
```typescript
|
|
@@ -308,6 +436,9 @@ new AIModel(config: AIModelConfig)
|
|
|
308
436
|
| `chat(messages, options?)` | `Promise<LLMChatResponse>` | Send chat request |
|
|
309
437
|
| `chatWithTools(messages, options?)` | `Promise<LLMChatResponse>` | Chat with autonomous tool execution |
|
|
310
438
|
| `chatStream(messages, options?)` | `AsyncGenerator<DecodedEvent>` | Stream chat response |
|
|
439
|
+
| `generateStructured(schema, messages, options?)` | `Promise<T>` | Generate typed JSON validated against Zod schema |
|
|
440
|
+
| `tryParseStructured(schema, messages, options?)` | `Promise<StructuredOutputResult<T>>` | Non-throwing variant returning result object |
|
|
441
|
+
| `generateStructuredStream(schema, messages, options?)` | `AsyncGenerator<T, T>` | Stream partial validated objects as JSON generates |
|
|
311
442
|
| `embed(text)` | `Promise<number[]>` | Generate single embedding |
|
|
312
443
|
| `embedArray(texts)` | `Promise<number[][]>` | Generate batch embeddings |
|
|
313
444
|
| `registerTool(name, desc, params, handler)` | `void` | Register a callable tool |
|
|
@@ -318,6 +449,52 @@ new AIModel(config: AIModelConfig)
|
|
|
318
449
|
| `setModel(name)` | `void` | Switch model at runtime |
|
|
319
450
|
| `dispose()` | `Promise<void>` | Clean shutdown |
|
|
320
451
|
|
|
452
|
+
### Structured Output
|
|
453
|
+
|
|
454
|
+
```typescript
|
|
455
|
+
import { z } from 'zod';
|
|
456
|
+
|
|
457
|
+
// Define your schema
|
|
458
|
+
const UserSchema = z.object({
|
|
459
|
+
name: z.string(),
|
|
460
|
+
age: z.number(),
|
|
461
|
+
email: z.string().email(),
|
|
462
|
+
});
|
|
463
|
+
|
|
464
|
+
// Generate typed JSON
|
|
465
|
+
const user = await model.generateStructured(UserSchema, messages);
|
|
466
|
+
// TypeScript infers: { name: string; age: number; email: string }
|
|
467
|
+
|
|
468
|
+
// Non-throwing variant
|
|
469
|
+
const result = await model.tryParseStructured(UserSchema, messages);
|
|
470
|
+
if (result.ok) {
|
|
471
|
+
console.log(result.value.name); // Fully typed
|
|
472
|
+
} else {
|
|
473
|
+
console.log(result.error.message);
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
// Stream partial objects
|
|
477
|
+
for await (const partial of model.generateStructuredStream(UserSchema, messages)) {
|
|
478
|
+
console.log(partial); // Partial validated objects
|
|
479
|
+
}
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
**Separate module import (tree-shaking):**
|
|
483
|
+
|
|
484
|
+
```typescript
|
|
485
|
+
import {
|
|
486
|
+
StructuredOutputError,
|
|
487
|
+
type StructuredOutputResult,
|
|
488
|
+
parseStructured,
|
|
489
|
+
tryParseStructured,
|
|
490
|
+
zodToJsonSchema,
|
|
491
|
+
} from 'universal-llm-client/structured-output';
|
|
492
|
+
|
|
493
|
+
// Use without importing the full client
|
|
494
|
+
const schema = z.object({ name: z.string() });
|
|
495
|
+
const jsonSchema = zodToJsonSchema(schema);
|
|
496
|
+
```
|
|
497
|
+
|
|
321
498
|
### `ToolBuilder` / `ToolExecutor`
|
|
322
499
|
|
|
323
500
|
```typescript
|
package/dist/ai-model.d.ts
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import { type AIModelConfig, type LLMChatMessage, type LLMChatResponse, type ChatOptions, type ModelMetadata, type LLMFunction, type ToolHandler } from './interfaces.js';
|
|
10
10
|
import type { DecodedEvent } from './stream-decoder.js';
|
|
11
11
|
import { type ProviderStatus } from './router.js';
|
|
12
|
+
import { type StructuredOutputResult, type SchemaConfig } from './structured-output.js';
|
|
12
13
|
export declare class AIModel {
|
|
13
14
|
private router;
|
|
14
15
|
private auditor;
|
|
@@ -22,6 +23,92 @@ export declare class AIModel {
|
|
|
22
23
|
}): Promise<LLMChatResponse>;
|
|
23
24
|
/** Stream chat response with pluggable decoder strategy */
|
|
24
25
|
chatStream(messages: LLMChatMessage[], options?: ChatOptions): AsyncGenerator<DecodedEvent, LLMChatResponse | void, unknown>;
|
|
26
|
+
/**
|
|
27
|
+
* Generate structured output from the LLM with automatic failover.
|
|
28
|
+
* Validates the response against the provided Zod schema.
|
|
29
|
+
* Throws StructuredOutputError on validation failure.
|
|
30
|
+
*
|
|
31
|
+
* @template T The output type
|
|
32
|
+
* @param config Schema configuration (JSON Schema + optional validator)
|
|
33
|
+
* @param messages Chat messages to send
|
|
34
|
+
* @param options Additional options (temperature, maxTokens, etc.)
|
|
35
|
+
* @returns Promise resolving to validated structured output
|
|
36
|
+
* @throws StructuredOutputError if JSON parsing fails or validation fails
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* import { fromZod } from 'universal-llm-client/zod';
|
|
41
|
+
* const UserConfig = fromZod(z.object({
|
|
42
|
+
* name: z.string(),
|
|
43
|
+
* age: z.number(),
|
|
44
|
+
* }));
|
|
45
|
+
*
|
|
46
|
+
* const user = await model.generateStructured(UserConfig, [
|
|
47
|
+
* { role: 'user', content: 'Generate a user profile' },
|
|
48
|
+
* ]);
|
|
49
|
+
* // user.name: string, user.age: number
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
generateStructured<T>(config: SchemaConfig<T>, messages: LLMChatMessage[], options?: ChatOptions): Promise<T>;
|
|
53
|
+
/**
|
|
54
|
+
* Try to generate structured output, returning a result object instead of throwing.
|
|
55
|
+
* Same as generateStructured but returns { ok: true, value } on success
|
|
56
|
+
* and { ok: false, error, rawOutput } on failure.
|
|
57
|
+
*
|
|
58
|
+
* @template T The output type
|
|
59
|
+
* @param config Schema configuration (JSON Schema + optional validator)
|
|
60
|
+
* @param messages Chat messages to send
|
|
61
|
+
* @param options Additional options (temperature, maxTokens, etc.)
|
|
62
|
+
* @returns StructuredOutputResult<T> - either success with value or failure with error
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* const result = await model.tryParseStructured(config, messages);
|
|
67
|
+
*
|
|
68
|
+
* if (result.ok) {
|
|
69
|
+
* console.log('User:', result.value.name);
|
|
70
|
+
* } else {
|
|
71
|
+
* console.log('Error:', result.error.message);
|
|
72
|
+
* console.log('Raw output:', result.rawOutput);
|
|
73
|
+
* }
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
tryParseStructured<T>(config: SchemaConfig<T>, messages: LLMChatMessage[], options?: ChatOptions): Promise<StructuredOutputResult<T>>;
|
|
77
|
+
/**
|
|
78
|
+
* Stream structured output with partial validated objects.
|
|
79
|
+
*
|
|
80
|
+
* Yields partial validated objects as JSON generates, then returns the
|
|
81
|
+
* complete validated object on stream completion.
|
|
82
|
+
*
|
|
83
|
+
* For invalid partial JSON, no yield occurs (partial validation is best-effort).
|
|
84
|
+
* On stream completion, if the final JSON fails validation, throws StructuredOutputError.
|
|
85
|
+
*
|
|
86
|
+
* @template T The output type
|
|
87
|
+
* @param config Schema configuration (JSON Schema + optional validator)
|
|
88
|
+
* @param messages Chat messages to send
|
|
89
|
+
* @param options Additional options (temperature, maxTokens, etc.)
|
|
90
|
+
* @yields Partial validated objects as the JSON stream progresses
|
|
91
|
+
* @returns Complete validated object on stream completion
|
|
92
|
+
* @throws StructuredOutputError if final validation fails
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* import { fromZod } from 'universal-llm-client/zod';
|
|
97
|
+
* const UserConfig = fromZod(z.object({
|
|
98
|
+
* name: z.string(),
|
|
99
|
+
* age: z.number(),
|
|
100
|
+
* }));
|
|
101
|
+
*
|
|
102
|
+
* const stream = model.generateStructuredStream(UserConfig, [
|
|
103
|
+
* { role: 'user', content: 'Generate a user' },
|
|
104
|
+
* ]);
|
|
105
|
+
*
|
|
106
|
+
* for await (const partial of stream) {
|
|
107
|
+
* console.log('Partial user:', partial);
|
|
108
|
+
* }
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
generateStructuredStream<T>(config: SchemaConfig<T>, messages: LLMChatMessage[], options?: ChatOptions): AsyncGenerator<T, T, unknown>;
|
|
25
112
|
/** Generate embedding for a single text */
|
|
26
113
|
embed(text: string): Promise<number[]>;
|
|
27
114
|
/** Generate embeddings for multiple texts */
|
package/dist/ai-model.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-model.d.ts","sourceRoot":"","sources":["../src/ai-model.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEH,KAAK,aAAa,EAGlB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAA6B,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-model.d.ts","sourceRoot":"","sources":["../src/ai-model.ts"],"names":[],"mappings":"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"}
|
package/dist/ai-model.js
CHANGED
|
@@ -11,6 +11,7 @@ import { NoopAuditor } from './auditor.js';
|
|
|
11
11
|
import { OllamaClient } from './providers/ollama.js';
|
|
12
12
|
import { OpenAICompatibleClient } from './providers/openai.js';
|
|
13
13
|
import { GoogleClient } from './providers/google.js';
|
|
14
|
+
import { AnthropicClient } from './providers/anthropic.js';
|
|
14
15
|
// ============================================================================
|
|
15
16
|
// Default Provider URLs
|
|
16
17
|
// ============================================================================
|
|
@@ -18,6 +19,7 @@ const DEFAULT_URLS = {
|
|
|
18
19
|
ollama: 'http://localhost:11434',
|
|
19
20
|
openai: 'https://api.openai.com',
|
|
20
21
|
llamacpp: 'http://localhost:8080',
|
|
22
|
+
anthropic: 'https://api.anthropic.com',
|
|
21
23
|
// google and vertex build their own URLs internally
|
|
22
24
|
};
|
|
23
25
|
// ============================================================================
|
|
@@ -64,6 +66,101 @@ export class AIModel {
|
|
|
64
66
|
return yield* this.router.chatStream(messages, options);
|
|
65
67
|
}
|
|
66
68
|
// ========================================================================
|
|
69
|
+
// Structured Output
|
|
70
|
+
// ========================================================================
|
|
71
|
+
/**
|
|
72
|
+
* Generate structured output from the LLM with automatic failover.
|
|
73
|
+
* Validates the response against the provided Zod schema.
|
|
74
|
+
* Throws StructuredOutputError on validation failure.
|
|
75
|
+
*
|
|
76
|
+
* @template T The output type
|
|
77
|
+
* @param config Schema configuration (JSON Schema + optional validator)
|
|
78
|
+
* @param messages Chat messages to send
|
|
79
|
+
* @param options Additional options (temperature, maxTokens, etc.)
|
|
80
|
+
* @returns Promise resolving to validated structured output
|
|
81
|
+
* @throws StructuredOutputError if JSON parsing fails or validation fails
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* import { fromZod } from 'universal-llm-client/zod';
|
|
86
|
+
* const UserConfig = fromZod(z.object({
|
|
87
|
+
* name: z.string(),
|
|
88
|
+
* age: z.number(),
|
|
89
|
+
* }));
|
|
90
|
+
*
|
|
91
|
+
* const user = await model.generateStructured(UserConfig, [
|
|
92
|
+
* { role: 'user', content: 'Generate a user profile' },
|
|
93
|
+
* ]);
|
|
94
|
+
* // user.name: string, user.age: number
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
async generateStructured(config, messages, options) {
|
|
98
|
+
return this.router.generateStructured(config, messages, options);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Try to generate structured output, returning a result object instead of throwing.
|
|
102
|
+
* Same as generateStructured but returns { ok: true, value } on success
|
|
103
|
+
* and { ok: false, error, rawOutput } on failure.
|
|
104
|
+
*
|
|
105
|
+
* @template T The output type
|
|
106
|
+
* @param config Schema configuration (JSON Schema + optional validator)
|
|
107
|
+
* @param messages Chat messages to send
|
|
108
|
+
* @param options Additional options (temperature, maxTokens, etc.)
|
|
109
|
+
* @returns StructuredOutputResult<T> - either success with value or failure with error
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```typescript
|
|
113
|
+
* const result = await model.tryParseStructured(config, messages);
|
|
114
|
+
*
|
|
115
|
+
* if (result.ok) {
|
|
116
|
+
* console.log('User:', result.value.name);
|
|
117
|
+
* } else {
|
|
118
|
+
* console.log('Error:', result.error.message);
|
|
119
|
+
* console.log('Raw output:', result.rawOutput);
|
|
120
|
+
* }
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
async tryParseStructured(config, messages, options) {
|
|
124
|
+
return this.router.tryParseStructured(config, messages, options);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Stream structured output with partial validated objects.
|
|
128
|
+
*
|
|
129
|
+
* Yields partial validated objects as JSON generates, then returns the
|
|
130
|
+
* complete validated object on stream completion.
|
|
131
|
+
*
|
|
132
|
+
* For invalid partial JSON, no yield occurs (partial validation is best-effort).
|
|
133
|
+
* On stream completion, if the final JSON fails validation, throws StructuredOutputError.
|
|
134
|
+
*
|
|
135
|
+
* @template T The output type
|
|
136
|
+
* @param config Schema configuration (JSON Schema + optional validator)
|
|
137
|
+
* @param messages Chat messages to send
|
|
138
|
+
* @param options Additional options (temperature, maxTokens, etc.)
|
|
139
|
+
* @yields Partial validated objects as the JSON stream progresses
|
|
140
|
+
* @returns Complete validated object on stream completion
|
|
141
|
+
* @throws StructuredOutputError if final validation fails
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```typescript
|
|
145
|
+
* import { fromZod } from 'universal-llm-client/zod';
|
|
146
|
+
* const UserConfig = fromZod(z.object({
|
|
147
|
+
* name: z.string(),
|
|
148
|
+
* age: z.number(),
|
|
149
|
+
* }));
|
|
150
|
+
*
|
|
151
|
+
* const stream = model.generateStructuredStream(UserConfig, [
|
|
152
|
+
* { role: 'user', content: 'Generate a user' },
|
|
153
|
+
* ]);
|
|
154
|
+
*
|
|
155
|
+
* for await (const partial of stream) {
|
|
156
|
+
* console.log('Partial user:', partial);
|
|
157
|
+
* }
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
async *generateStructuredStream(config, messages, options) {
|
|
161
|
+
return yield* this.router.generateStructuredStream(config, messages, options);
|
|
162
|
+
}
|
|
163
|
+
// ========================================================================
|
|
67
164
|
// Embeddings
|
|
68
165
|
// ========================================================================
|
|
69
166
|
/** Generate embedding for a single text */
|
|
@@ -148,6 +245,8 @@ export class AIModel {
|
|
|
148
245
|
case 'google':
|
|
149
246
|
case 'vertex':
|
|
150
247
|
return new GoogleClient(clientOptions, this.auditor);
|
|
248
|
+
case 'anthropic':
|
|
249
|
+
return new AnthropicClient(clientOptions, this.auditor);
|
|
151
250
|
default:
|
|
152
251
|
throw new Error(`Unknown provider type: ${type}`);
|
|
153
252
|
}
|
package/dist/ai-model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-model.js","sourceRoot":"","sources":["../src/ai-model.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,OAAO,EAAE,MAAM,EAA0C,MAAM,aAAa,CAAC;AAE7E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-model.js","sourceRoot":"","sources":["../src/ai-model.ts"],"names":[],"mappings":"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"}
|
package/dist/auditor.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Auditor for dashboards, cost tracking, or behavioral scoring.
|
|
7
7
|
*/
|
|
8
8
|
import type { TokenUsageInfo, ToolExecutionResult } from './interfaces.js';
|
|
9
|
-
export type AuditEventType = 'request' | 'response' | 'stream_start' | 'stream_end' | 'tool_call' | 'tool_result' | 'error' | 'retry' | 'failover';
|
|
9
|
+
export type AuditEventType = 'request' | 'response' | 'stream_start' | 'stream_end' | 'tool_call' | 'tool_result' | 'error' | 'retry' | 'failover' | 'structured_request' | 'structured_response' | 'structured_validation_error';
|
|
10
10
|
export interface AuditEvent {
|
|
11
11
|
/** Unix timestamp in ms */
|
|
12
12
|
timestamp: number;
|
|
@@ -26,6 +26,10 @@ export interface AuditEvent {
|
|
|
26
26
|
error?: string;
|
|
27
27
|
/** Arbitrary metadata for framework-specific data */
|
|
28
28
|
metadata?: Record<string, unknown>;
|
|
29
|
+
/** Schema name for structured output events */
|
|
30
|
+
schemaName?: string;
|
|
31
|
+
/** Raw output snippet for validation errors */
|
|
32
|
+
rawOutput?: string;
|
|
29
33
|
}
|
|
30
34
|
/**
|
|
31
35
|
* Interface for LLM observability.
|
package/dist/auditor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auditor.d.ts","sourceRoot":"","sources":["../src/auditor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAM3E,MAAM,MAAM,cAAc,GACpB,SAAS,GACT,UAAU,GACV,cAAc,GACd,YAAY,GACZ,WAAW,GACX,aAAa,GACb,OAAO,GACP,OAAO,GACP,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"auditor.d.ts","sourceRoot":"","sources":["../src/auditor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAM3E,MAAM,MAAM,cAAc,GACpB,SAAS,GACT,UAAU,GACV,cAAc,GACd,YAAY,GACZ,WAAW,GACX,aAAa,GACb,OAAO,GACP,OAAO,GACP,UAAU,GACV,oBAAoB,GACpB,qBAAqB,GACrB,6BAA6B,CAAC;AAEpC,MAAM,WAAW,UAAU;IACvB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,IAAI,EAAE,cAAc,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,gEAAgE;IAChE,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACpB,4BAA4B;IAC5B,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,2CAA2C;IAC3C,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAMD;;;GAGG;AACH,qBAAa,WAAY,YAAW,OAAO;IACvC,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;CAGnC;AAED;;;GAGG;AACH,qBAAa,cAAe,YAAW,OAAO;IAC1C,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,GAAE,MAAgB;IAIpC,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAwElC;AAED;;;GAGG;AACH,qBAAa,eAAgB,YAAW,OAAO;IAC3C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAC,CAA0C;gBAE9C,OAAO,GAAE;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAChD;IAKN,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAQ/B,8BAA8B;IAC9B,SAAS,IAAI,aAAa,CAAC,UAAU,CAAC;IAItC,mDAAmD;IAC7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B,iDAAiD;IACjD,KAAK,IAAI,IAAI;CAGhB"}
|
package/dist/auditor.js
CHANGED
|
@@ -61,6 +61,15 @@ export class ConsoleAuditor {
|
|
|
61
61
|
case 'failover':
|
|
62
62
|
console.warn(parts.join(' '), '→', event.metadata?.['nextProvider'] ?? '');
|
|
63
63
|
break;
|
|
64
|
+
case 'structured_request':
|
|
65
|
+
console.log(parts.join(' '), `schema=${event.schemaName ?? 'unknown'}`, '→');
|
|
66
|
+
break;
|
|
67
|
+
case 'structured_response':
|
|
68
|
+
console.log(parts.join(' '), event.duration ? `${event.duration}ms` : '', `schema=${event.schemaName ?? 'unknown'}`);
|
|
69
|
+
break;
|
|
70
|
+
case 'structured_validation_error':
|
|
71
|
+
console.error(parts.join(' '), `schema=${event.schemaName ?? 'unknown'}`, event.error ?? 'Validation failed', event.rawOutput ? `raw=${event.rawOutput.slice(0, 50)}...` : '');
|
|
72
|
+
break;
|
|
64
73
|
}
|
|
65
74
|
}
|
|
66
75
|
}
|
package/dist/auditor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auditor.js","sourceRoot":"","sources":["../src/auditor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"auditor.js","sourceRoot":"","sources":["../src/auditor.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* multi-turn tool execution loop.
|
|
7
7
|
*/
|
|
8
8
|
import type { LLMClientOptions, LLMChatMessage, LLMChatResponse, LLMToolDefinition, LLMToolCall, LLMFunction, ToolRegistry, ToolHandler, ToolExecutionResult, ChatOptions, ModelMetadata } from './interfaces.js';
|
|
9
|
+
import { type StructuredOutputOptions, type SchemaConfig } from './structured-output.js';
|
|
9
10
|
import type { DecodedEvent } from './stream-decoder.js';
|
|
10
11
|
import type { Auditor } from './auditor.js';
|
|
11
12
|
export declare abstract class BaseLLMClient {
|
|
@@ -71,5 +72,18 @@ export declare abstract class BaseLLMClient {
|
|
|
71
72
|
* Generate a unique ID for tool calls when the provider doesn't provide one.
|
|
72
73
|
*/
|
|
73
74
|
protected generateToolCallId(): string;
|
|
75
|
+
/**
|
|
76
|
+
* Extract schema options from ChatOptions.
|
|
77
|
+
* Returns null if no schema is provided.
|
|
78
|
+
* Returns a SchemaConfig if a schema was found.
|
|
79
|
+
*/
|
|
80
|
+
protected extractSchemaOptions(options?: ChatOptions): (StructuredOutputOptions<unknown> & {
|
|
81
|
+
schemaConfig: SchemaConfig<unknown>;
|
|
82
|
+
}) | null;
|
|
83
|
+
/**
|
|
84
|
+
* Validate structured response using a SchemaConfig.
|
|
85
|
+
* Throws StructuredOutputError on failure.
|
|
86
|
+
*/
|
|
87
|
+
protected validateStructuredResponse(content: string, config: SchemaConfig<unknown>): void;
|
|
74
88
|
}
|
|
75
89
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACR,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,aAAa,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAO5C,8BAAsB,aAAa;IAC/B,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACpC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAM;IAC1C,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC;gBAEb,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,OAAO;IAUxD,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,CACT,QAAQ,EAAE,cAAc,EAAE,EAC1B,OAAO,CAAC,EAAE,WAAW,GACtB,OAAO,CAAC,eAAe,CAAC;IAE3B,+CAA+C;IAC/C,QAAQ,CAAC,UAAU,CACf,QAAQ,EAAE,cAAc,EAAE,EAC1B,OAAO,CAAC,EAAE,WAAW,GACtB,cAAc,CAAC,YAAY,EAAE,eAAe,GAAG,IAAI,EAAE,OAAO,CAAC;IAEhE,2BAA2B;IAC3B,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAEvC,mCAAmC;IACnC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAE/C,6CAA6C;IACvC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAItD;;;OAGG;IACG,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAQ/D;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAQxB,qDAAqD;IACrD,YAAY,CACR,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,EACrC,OAAO,EAAE,WAAW,GACrB,IAAI;IAaP,sCAAsC;IACtC,aAAa,CACT,KAAK,EAAE,KAAK,CAAC;QACT,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;QACtC,OAAO,EAAE,WAAW,CAAC;KACxB,CAAC,GACH,IAAI;IAMP,2EAA2E;IAC3E,kBAAkB,IAAI,iBAAiB,EAAE;IAezC,0DAA0D;IACpD,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA6EtE,8CAA8C;IACxC,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAQ5E;;;;OAIG;IACG,aAAa,CACf,QAAQ,EAAE,cAAc,EAAE,EAC1B,OAAO,CAAC,EAAE,WAAW,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GACnD,OAAO,CAAC,eAAe,CAAC;IAqD3B,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKjC,iCAAiC;IACjC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,uBAAuB;IACvB,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,+BAA+B;IAC/B,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAMzD;;OAEG;IACH,SAAS,CAAC,kBAAkB,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACR,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,aAAa,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEH,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAO5C,8BAAsB,aAAa;IAC/B,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACpC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAM;IAC1C,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC;gBAEb,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,OAAO;IAUxD,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,CACT,QAAQ,EAAE,cAAc,EAAE,EAC1B,OAAO,CAAC,EAAE,WAAW,GACtB,OAAO,CAAC,eAAe,CAAC;IAE3B,+CAA+C;IAC/C,QAAQ,CAAC,UAAU,CACf,QAAQ,EAAE,cAAc,EAAE,EAC1B,OAAO,CAAC,EAAE,WAAW,GACtB,cAAc,CAAC,YAAY,EAAE,eAAe,GAAG,IAAI,EAAE,OAAO,CAAC;IAEhE,2BAA2B;IAC3B,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAEvC,mCAAmC;IACnC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAE/C,6CAA6C;IACvC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAItD;;;OAGG;IACG,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAQ/D;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAQxB,qDAAqD;IACrD,YAAY,CACR,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,EACrC,OAAO,EAAE,WAAW,GACrB,IAAI;IAaP,sCAAsC;IACtC,aAAa,CACT,KAAK,EAAE,KAAK,CAAC;QACT,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;QACtC,OAAO,EAAE,WAAW,CAAC;KACxB,CAAC,GACH,IAAI;IAMP,2EAA2E;IAC3E,kBAAkB,IAAI,iBAAiB,EAAE;IAezC,0DAA0D;IACpD,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA6EtE,8CAA8C;IACxC,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAQ5E;;;;OAIG;IACG,aAAa,CACf,QAAQ,EAAE,cAAc,EAAE,EAC1B,OAAO,CAAC,EAAE,WAAW,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GACnD,OAAO,CAAC,eAAe,CAAC;IAqD3B,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKjC,iCAAiC;IACjC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,uBAAuB;IACvB,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,+BAA+B;IAC/B,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAMzD;;OAEG;IACH,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAQtC;;;;OAIG;IACH,SAAS,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,CAAC,uBAAuB,CAAC,OAAO,CAAC,GAAG;QAAE,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,GAAG,IAAI;IA0B1I;;;OAGG;IACH,SAAS,CAAC,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI;CAiC7F"}
|