llmjs2 1.0.1 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +39 -436
  2. package/grapes.jpg +0 -0
  3. package/index.d.ts +43 -0
  4. package/index.js +465 -0
  5. package/package.json +7 -47
  6. package/spec.txt +73 -0
  7. package/test-generate-tools-suite.js +100 -0
  8. package/test-generate-tools.js +57 -0
  9. package/test-generate.js +31 -0
  10. package/test.js +33 -0
  11. package/LICENSE +0 -21
  12. package/dist/agent.d.ts +0 -80
  13. package/dist/agent.d.ts.map +0 -1
  14. package/dist/agent.js +0 -199
  15. package/dist/agent.js.map +0 -1
  16. package/dist/index.d.ts +0 -74
  17. package/dist/index.d.ts.map +0 -1
  18. package/dist/index.js +0 -191
  19. package/dist/index.js.map +0 -1
  20. package/dist/providers/base.d.ts +0 -58
  21. package/dist/providers/base.d.ts.map +0 -1
  22. package/dist/providers/base.js +0 -149
  23. package/dist/providers/base.js.map +0 -1
  24. package/dist/providers/index.d.ts +0 -8
  25. package/dist/providers/index.d.ts.map +0 -1
  26. package/dist/providers/index.js +0 -7
  27. package/dist/providers/index.js.map +0 -1
  28. package/dist/providers/ollama.d.ts +0 -42
  29. package/dist/providers/ollama.d.ts.map +0 -1
  30. package/dist/providers/ollama.js +0 -260
  31. package/dist/providers/ollama.js.map +0 -1
  32. package/dist/providers/openai.d.ts +0 -38
  33. package/dist/providers/openai.d.ts.map +0 -1
  34. package/dist/providers/openai.js +0 -322
  35. package/dist/providers/openai.js.map +0 -1
  36. package/dist/types.d.ts +0 -191
  37. package/dist/types.d.ts.map +0 -1
  38. package/dist/types.js +0 -6
  39. package/dist/types.js.map +0 -1
  40. package/src/agent.ts +0 -295
  41. package/src/index.ts +0 -268
  42. package/src/providers/base.ts +0 -216
  43. package/src/providers/index.ts +0 -8
  44. package/src/providers/ollama.ts +0 -429
  45. package/src/providers/openai.ts +0 -521
  46. package/src/types.ts +0 -243
