ai.matey.backend 0.2.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/LICENSE +21 -0
- package/dist/cjs/index.js +60 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/providers/ai21.js +331 -0
- package/dist/cjs/providers/ai21.js.map +1 -0
- package/dist/cjs/providers/anthropic.js +664 -0
- package/dist/cjs/providers/anthropic.js.map +1 -0
- package/dist/cjs/providers/anyscale.js +338 -0
- package/dist/cjs/providers/anyscale.js.map +1 -0
- package/dist/cjs/providers/aws-bedrock.js +374 -0
- package/dist/cjs/providers/aws-bedrock.js.map +1 -0
- package/dist/cjs/providers/azure-openai.js +406 -0
- package/dist/cjs/providers/azure-openai.js.map +1 -0
- package/dist/cjs/providers/cerebras.js +356 -0
- package/dist/cjs/providers/cerebras.js.map +1 -0
- package/dist/cjs/providers/cloudflare.js +359 -0
- package/dist/cjs/providers/cloudflare.js.map +1 -0
- package/dist/cjs/providers/cohere.js +368 -0
- package/dist/cjs/providers/cohere.js.map +1 -0
- package/dist/cjs/providers/deepinfra.js +343 -0
- package/dist/cjs/providers/deepinfra.js.map +1 -0
- package/dist/cjs/providers/deepseek.js +104 -0
- package/dist/cjs/providers/deepseek.js.map +1 -0
- package/dist/cjs/providers/fireworks.js +363 -0
- package/dist/cjs/providers/fireworks.js.map +1 -0
- package/dist/cjs/providers/gemini.js +292 -0
- package/dist/cjs/providers/gemini.js.map +1 -0
- package/dist/cjs/providers/groq.js +143 -0
- package/dist/cjs/providers/groq.js.map +1 -0
- package/dist/cjs/providers/huggingface.js +392 -0
- package/dist/cjs/providers/huggingface.js.map +1 -0
- package/dist/cjs/providers/lmstudio.js +144 -0
- package/dist/cjs/providers/lmstudio.js.map +1 -0
- package/dist/cjs/providers/mistral.js +288 -0
- package/dist/cjs/providers/mistral.js.map +1 -0
- package/dist/cjs/providers/nvidia.js +167 -0
- package/dist/cjs/providers/nvidia.js.map +1 -0
- package/dist/cjs/providers/ollama.js +257 -0
- package/dist/cjs/providers/ollama.js.map +1 -0
- package/dist/cjs/providers/openai.js +640 -0
- package/dist/cjs/providers/openai.js.map +1 -0
- package/dist/cjs/providers/openrouter.js +379 -0
- package/dist/cjs/providers/openrouter.js.map +1 -0
- package/dist/cjs/providers/perplexity.js +372 -0
- package/dist/cjs/providers/perplexity.js.map +1 -0
- package/dist/cjs/providers/replicate.js +340 -0
- package/dist/cjs/providers/replicate.js.map +1 -0
- package/dist/cjs/providers/together-ai.js +341 -0
- package/dist/cjs/providers/together-ai.js.map +1 -0
- package/dist/cjs/providers/xai.js +339 -0
- package/dist/cjs/providers/xai.js.map +1 -0
- package/dist/cjs/shared.js +279 -0
- package/dist/cjs/shared.js.map +1 -0
- package/dist/esm/index.js +44 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/providers/ai21.js +327 -0
- package/dist/esm/providers/ai21.js.map +1 -0
- package/dist/esm/providers/anthropic.js +660 -0
- package/dist/esm/providers/anthropic.js.map +1 -0
- package/dist/esm/providers/anyscale.js +334 -0
- package/dist/esm/providers/anyscale.js.map +1 -0
- package/dist/esm/providers/aws-bedrock.js +370 -0
- package/dist/esm/providers/aws-bedrock.js.map +1 -0
- package/dist/esm/providers/azure-openai.js +402 -0
- package/dist/esm/providers/azure-openai.js.map +1 -0
- package/dist/esm/providers/cerebras.js +352 -0
- package/dist/esm/providers/cerebras.js.map +1 -0
- package/dist/esm/providers/cloudflare.js +355 -0
- package/dist/esm/providers/cloudflare.js.map +1 -0
- package/dist/esm/providers/cohere.js +364 -0
- package/dist/esm/providers/cohere.js.map +1 -0
- package/dist/esm/providers/deepinfra.js +339 -0
- package/dist/esm/providers/deepinfra.js.map +1 -0
- package/dist/esm/providers/deepseek.js +99 -0
- package/dist/esm/providers/deepseek.js.map +1 -0
- package/dist/esm/providers/fireworks.js +359 -0
- package/dist/esm/providers/fireworks.js.map +1 -0
- package/dist/esm/providers/gemini.js +288 -0
- package/dist/esm/providers/gemini.js.map +1 -0
- package/dist/esm/providers/groq.js +138 -0
- package/dist/esm/providers/groq.js.map +1 -0
- package/dist/esm/providers/huggingface.js +387 -0
- package/dist/esm/providers/huggingface.js.map +1 -0
- package/dist/esm/providers/lmstudio.js +139 -0
- package/dist/esm/providers/lmstudio.js.map +1 -0
- package/dist/esm/providers/mistral.js +284 -0
- package/dist/esm/providers/mistral.js.map +1 -0
- package/dist/esm/providers/nvidia.js +162 -0
- package/dist/esm/providers/nvidia.js.map +1 -0
- package/dist/esm/providers/ollama.js +253 -0
- package/dist/esm/providers/ollama.js.map +1 -0
- package/dist/esm/providers/openai.js +636 -0
- package/dist/esm/providers/openai.js.map +1 -0
- package/dist/esm/providers/openrouter.js +375 -0
- package/dist/esm/providers/openrouter.js.map +1 -0
- package/dist/esm/providers/perplexity.js +368 -0
- package/dist/esm/providers/perplexity.js.map +1 -0
- package/dist/esm/providers/replicate.js +336 -0
- package/dist/esm/providers/replicate.js.map +1 -0
- package/dist/esm/providers/together-ai.js +337 -0
- package/dist/esm/providers/together-ai.js.map +1 -0
- package/dist/esm/providers/xai.js +335 -0
- package/dist/esm/providers/xai.js.map +1 -0
- package/dist/esm/shared.js +272 -0
- package/dist/esm/shared.js.map +1 -0
- package/dist/types/index.d.ts +38 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/providers/ai21.d.ts +106 -0
- package/dist/types/providers/ai21.d.ts.map +1 -0
- package/dist/types/providers/anthropic.d.ts +194 -0
- package/dist/types/providers/anthropic.d.ts.map +1 -0
- package/dist/types/providers/anyscale.d.ts +109 -0
- package/dist/types/providers/anyscale.d.ts.map +1 -0
- package/dist/types/providers/aws-bedrock.d.ts +152 -0
- package/dist/types/providers/aws-bedrock.d.ts.map +1 -0
- package/dist/types/providers/azure-openai.d.ts +142 -0
- package/dist/types/providers/azure-openai.d.ts.map +1 -0
- package/dist/types/providers/cerebras.d.ts +130 -0
- package/dist/types/providers/cerebras.d.ts.map +1 -0
- package/dist/types/providers/cloudflare.d.ts +125 -0
- package/dist/types/providers/cloudflare.d.ts.map +1 -0
- package/dist/types/providers/cohere.d.ts +114 -0
- package/dist/types/providers/cohere.d.ts.map +1 -0
- package/dist/types/providers/deepinfra.d.ts +118 -0
- package/dist/types/providers/deepinfra.d.ts.map +1 -0
- package/dist/types/providers/deepseek.d.ts +68 -0
- package/dist/types/providers/deepseek.d.ts.map +1 -0
- package/dist/types/providers/fireworks.d.ts +127 -0
- package/dist/types/providers/fireworks.d.ts.map +1 -0
- package/dist/types/providers/gemini.d.ts +71 -0
- package/dist/types/providers/gemini.d.ts.map +1 -0
- package/dist/types/providers/groq.d.ts +83 -0
- package/dist/types/providers/groq.d.ts.map +1 -0
- package/dist/types/providers/huggingface.d.ts +154 -0
- package/dist/types/providers/huggingface.d.ts.map +1 -0
- package/dist/types/providers/lmstudio.d.ts +88 -0
- package/dist/types/providers/lmstudio.d.ts.map +1 -0
- package/dist/types/providers/mistral.d.ts +65 -0
- package/dist/types/providers/mistral.d.ts.map +1 -0
- package/dist/types/providers/nvidia.d.ts +100 -0
- package/dist/types/providers/nvidia.d.ts.map +1 -0
- package/dist/types/providers/ollama.d.ts +59 -0
- package/dist/types/providers/ollama.d.ts.map +1 -0
- package/dist/types/providers/openai.d.ts +205 -0
- package/dist/types/providers/openai.d.ts.map +1 -0
- package/dist/types/providers/openrouter.d.ts +135 -0
- package/dist/types/providers/openrouter.d.ts.map +1 -0
- package/dist/types/providers/perplexity.d.ts +116 -0
- package/dist/types/providers/perplexity.d.ts.map +1 -0
- package/dist/types/providers/replicate.d.ts +91 -0
- package/dist/types/providers/replicate.d.ts.map +1 -0
- package/dist/types/providers/together-ai.d.ts +118 -0
- package/dist/types/providers/together-ai.d.ts.map +1 -0
- package/dist/types/providers/xai.d.ts +119 -0
- package/dist/types/providers/xai.d.ts.map +1 -0
- package/dist/types/shared.d.ts +116 -0
- package/dist/types/shared.d.ts.map +1 -0
- package/package.json +327 -0
- package/readme.md +86 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/providers/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Groq Backend Adapter
|
|
3
|
+
*
|
|
4
|
+
* Adapts Universal IR to Groq API (OpenAI-compatible).
|
|
5
|
+
* Groq provides ultra-fast inference with LPU (Language Processing Unit) technology.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { OpenAIBackendAdapter } from './openai.js';
|
|
10
|
+
/**
|
|
11
|
+
* Backend adapter for Groq API.
|
|
12
|
+
*
|
|
13
|
+
* Groq uses an OpenAI-compatible API with ultra-fast inference speeds.
|
|
14
|
+
* Known for extremely low latency responses.
|
|
15
|
+
*
|
|
16
|
+
* @example Basic Usage
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { GroqBackendAdapter } from 'ai.matey';
|
|
19
|
+
*
|
|
20
|
+
* const adapter = new GroqBackendAdapter({
|
|
21
|
+
* apiKey: process.env.GROQ_API_KEY,
|
|
22
|
+
* });
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @example With Fast Models
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const adapter = new GroqBackendAdapter({
|
|
28
|
+
* apiKey: process.env.GROQ_API_KEY,
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* const response = await adapter.execute({
|
|
32
|
+
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
33
|
+
* parameters: {
|
|
34
|
+
* model: 'llama-3.3-70b-versatile', // Fast and capable
|
|
35
|
+
* },
|
|
36
|
+
* });
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* @example Streaming for Ultra-Fast Responses
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const stream = adapter.executeStream({
|
|
42
|
+
* messages: [{ role: 'user', content: 'Tell me a story' }],
|
|
43
|
+
* parameters: {
|
|
44
|
+
* model: 'llama-3.1-8b-instant', // Optimized for speed
|
|
45
|
+
* },
|
|
46
|
+
* });
|
|
47
|
+
*
|
|
48
|
+
* for await (const chunk of stream) {
|
|
49
|
+
* if (chunk.type === 'content') {
|
|
50
|
+
* console.log(chunk.delta);
|
|
51
|
+
* }
|
|
52
|
+
* }
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export class GroqBackendAdapter extends OpenAIBackendAdapter {
|
|
56
|
+
constructor(config) {
|
|
57
|
+
// Groq API endpoint
|
|
58
|
+
const groqConfig = {
|
|
59
|
+
...config,
|
|
60
|
+
baseURL: config.baseURL || 'https://api.groq.com/openai/v1',
|
|
61
|
+
};
|
|
62
|
+
// Pass Groq-specific metadata to parent constructor
|
|
63
|
+
super(groqConfig, {
|
|
64
|
+
name: 'groq-backend',
|
|
65
|
+
version: '1.0.0',
|
|
66
|
+
provider: 'Groq',
|
|
67
|
+
capabilities: {
|
|
68
|
+
streaming: true,
|
|
69
|
+
multiModal: false, // Groq currently focuses on text
|
|
70
|
+
tools: true,
|
|
71
|
+
maxContextTokens: 128000, // Varies by model, some support 128K
|
|
72
|
+
systemMessageStrategy: 'in-messages',
|
|
73
|
+
supportsMultipleSystemMessages: false,
|
|
74
|
+
supportsTemperature: true,
|
|
75
|
+
supportsTopP: true,
|
|
76
|
+
supportsTopK: false,
|
|
77
|
+
supportsSeed: true,
|
|
78
|
+
supportsFrequencyPenalty: true,
|
|
79
|
+
supportsPresencePenalty: true,
|
|
80
|
+
maxStopSequences: 4,
|
|
81
|
+
},
|
|
82
|
+
config: {
|
|
83
|
+
baseURL: groqConfig.baseURL,
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Health check for Groq API.
|
|
89
|
+
*/
|
|
90
|
+
async healthCheck() {
|
|
91
|
+
try {
|
|
92
|
+
const response = await fetch(`${this.baseURL}/models`, {
|
|
93
|
+
method: 'GET',
|
|
94
|
+
headers: {
|
|
95
|
+
'Content-Type': 'application/json',
|
|
96
|
+
Authorization: `Bearer ${this.config.apiKey}`,
|
|
97
|
+
...this.config.headers,
|
|
98
|
+
},
|
|
99
|
+
signal: AbortSignal.timeout(5000),
|
|
100
|
+
});
|
|
101
|
+
return response.ok;
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Estimate cost for Groq (very low cost, optimized for speed).
|
|
109
|
+
*/
|
|
110
|
+
async estimateCost(request) {
|
|
111
|
+
// Groq pricing: ~$0.05 per 1M input tokens, ~$0.10 per 1M output tokens
|
|
112
|
+
// (Extremely competitive pricing)
|
|
113
|
+
const estimatedInputTokens = (await super.estimateCost(request)) || 0;
|
|
114
|
+
const estimatedOutputTokens = Math.min(request.parameters?.maxTokens || 1000, 4000);
|
|
115
|
+
const inputCost = (estimatedInputTokens * 1000 * 0.05) / 1_000_000;
|
|
116
|
+
const outputCost = (estimatedOutputTokens / 1_000_000) * 0.1;
|
|
117
|
+
return inputCost + outputCost;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Create a Groq backend adapter.
|
|
122
|
+
*
|
|
123
|
+
* @param config - Adapter configuration
|
|
124
|
+
* @returns Groq backend adapter
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```typescript
|
|
128
|
+
* import { createGroqAdapter } from 'ai.matey';
|
|
129
|
+
*
|
|
130
|
+
* const adapter = createGroqAdapter({
|
|
131
|
+
* apiKey: process.env.GROQ_API_KEY,
|
|
132
|
+
* });
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
export function createGroqAdapter(config) {
|
|
136
|
+
return new GroqBackendAdapter(config);
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=groq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groq.js","sourceRoot":"","sources":["../../../src/providers/groq.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,oBAAoB,EAA2C,MAAM,aAAa,CAAC;AAG5F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,OAAO,kBACX,SAAQ,oBAAoB;IAG5B,YAAY,MAA4B;QACtC,oBAAoB;QACpB,MAAM,UAAU,GAAyB;YACvC,GAAG,MAAM;YACT,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,gCAAgC;SAC5D,CAAC;QAEF,oDAAoD;QACpD,KAAK,CAAC,UAAU,EAAE;YAChB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,MAAM;YAChB,YAAY,EAAE;gBACZ,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,KAAK,EAAE,iCAAiC;gBACpD,KAAK,EAAE,IAAI;gBACX,gBAAgB,EAAE,MAAM,EAAE,qCAAqC;gBAC/D,qBAAqB,EAAE,aAAa;gBACpC,8BAA8B,EAAE,KAAK;gBACrC,mBAAmB,EAAE,IAAI;gBACzB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,KAAK;gBACnB,YAAY,EAAE,IAAI;gBAClB,wBAAwB,EAAE,IAAI;gBAC9B,uBAAuB,EAAE,IAAI;gBAC7B,gBAAgB,EAAE,CAAC;aACpB;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,UAAU,CAAC,OAAO;aAC5B;SACF,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,SAAS,EAAE;gBACrD,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;oBAC7C,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;iBACvB;gBACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,EAAE,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,OAAsB;QACvC,wEAAwE;QACxE,kCAAkC;QAClC,MAAM,oBAAoB,GAAG,CAAC,MAAM,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC;QAEpF,MAAM,SAAS,GAAG,CAAC,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;QACnE,MAAM,UAAU,GAAG,CAAC,qBAAqB,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC;QAE7D,OAAO,SAAS,GAAG,UAAU,CAAC;IAChC,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA4B;IAC5D,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hugging Face Backend Adapter
|
|
3
|
+
*
|
|
4
|
+
* Adapts Universal IR to Hugging Face Inference API.
|
|
5
|
+
* Access thousands of models through Hugging Face's unified API.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { AdapterConversionError, NetworkError, ProviderError, ErrorCode, createErrorFromHttpResponse, } from 'ai.matey.errors';
|
|
10
|
+
/**
|
|
11
|
+
* Backend adapter for Hugging Face Inference API.
|
|
12
|
+
*
|
|
13
|
+
* Supports text generation models from Hugging Face Hub.
|
|
14
|
+
*
|
|
15
|
+
* @example Basic Usage
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { HuggingFaceBackendAdapter } from 'ai.matey';
|
|
18
|
+
*
|
|
19
|
+
* const adapter = new HuggingFaceBackendAdapter({
|
|
20
|
+
* apiKey: process.env.HUGGINGFACE_API_KEY,
|
|
21
|
+
* });
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @example With Specific Model
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const adapter = new HuggingFaceBackendAdapter({
|
|
27
|
+
* apiKey: process.env.HUGGINGFACE_API_KEY,
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* const response = await adapter.execute({
|
|
31
|
+
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
32
|
+
* parameters: {
|
|
33
|
+
* model: 'mistralai/Mixtral-8x7B-Instruct-v0.1',
|
|
34
|
+
* },
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @example With Inference Endpoints
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const adapter = new HuggingFaceBackendAdapter({
|
|
41
|
+
* apiKey: process.env.HUGGINGFACE_API_KEY,
|
|
42
|
+
* baseURL: 'https://your-endpoint.aws.endpoints.huggingface.cloud',
|
|
43
|
+
* });
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export class HuggingFaceBackendAdapter {
|
|
47
|
+
metadata;
|
|
48
|
+
config;
|
|
49
|
+
baseURL;
|
|
50
|
+
constructor(config) {
|
|
51
|
+
this.config = config;
|
|
52
|
+
this.baseURL = config.baseURL || 'https://api-inference.huggingface.co';
|
|
53
|
+
this.metadata = {
|
|
54
|
+
name: 'huggingface-backend',
|
|
55
|
+
version: '1.0.0',
|
|
56
|
+
provider: 'Hugging Face',
|
|
57
|
+
capabilities: {
|
|
58
|
+
streaming: false, // Hugging Face Inference API doesn't support streaming in the same way
|
|
59
|
+
multiModal: false, // Text-only for standard inference
|
|
60
|
+
tools: false,
|
|
61
|
+
maxContextTokens: 4096, // Varies by model
|
|
62
|
+
systemMessageStrategy: 'in-messages',
|
|
63
|
+
supportsMultipleSystemMessages: false,
|
|
64
|
+
supportsTemperature: true,
|
|
65
|
+
supportsTopP: true,
|
|
66
|
+
supportsTopK: true,
|
|
67
|
+
supportsSeed: false,
|
|
68
|
+
supportsFrequencyPenalty: false,
|
|
69
|
+
supportsPresencePenalty: false,
|
|
70
|
+
maxStopSequences: 0,
|
|
71
|
+
},
|
|
72
|
+
config: {
|
|
73
|
+
baseURL: this.baseURL,
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Execute non-streaming chat completion request.
|
|
79
|
+
*/
|
|
80
|
+
async execute(request, signal) {
|
|
81
|
+
try {
|
|
82
|
+
// Convert IR to Hugging Face format
|
|
83
|
+
const hfRequest = this.fromIR(request);
|
|
84
|
+
// Make HTTP request
|
|
85
|
+
const startTime = Date.now();
|
|
86
|
+
const response = await this.makeRequest(request.parameters?.model || '', hfRequest, signal);
|
|
87
|
+
// Convert response to IR
|
|
88
|
+
const irResponse = this.toIR(response, request, Date.now() - startTime);
|
|
89
|
+
return irResponse;
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
// Re-throw adapter errors
|
|
93
|
+
if (error instanceof AdapterConversionError ||
|
|
94
|
+
error instanceof NetworkError ||
|
|
95
|
+
error instanceof ProviderError) {
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
// Wrap unknown errors
|
|
99
|
+
throw new ProviderError({
|
|
100
|
+
code: ErrorCode.PROVIDER_ERROR,
|
|
101
|
+
message: `Hugging Face request failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
102
|
+
isRetryable: true,
|
|
103
|
+
provenance: {
|
|
104
|
+
backend: this.metadata.name,
|
|
105
|
+
},
|
|
106
|
+
cause: error instanceof Error ? error : undefined,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Execute streaming chat completion request.
|
|
112
|
+
*/
|
|
113
|
+
async *executeStream(request, _signal) {
|
|
114
|
+
// Hugging Face Inference API doesn't support streaming in the standard way
|
|
115
|
+
// We'll simulate it by making a regular request and yielding chunks
|
|
116
|
+
yield {
|
|
117
|
+
type: 'start',
|
|
118
|
+
sequence: 0,
|
|
119
|
+
metadata: request.metadata,
|
|
120
|
+
};
|
|
121
|
+
try {
|
|
122
|
+
const response = await this.execute(request, _signal);
|
|
123
|
+
// Yield content as single chunk
|
|
124
|
+
const content = typeof response.message.content === 'string'
|
|
125
|
+
? response.message.content
|
|
126
|
+
: response.message.content
|
|
127
|
+
.filter((c) => c.type === 'text')
|
|
128
|
+
.map((c) => c.text)
|
|
129
|
+
.join('');
|
|
130
|
+
yield {
|
|
131
|
+
type: 'content',
|
|
132
|
+
sequence: 1,
|
|
133
|
+
delta: content,
|
|
134
|
+
role: 'assistant',
|
|
135
|
+
};
|
|
136
|
+
yield {
|
|
137
|
+
type: 'done',
|
|
138
|
+
sequence: 2,
|
|
139
|
+
finishReason: response.finishReason,
|
|
140
|
+
usage: response.usage,
|
|
141
|
+
message: response.message,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
yield {
|
|
146
|
+
type: 'error',
|
|
147
|
+
sequence: 0,
|
|
148
|
+
error: {
|
|
149
|
+
code: error instanceof Error ? error.name : 'UNKNOWN_ERROR',
|
|
150
|
+
message: error instanceof Error ? error.message : String(error),
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Health check for Hugging Face API.
|
|
157
|
+
*/
|
|
158
|
+
async healthCheck() {
|
|
159
|
+
try {
|
|
160
|
+
// Simple test request
|
|
161
|
+
const response = await fetch(this.baseURL, {
|
|
162
|
+
method: 'GET',
|
|
163
|
+
headers: this.getHeaders(),
|
|
164
|
+
signal: AbortSignal.timeout(5000),
|
|
165
|
+
});
|
|
166
|
+
// HF returns various status codes, 200 or 404 are both "healthy"
|
|
167
|
+
return response.status === 200 || response.status === 404;
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Estimate cost for Hugging Face.
|
|
175
|
+
*/
|
|
176
|
+
estimateCost(request) {
|
|
177
|
+
// Hugging Face Inference API is free for public models (with rate limits)
|
|
178
|
+
// Inference Endpoints are charged separately
|
|
179
|
+
const estimatedTokens = this.estimateTokens(request);
|
|
180
|
+
// If using a private Inference Endpoint, estimate ~$0.06 per 1000 tokens
|
|
181
|
+
if (this.baseURL !== 'https://api-inference.huggingface.co') {
|
|
182
|
+
return Promise.resolve((estimatedTokens / 1000) * 0.06);
|
|
183
|
+
}
|
|
184
|
+
// Free tier
|
|
185
|
+
return Promise.resolve(0);
|
|
186
|
+
}
|
|
187
|
+
// ==========================================================================
|
|
188
|
+
// Private Helper Methods
|
|
189
|
+
// ==========================================================================
|
|
190
|
+
/**
|
|
191
|
+
* Convert IR request to Hugging Face format.
|
|
192
|
+
*
|
|
193
|
+
* Public method for testing and debugging - see what will be sent to Hugging Face.
|
|
194
|
+
*/
|
|
195
|
+
fromIR(request) {
|
|
196
|
+
try {
|
|
197
|
+
// Convert messages to prompt text
|
|
198
|
+
const prompt = this.messagesToPrompt(request.messages);
|
|
199
|
+
return {
|
|
200
|
+
inputs: prompt,
|
|
201
|
+
parameters: {
|
|
202
|
+
temperature: request.parameters?.temperature,
|
|
203
|
+
max_new_tokens: request.parameters?.maxTokens,
|
|
204
|
+
top_p: request.parameters?.topP,
|
|
205
|
+
top_k: request.parameters?.topK,
|
|
206
|
+
repetition_penalty: request.parameters?.frequencyPenalty
|
|
207
|
+
? 1 + request.parameters.frequencyPenalty
|
|
208
|
+
: undefined,
|
|
209
|
+
do_sample: request.parameters?.temperature !== undefined && request.parameters.temperature > 0,
|
|
210
|
+
return_full_text: false,
|
|
211
|
+
},
|
|
212
|
+
options: {
|
|
213
|
+
wait_for_model: true,
|
|
214
|
+
use_cache: true,
|
|
215
|
+
},
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
throw new AdapterConversionError({
|
|
220
|
+
code: ErrorCode.ADAPTER_CONVERSION_ERROR,
|
|
221
|
+
message: `Failed to convert IR to Hugging Face format: ${error instanceof Error ? error.message : String(error)}`,
|
|
222
|
+
provenance: {
|
|
223
|
+
backend: this.metadata.name,
|
|
224
|
+
},
|
|
225
|
+
cause: error instanceof Error ? error : undefined,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Convert Hugging Face response to IR format.
|
|
231
|
+
*
|
|
232
|
+
* Public method for testing and debugging - parse Hugging Face responses manually.
|
|
233
|
+
*/
|
|
234
|
+
toIR(response, originalRequest, latencyMs) {
|
|
235
|
+
try {
|
|
236
|
+
// Handle array response
|
|
237
|
+
const hfResponse = Array.isArray(response) ? response[0] : response;
|
|
238
|
+
if (!hfResponse || hfResponse.error) {
|
|
239
|
+
throw new Error(hfResponse?.error || 'Empty response from Hugging Face');
|
|
240
|
+
}
|
|
241
|
+
const text = hfResponse.generated_text || '';
|
|
242
|
+
const message = {
|
|
243
|
+
role: 'assistant',
|
|
244
|
+
content: text,
|
|
245
|
+
};
|
|
246
|
+
return {
|
|
247
|
+
message,
|
|
248
|
+
finishReason: 'stop',
|
|
249
|
+
usage: {
|
|
250
|
+
promptTokens: this.estimateTokens(originalRequest),
|
|
251
|
+
completionTokens: Math.ceil(text.length / 4),
|
|
252
|
+
totalTokens: this.estimateTokens(originalRequest) + Math.ceil(text.length / 4),
|
|
253
|
+
},
|
|
254
|
+
metadata: {
|
|
255
|
+
...originalRequest.metadata,
|
|
256
|
+
provenance: {
|
|
257
|
+
...originalRequest.metadata.provenance,
|
|
258
|
+
backend: this.metadata.name,
|
|
259
|
+
},
|
|
260
|
+
custom: {
|
|
261
|
+
...originalRequest.metadata.custom,
|
|
262
|
+
latencyMs,
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
throw new AdapterConversionError({
|
|
269
|
+
code: ErrorCode.ADAPTER_CONVERSION_ERROR,
|
|
270
|
+
message: `Failed to convert Hugging Face response to IR: ${error instanceof Error ? error.message : String(error)}`,
|
|
271
|
+
provenance: {
|
|
272
|
+
backend: this.metadata.name,
|
|
273
|
+
},
|
|
274
|
+
cause: error instanceof Error ? error : undefined,
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Convert messages to prompt text.
|
|
280
|
+
*/
|
|
281
|
+
messagesToPrompt(messages) {
|
|
282
|
+
const parts = [];
|
|
283
|
+
for (const message of messages) {
|
|
284
|
+
const text = typeof message.content === 'string'
|
|
285
|
+
? message.content
|
|
286
|
+
: message.content
|
|
287
|
+
.filter((c) => c.type === 'text')
|
|
288
|
+
.map((c) => c.text)
|
|
289
|
+
.join('\n');
|
|
290
|
+
if (message.role === 'system') {
|
|
291
|
+
parts.push(`System: ${text}`);
|
|
292
|
+
}
|
|
293
|
+
else if (message.role === 'user') {
|
|
294
|
+
parts.push(`User: ${text}`);
|
|
295
|
+
}
|
|
296
|
+
else if (message.role === 'assistant') {
|
|
297
|
+
parts.push(`Assistant: ${text}`);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
// Add final assistant prompt
|
|
301
|
+
parts.push('Assistant:');
|
|
302
|
+
return parts.join('\n\n');
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Make HTTP request to Hugging Face API.
|
|
306
|
+
*/
|
|
307
|
+
async makeRequest(model, request, signal) {
|
|
308
|
+
try {
|
|
309
|
+
const url = model ? `${this.baseURL}/models/${model}` : this.baseURL;
|
|
310
|
+
const response = await fetch(url, {
|
|
311
|
+
method: 'POST',
|
|
312
|
+
headers: this.getHeaders(),
|
|
313
|
+
body: JSON.stringify(request),
|
|
314
|
+
signal,
|
|
315
|
+
});
|
|
316
|
+
if (!response.ok) {
|
|
317
|
+
const errorBody = await response.text();
|
|
318
|
+
throw createErrorFromHttpResponse(response.status, response.statusText, errorBody, {
|
|
319
|
+
backend: this.metadata.name,
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
const data = (await response.json());
|
|
323
|
+
return data;
|
|
324
|
+
}
|
|
325
|
+
catch (error) {
|
|
326
|
+
if (error instanceof TypeError && error.message.includes('fetch')) {
|
|
327
|
+
throw new NetworkError({
|
|
328
|
+
code: ErrorCode.NETWORK_ERROR,
|
|
329
|
+
message: `Network request failed: ${error.message}`,
|
|
330
|
+
provenance: {
|
|
331
|
+
backend: this.metadata.name,
|
|
332
|
+
},
|
|
333
|
+
cause: error,
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
throw error;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Get HTTP headers for Hugging Face API requests.
|
|
341
|
+
*/
|
|
342
|
+
getHeaders() {
|
|
343
|
+
return {
|
|
344
|
+
'Content-Type': 'application/json',
|
|
345
|
+
Authorization: `Bearer ${this.config.apiKey}`,
|
|
346
|
+
...this.config.headers,
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Estimate token count for a request.
|
|
351
|
+
*/
|
|
352
|
+
estimateTokens(request) {
|
|
353
|
+
let totalChars = 0;
|
|
354
|
+
for (const message of request.messages) {
|
|
355
|
+
if (typeof message.content === 'string') {
|
|
356
|
+
totalChars += message.content.length;
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
for (const block of message.content) {
|
|
360
|
+
if (block.type === 'text') {
|
|
361
|
+
totalChars += block.text.length;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
return Math.ceil(totalChars / 4);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Create a Hugging Face backend adapter.
|
|
371
|
+
*
|
|
372
|
+
* @param config - Adapter configuration
|
|
373
|
+
* @returns Hugging Face backend adapter
|
|
374
|
+
*
|
|
375
|
+
* @example
|
|
376
|
+
* ```typescript
|
|
377
|
+
* import { createHuggingFaceAdapter } from 'ai.matey';
|
|
378
|
+
*
|
|
379
|
+
* const adapter = createHuggingFaceAdapter({
|
|
380
|
+
* apiKey: process.env.HUGGINGFACE_API_KEY,
|
|
381
|
+
* });
|
|
382
|
+
* ```
|
|
383
|
+
*/
|
|
384
|
+
export function createHuggingFaceAdapter(config) {
|
|
385
|
+
return new HuggingFaceBackendAdapter(config);
|
|
386
|
+
}
|
|
387
|
+
//# sourceMappingURL=huggingface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"huggingface.js","sourceRoot":"","sources":["../../../src/providers/huggingface.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,2BAA2B,GAC5B,MAAM,iBAAiB,CAAC;AAgDzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,OAAO,yBAAyB;IAI3B,QAAQ,CAAkB;IAClB,MAAM,CAAuB;IAC7B,OAAO,CAAS;IAEjC,YAAY,MAA4B;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,sCAAsC,CAAC;QAExE,IAAI,CAAC,QAAQ,GAAG;YACd,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,cAAc;YACxB,YAAY,EAAE;gBACZ,SAAS,EAAE,KAAK,EAAE,uEAAuE;gBACzF,UAAU,EAAE,KAAK,EAAE,mCAAmC;gBACtD,KAAK,EAAE,KAAK;gBACZ,gBAAgB,EAAE,IAAI,EAAE,kBAAkB;gBAC1C,qBAAqB,EAAE,aAAa;gBACpC,8BAA8B,EAAE,KAAK;gBACrC,mBAAmB,EAAE,IAAI;gBACzB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,KAAK;gBACnB,wBAAwB,EAAE,KAAK;gBAC/B,uBAAuB,EAAE,KAAK;gBAC9B,gBAAgB,EAAE,CAAC;aACpB;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,OAAsB,EAAE,MAAoB;QACxD,IAAI,CAAC;YACH,oCAAoC;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAEvC,oBAAoB;YACpB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAE5F,yBAAyB;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;YAExE,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0BAA0B;YAC1B,IACE,KAAK,YAAY,sBAAsB;gBACvC,KAAK,YAAY,YAAY;gBAC7B,KAAK,YAAY,aAAa,EAC9B,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;YAED,sBAAsB;YACtB,MAAM,IAAI,aAAa,CAAC;gBACtB,IAAI,EAAE,SAAS,CAAC,cAAc;gBAC9B,OAAO,EAAE,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACjG,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE;oBACV,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;iBAC5B;gBACD,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aAClD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAC,aAAa,CAAC,OAAsB,EAAE,OAAqB;QAChE,2EAA2E;QAC3E,oEAAoE;QAEpE,MAAM;YACJ,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,OAAO,CAAC,QAAQ;SACV,CAAC;QAEnB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAEtD,gCAAgC;YAChC,MAAM,OAAO,GACX,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ;gBAC1C,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO;gBAC1B,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO;qBACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;qBAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAsB,CAAC,IAAI,CAAC;qBACxC,IAAI,CAAC,EAAE,CAAC,CAAC;YAElB,MAAM;gBACJ,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,CAAC;gBACX,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,WAAW;aACD,CAAC;YAEnB,MAAM;gBACJ,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,CAAC;gBACX,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;aACT,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM;gBACJ,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,CAAC;gBACX,KAAK,EAAE;oBACL,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe;oBAC3D,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAChE;aACe,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,sBAAsB;YACtB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE;gBACzC,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;YACH,iEAAiE;YACjE,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,OAAsB;QACjC,0EAA0E;QAC1E,6CAA6C;QAC7C,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAErD,yEAAyE;QACzE,IAAI,IAAI,CAAC,OAAO,KAAK,sCAAsC,EAAE,CAAC;YAC5D,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC1D,CAAC;QAED,YAAY;QACZ,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,6EAA6E;IAC7E,yBAAyB;IACzB,6EAA6E;IAE7E;;;;OAIG;IACI,MAAM,CAAC,OAAsB;QAClC,IAAI,CAAC;YACH,kCAAkC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEvD,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE;oBACV,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW;oBAC5C,cAAc,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS;oBAC7C,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI;oBAC/B,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI;oBAC/B,kBAAkB,EAAE,OAAO,CAAC,UAAU,EAAE,gBAAgB;wBACtD,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,gBAAgB;wBACzC,CAAC,CAAC,SAAS;oBACb,SAAS,EACP,OAAO,CAAC,UAAU,EAAE,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,GAAG,CAAC;oBACrF,gBAAgB,EAAE,KAAK;iBACxB;gBACD,OAAO,EAAE;oBACP,cAAc,EAAE,IAAI;oBACpB,SAAS,EAAE,IAAI;iBAChB;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,sBAAsB,CAAC;gBAC/B,IAAI,EAAE,SAAS,CAAC,wBAAwB;gBACxC,OAAO,EAAE,gDAAgD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACjH,UAAU,EAAE;oBACV,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;iBAC5B;gBACD,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aAClD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,IAAI,CACT,QAAqD,EACrD,eAA8B,EAC9B,SAAiB;QAEjB,IAAI,CAAC;YACH,wBAAwB;YACxB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAEpE,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE,KAAK,IAAI,kCAAkC,CAAC,CAAC;YAC3E,CAAC;YAED,MAAM,IAAI,GAAG,UAAU,CAAC,cAAc,IAAI,EAAE,CAAC;YAE7C,MAAM,OAAO,GAAc;gBACzB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,IAAI;aACd,CAAC;YAEF,OAAO;gBACL,OAAO;gBACP,YAAY,EAAE,MAAM;gBACpB,KAAK,EAAE;oBACL,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;oBAClD,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;oBAC5C,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;iBAC/E;gBACD,QAAQ,EAAE;oBACR,GAAG,eAAe,CAAC,QAAQ;oBAC3B,UAAU,EAAE;wBACV,GAAG,eAAe,CAAC,QAAQ,CAAC,UAAU;wBACtC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;qBAC5B;oBACD,MAAM,EAAE;wBACN,GAAG,eAAe,CAAC,QAAQ,CAAC,MAAM;wBAClC,SAAS;qBACV;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,sBAAsB,CAAC;gBAC/B,IAAI,EAAE,SAAS,CAAC,wBAAwB;gBACxC,OAAO,EAAE,kDAAkD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACnH,UAAU,EAAE;oBACV,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;iBAC5B;gBACD,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aAClD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,QAA6B;QACpD,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,GACR,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;gBACjC,CAAC,CAAC,OAAO,CAAC,OAAO;gBACjB,CAAC,CAAC,OAAO,CAAC,OAAO;qBACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;qBAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAsB,CAAC,IAAI,CAAC;qBACxC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEpB,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC9B,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YAChC,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACnC,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YAC9B,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACxC,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEzB,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CACvB,KAAa,EACb,OAA2B,EAC3B,MAAoB;QAEpB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YAErE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAC7B,MAAM;aACP,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,2BAA2B,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE;oBACjF,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;iBAC5B,CAAC,CAAC;YACL,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAgD,CAAC;YACpF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClE,MAAM,IAAI,YAAY,CAAC;oBACrB,IAAI,EAAE,SAAS,CAAC,aAAa;oBAC7B,OAAO,EAAE,2BAA2B,KAAK,CAAC,OAAO,EAAE;oBACnD,UAAU,EAAE;wBACV,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;qBAC5B;oBACD,KAAK,EAAE,KAAK;iBACb,CAAC,CAAC;YACL,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,UAAU;QAChB,OAAO;YACL,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAC7C,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,OAAsB;QAC3C,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACvC,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACxC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC1B,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAA4B;IACnE,OAAO,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC"}
|