package/dist/index.js DELETED
@@ -1,191 +0,0 @@
1
- /**
2
- * llmjs2 - Enterprise-grade LLM abstraction layer
3
- * Unified API for OpenAI and Ollama
4
- */
5
- import { OpenAIProvider } from './providers/openai.js';
6
- import { OllamaProvider } from './providers/ollama.js';
7
- import { LLMError } from './providers/base.js';
8
- /**
9
- * Global configuration for completion
10
- */
11
- let globalOptions = {};
12
- /**
13
- * Provider cache
14
- */
15
- const providerCache = new Map();
16
- /**
17
- * Configure global settings
18
- */
19
- export function configure(options) {
20
- globalOptions = { ...globalOptions, ...options };
21
- }
22
- /**
23
- * Get provider type from model string
24
- */
25
- function getProviderType(model) {
26
- if (model.startsWith('openai/')) {
27
- return 'openai';
28
- }
29
- if (model.startsWith('ollama/')) {
30
- return 'ollama';
31
- }
32
- // Default to openai if no prefix specified
33
- return 'openai';
34
- }
35
- /**
36
- * Create appropriate provider instance
37
- */
38
- function createProvider(providerType, request) {
39
- const cacheKey = `${providerType}:${request.apiKey || 'default'}:${request.baseUrl || 'default'}`;
40
- // Return cached provider if available
41
- if (providerCache.has(cacheKey)) {
42
- return providerCache.get(cacheKey);
43
- }
44
- let provider;
45
- switch (providerType) {
46
- case 'openai': {
47
- const apiKey = request.apiKey || process.env.OPENAI_API_KEY;
48
- if (!apiKey) {
49
- throw new LLMError('OpenAI API key is required. Pass it as apiKey in the request or set OPENAI_API_KEY environment variable.', 'MISSING_API_KEY');
50
- }
51
- provider = new OpenAIProvider({
52
- type: 'openai',
53
- apiKey: apiKey,
54
- baseUrl: request.baseUrl,
55
- timeout: request.timeout ?? globalOptions.globalTimeout,
56
- retry: request.retry ?? globalOptions.globalRetry,
57
- });
58
- break;
59
- }
60
- case 'ollama': {
61
- provider = new OllamaProvider({
62
- type: 'ollama',
63
- baseUrl: request.baseUrl,
64
- timeout: request.timeout ?? globalOptions.globalTimeout,
65
- retry: request.retry ?? globalOptions.globalRetry,
66
- });
67
- break;
68
- }
69
- default:
70
- throw new LLMError(`Unsupported provider: ${providerType}`, 'UNKNOWN_PROVIDER');
71
- }
72
- // Apply global settings
73
- if (globalOptions.debug) {
74
- provider.setDebug(true);
75
- }
76
- if (globalOptions.logger) {
77
- provider.setLogger(globalOptions.logger);
78
- }
79
- // Cache the provider
80
- providerCache.set(cacheKey, provider);
81
- return provider;
82
- }
83
- /**
84
- * Create a completion request
85
- *
86
- * @example
87
- * import { completion } from 'llmjs2';
88
- *
89
- * const result = await completion({
90
- * model: 'openai/gpt-4',
91
- * apiKey: 'sk-...',
92
- * messages: [
93
- * { role: 'user', content: 'Hello!' }
94
- * ]
95
- * });
96
- *
97
- * console.log(result.content);
98
- */
99
- export async function completion(request) {
100
- if (!request.model) {
101
- throw new LLMError('Model is required', 'MISSING_MODEL');
102
- }
103
- const providerType = getProviderType(request.model);
104
- const provider = createProvider(providerType, request);
105
- try {
106
- return await provider.complete(request);
107
- }
108
- catch (error) {
109
- if (error instanceof LLMError) {
110
- throw error;
111
- }
112
- throw new LLMError(`Completion failed: ${error instanceof Error ? error.message : String(error)}`, 'COMPLETION_FAILED', undefined, error);
113
- }
114
- }
115
- /**
116
- * Stream a completion request
117
- *
118
- * @example
119
- * import { streamCompletion } from 'llmjs2';
120
- *
121
- * const stream = streamCompletion({
122
- * model: 'openai/gpt-4',
123
- * apiKey: 'sk-...',
124
- * messages: [
125
- * { role: 'user', content: 'Write a poem' }
126
- * ]
127
- * });
128
- *
129
- * for await (const chunk of stream) {
130
- * process.stdout.write(chunk.delta);
131
- * }
132
- */
133
- export async function* streamCompletion(request) {
134
- if (!request.model) {
135
- throw new LLMError('Model is required', 'MISSING_MODEL');
136
- }
137
- const providerType = getProviderType(request.model);
138
- const provider = createProvider(providerType, request);
139
- try {
140
- yield* provider.completeStream(request);
141
- }
142
- catch (error) {
143
- if (error instanceof LLMError) {
144
- throw error;
145
- }
146
- throw new LLMError(`Stream failed: ${error instanceof Error ? error.message : String(error)}`, 'STREAM_FAILED', undefined, error);
147
- }
148
- }
149
- /**
150
- * Validate provider connectivity and configuration
151
- */
152
- export async function validateProvider(model, apiKey, baseUrl) {
153
- const providerType = getProviderType(model);
154
- const request = {
155
- model,
156
- apiKey,
157
- baseUrl,
158
- messages: [{ role: 'user', content: 'test' }],
159
- };
160
- const provider = createProvider(providerType, request);
161
- try {
162
- await provider.validate();
163
- }
164
- catch (error) {
165
- if (error instanceof LLMError) {
166
- throw error;
167
- }
168
- throw new LLMError(`Validation failed: ${error instanceof Error ? error.message : String(error)}`, 'VALIDATION_FAILED');
169
- }
170
- }
171
- /**
172
- * Clear provider cache
173
- */
174
- export function clearProviderCache() {
175
- providerCache.clear();
176
- }
177
- /**
178
- * Export error class
179
- */
180
- export { LLMError };
181
- /**
182
- * Export provider classes for advanced use cases
183
- */
184
- export { OpenAIProvider } from './providers/openai.js';
185
- export { OllamaProvider } from './providers/ollama.js';
186
- export { BaseProvider } from './providers/base.js';
187
- /**
188
- * Export Agent for stateful conversations
189
- */
190
- export { Agent } from './agent.js';
191
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,58 +0,0 @@
1
- /**
2
- * Base provider class with common functionality
3
- */
4
- import { IProvider, CompletionRequest, CompletionResponse, CompletionChunk, ProviderConfig, ProviderError } from '../types.js';
5
- /**
6
- * Validation helper for requests
7
- */
8
- export declare function validateCompletionRequest(request: CompletionRequest): void;
9
- /**
10
- * Custom error class for provider errors
11
- */
12
- export declare class LLMError extends Error implements ProviderError {
13
- code?: string;
14
- statusCode?: number;
15
- details?: unknown;
16
- retryable?: boolean;
17
- constructor(message: string, code?: string, statusCode?: number, details?: unknown, retryable?: boolean);
18
- }
19
- /**
20
- * Retry helper with exponential backoff
21
- */
22
- export declare function withRetry<T>(fn: () => Promise<T>, options?: {
23
- maxRetries?: number;
24
- backoffMultiplier?: number;
25
- initialDelayMs?: number;
26
- }): Promise<T>;
27
- /**
28
- * Base provider class
29
- */
30
- export declare abstract class BaseProvider implements IProvider {
31
- protected config: ProviderConfig;
32
- protected debug: boolean;
33
- protected logger: (level: string, message: string, data?: unknown) => void;
34
- constructor(config: ProviderConfig);
35
- setDebug(debug: boolean): void;
36
- setLogger(logger: (level: string, message: string, data?: unknown) => void): void;
37
- abstract complete(request: CompletionRequest): Promise<CompletionResponse>;
38
- abstract completeStream(request: CompletionRequest): AsyncIterable<CompletionChunk>;
39
- abstract validate(): Promise<void>;
40
- abstract parseModel(model: string): string;
41
- /**
42
- * Get the timeout for a request
43
- */
44
- protected getTimeout(request?: CompletionRequest): number;
45
- /**
46
- * Get retry config
47
- */
48
- protected getRetryConfig(request?: CompletionRequest): {
49
- maxRetries: number;
50
- backoffMultiplier: number;
51
- initialDelayMs: number;
52
- };
53
- /**
54
- * Get headers including custom headers
55
- */
56
- protected getHeaders(request?: CompletionRequest): Record<string, string>;
57
- }
58
- //# sourceMappingURL=base.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,aAAa,EACd,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAoD1E;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAM,YAAW,aAAa;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;gBAGlB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,OAAO,EACjB,SAAS,CAAC,EAAE,OAAO;CAStB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACpB,GACL,OAAO,CAAC,CAAC,CAAC,CAiCZ;AAED;;GAEG;AACH,8BAAsB,YAAa,YAAW,SAAS;IACrD,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;IACjC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;gBAE/D,MAAM,EAAE,cAAc;IAUlC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI9B,SAAS,CACP,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,GAC/D,IAAI;IAIP,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAE1E,QAAQ,CAAC,cAAc,CACrB,OAAO,EAAE,iBAAiB,GACzB,aAAa,CAAC,eAAe,CAAC;IAEjC,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAElC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAE1C;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM;IAQzD;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,iBAAiB;;;;;IAcpD;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAM1E"}
@@ -1,149 +0,0 @@
1
- /**
2
- * Base provider class with common functionality
3
- */
4
- /**
5
- * Validation helper for requests
6
- */
7
- export function validateCompletionRequest(request) {
8
- if (!request.model) {
9
- throw new Error('Model is required');
10
- }
11
- if (!Array.isArray(request.messages) || request.messages.length === 0) {
12
- throw new Error('Messages array is required and must not be empty');
13
- }
14
- // Validate message structure
15
- for (const msg of request.messages) {
16
- if (!msg.role || msg.content === undefined || msg.content === null) {
17
- throw new Error('Each message must have role and content');
18
- }
19
- if (!['system', 'user', 'assistant'].includes(msg.role)) {
20
- throw new Error(`Invalid role: ${msg.role}`);
21
- }
22
- if (typeof msg.content !== 'string') {
23
- throw new Error('Message content must be a string');
24
- }
25
- }
26
- // Validate numeric ranges
27
- if (request.temperature !== undefined && request.temperature !== null) {
28
- if (typeof request.temperature !== 'number' || request.temperature < 0 || request.temperature > 2) {
29
- throw new Error('Temperature must be a number between 0 and 2');
30
- }
31
- }
32
- if (request.topP !== undefined && request.topP !== null) {
33
- if (typeof request.topP !== 'number' || request.topP < 0 || request.topP > 1) {
34
- throw new Error('topP must be a number between 0 and 1');
35
- }
36
- }
37
- if (request.maxTokens !== undefined && request.maxTokens !== null) {
38
- if (typeof request.maxTokens !== 'number' || request.maxTokens < 1) {
39
- throw new Error('maxTokens must be a number greater than 0');
40
- }
41
- }
42
- if (request.frequencyPenalty !== undefined && request.frequencyPenalty !== null) {
43
- if (typeof request.frequencyPenalty !== 'number' || request.frequencyPenalty < -2 || request.frequencyPenalty > 2) {
44
- throw new Error('frequencyPenalty must be a number between -2 and 2');
45
- }
46
- }
47
- if (request.presencePenalty !== undefined && request.presencePenalty !== null) {
48
- if (typeof request.presencePenalty !== 'number' || request.presencePenalty < -2 || request.presencePenalty > 2) {
49
- throw new Error('presencePenalty must be a number between -2 and 2');
50
- }
51
- }
52
- }
53
- /**
54
- * Custom error class for provider errors
55
- */
56
- export class LLMError extends Error {
57
- constructor(message, code, statusCode, details, retryable) {
58
- super(message);
59
- this.name = 'LLMError';
60
- this.code = code;
61
- this.statusCode = statusCode;
62
- this.details = details;
63
- this.retryable = retryable ?? false;
64
- }
65
- }
66
- /**
67
- * Retry helper with exponential backoff
68
- */
69
- export async function withRetry(fn, options = {}) {
70
- const maxRetries = options.maxRetries ?? 3;
71
- const backoffMultiplier = options.backoffMultiplier ?? 2;
72
- const initialDelayMs = options.initialDelayMs ?? 1000;
73
- let lastError;
74
- for (let attempt = 0; attempt < maxRetries; attempt++) {
75
- try {
76
- return await fn();
77
- }
78
- catch (error) {
79
- lastError = error;
80
- // Check if error is retryable
81
- const isRetryable = error instanceof LLMError
82
- ? error.retryable
83
- : error instanceof Error &&
84
- (error.message.includes('timeout') ||
85
- error.message.includes('ECONNREFUSED') ||
86
- error.message.includes('ENOTFOUND'));
87
- if (!isRetryable || attempt === maxRetries - 1) {
88
- throw error;
89
- }
90
- // Exponential backoff
91
- const delay = initialDelayMs * Math.pow(backoffMultiplier, attempt);
92
- await new Promise((resolve) => setTimeout(resolve, delay));
93
- }
94
- }
95
- throw lastError || new Error('Retry failed');
96
- }
97
- /**
98
- * Base provider class
99
- */
100
- export class BaseProvider {
101
- constructor(config) {
102
- this.config = config;
103
- this.debug = false;
104
- this.logger = (level, message, data) => {
105
- if (this.debug) {
106
- console.log(`[${level}] ${message}`, data ?? '');
107
- }
108
- };
109
- }
110
- setDebug(debug) {
111
- this.debug = debug;
112
- }
113
- setLogger(logger) {
114
- this.logger = logger;
115
- }
116
- /**
117
- * Get the timeout for a request
118
- */
119
- getTimeout(request) {
120
- return (request?.timeout ??
121
- this.config.timeout ??
122
- 30000 // Default 30 seconds
123
- );
124
- }
125
- /**
126
- * Get retry config
127
- */
128
- getRetryConfig(request) {
129
- return {
130
- maxRetries: request?.retry?.maxRetries ?? this.config.retry?.maxRetries ?? 3,
131
- backoffMultiplier: request?.retry?.backoffMultiplier ??
132
- this.config.retry?.backoffMultiplier ??
133
- 2,
134
- initialDelayMs: request?.retry?.initialDelayMs ??
135
- this.config.retry?.initialDelayMs ??
136
- 1000,
137
- };
138
- }
139
- /**
140
- * Get headers including custom headers
141
- */
142
- getHeaders(request) {
143
- return {
144
- ...(this.config.headers ?? {}),
145
- ...(request?.headers ?? {}),
146
- };
147
- }
148
- }
149
- //# sourceMappingURL=base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Provider exports
3
- */
4
- export { OpenAIProvider } from './openai.js';
5
- export { OllamaProvider } from './ollama.js';
6
- export { BaseProvider } from './base.js';
7
- export type { IProvider } from '../types.js';
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Provider exports
3
- */
4
- export { OpenAIProvider } from './openai.js';
5
- export { OllamaProvider } from './ollama.js';
6
- export { BaseProvider } from './base.js';
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
@@ -1,42 +0,0 @@
1
- /**
2
- * Ollama provider implementation
3
- */
4
- import { CompletionRequest, CompletionResponse, CompletionChunk, ProviderConfig } from '../types.js';
5
- import { BaseProvider } from './base.js';
6
- /**
7
- * Ollama Provider implementation
8
- */
9
- export declare class OllamaProvider extends BaseProvider {
10
- private baseUrl;
11
- private apiKey?;
12
- constructor(config: ProviderConfig);
13
- /**
14
- * Parse model string (e.g., 'ollama/mistral' -> 'mistral')
15
- */
16
- parseModel(model: string): string;
17
- /**
18
- * Validate configuration
19
- */
20
- validate(): Promise<void>;
21
- /**
22
- * Create a completion
23
- */
24
- complete(request: CompletionRequest): Promise<CompletionResponse>;
25
- /**
26
- * Stream completion
27
- */
28
- completeStream(request: CompletionRequest): AsyncIterable<CompletionChunk>;
29
- /**
30
- * Internal stream completion handler
31
- */
32
- private streamCompletion;
33
- /**
34
- * Make HTTP request to Ollama API using fetch
35
- */
36
- private makeRequest;
37
- /**
38
- * Stream HTTP request using fetch
39
- */
40
- private makeStreamRequest;
41
- }
42
- //# sourceMappingURL=ollama.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EAIb,MAAM,WAAW,CAAC;AAsCnB;;GAEG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,EAAE,cAAc;IAsBlC;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAOjC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB/B;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAiDvE;;OAEG;IACI,cAAc,CACnB,OAAO,EAAE,iBAAiB,GACzB,aAAa,CAAC,eAAe,CAAC;IA4BjC;;OAEG;YACY,gBAAgB;IAgB/B;;OAEG;YACW,WAAW;IA6EzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAwH1B"}