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.
Files changed (159) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/index.js +60 -0
  3. package/dist/cjs/index.js.map +1 -0
  4. package/dist/cjs/providers/ai21.js +331 -0
  5. package/dist/cjs/providers/ai21.js.map +1 -0
  6. package/dist/cjs/providers/anthropic.js +664 -0
  7. package/dist/cjs/providers/anthropic.js.map +1 -0
  8. package/dist/cjs/providers/anyscale.js +338 -0
  9. package/dist/cjs/providers/anyscale.js.map +1 -0
  10. package/dist/cjs/providers/aws-bedrock.js +374 -0
  11. package/dist/cjs/providers/aws-bedrock.js.map +1 -0
  12. package/dist/cjs/providers/azure-openai.js +406 -0
  13. package/dist/cjs/providers/azure-openai.js.map +1 -0
  14. package/dist/cjs/providers/cerebras.js +356 -0
  15. package/dist/cjs/providers/cerebras.js.map +1 -0
  16. package/dist/cjs/providers/cloudflare.js +359 -0
  17. package/dist/cjs/providers/cloudflare.js.map +1 -0
  18. package/dist/cjs/providers/cohere.js +368 -0
  19. package/dist/cjs/providers/cohere.js.map +1 -0
  20. package/dist/cjs/providers/deepinfra.js +343 -0
  21. package/dist/cjs/providers/deepinfra.js.map +1 -0
  22. package/dist/cjs/providers/deepseek.js +104 -0
  23. package/dist/cjs/providers/deepseek.js.map +1 -0
  24. package/dist/cjs/providers/fireworks.js +363 -0
  25. package/dist/cjs/providers/fireworks.js.map +1 -0
  26. package/dist/cjs/providers/gemini.js +292 -0
  27. package/dist/cjs/providers/gemini.js.map +1 -0
  28. package/dist/cjs/providers/groq.js +143 -0
  29. package/dist/cjs/providers/groq.js.map +1 -0
  30. package/dist/cjs/providers/huggingface.js +392 -0
  31. package/dist/cjs/providers/huggingface.js.map +1 -0
  32. package/dist/cjs/providers/lmstudio.js +144 -0
  33. package/dist/cjs/providers/lmstudio.js.map +1 -0
  34. package/dist/cjs/providers/mistral.js +288 -0
  35. package/dist/cjs/providers/mistral.js.map +1 -0
  36. package/dist/cjs/providers/nvidia.js +167 -0
  37. package/dist/cjs/providers/nvidia.js.map +1 -0
  38. package/dist/cjs/providers/ollama.js +257 -0
  39. package/dist/cjs/providers/ollama.js.map +1 -0
  40. package/dist/cjs/providers/openai.js +640 -0
  41. package/dist/cjs/providers/openai.js.map +1 -0
  42. package/dist/cjs/providers/openrouter.js +379 -0
  43. package/dist/cjs/providers/openrouter.js.map +1 -0
  44. package/dist/cjs/providers/perplexity.js +372 -0
  45. package/dist/cjs/providers/perplexity.js.map +1 -0
  46. package/dist/cjs/providers/replicate.js +340 -0
  47. package/dist/cjs/providers/replicate.js.map +1 -0
  48. package/dist/cjs/providers/together-ai.js +341 -0
  49. package/dist/cjs/providers/together-ai.js.map +1 -0
  50. package/dist/cjs/providers/xai.js +339 -0
  51. package/dist/cjs/providers/xai.js.map +1 -0
  52. package/dist/cjs/shared.js +279 -0
  53. package/dist/cjs/shared.js.map +1 -0
  54. package/dist/esm/index.js +44 -0
  55. package/dist/esm/index.js.map +1 -0
  56. package/dist/esm/providers/ai21.js +327 -0
  57. package/dist/esm/providers/ai21.js.map +1 -0
  58. package/dist/esm/providers/anthropic.js +660 -0
  59. package/dist/esm/providers/anthropic.js.map +1 -0
  60. package/dist/esm/providers/anyscale.js +334 -0
  61. package/dist/esm/providers/anyscale.js.map +1 -0
  62. package/dist/esm/providers/aws-bedrock.js +370 -0
  63. package/dist/esm/providers/aws-bedrock.js.map +1 -0
  64. package/dist/esm/providers/azure-openai.js +402 -0
  65. package/dist/esm/providers/azure-openai.js.map +1 -0
  66. package/dist/esm/providers/cerebras.js +352 -0
  67. package/dist/esm/providers/cerebras.js.map +1 -0
  68. package/dist/esm/providers/cloudflare.js +355 -0
  69. package/dist/esm/providers/cloudflare.js.map +1 -0
  70. package/dist/esm/providers/cohere.js +364 -0
  71. package/dist/esm/providers/cohere.js.map +1 -0
  72. package/dist/esm/providers/deepinfra.js +339 -0
  73. package/dist/esm/providers/deepinfra.js.map +1 -0
  74. package/dist/esm/providers/deepseek.js +99 -0
  75. package/dist/esm/providers/deepseek.js.map +1 -0
  76. package/dist/esm/providers/fireworks.js +359 -0
  77. package/dist/esm/providers/fireworks.js.map +1 -0
  78. package/dist/esm/providers/gemini.js +288 -0
  79. package/dist/esm/providers/gemini.js.map +1 -0
  80. package/dist/esm/providers/groq.js +138 -0
  81. package/dist/esm/providers/groq.js.map +1 -0
  82. package/dist/esm/providers/huggingface.js +387 -0
  83. package/dist/esm/providers/huggingface.js.map +1 -0
  84. package/dist/esm/providers/lmstudio.js +139 -0
  85. package/dist/esm/providers/lmstudio.js.map +1 -0
  86. package/dist/esm/providers/mistral.js +284 -0
  87. package/dist/esm/providers/mistral.js.map +1 -0
  88. package/dist/esm/providers/nvidia.js +162 -0
  89. package/dist/esm/providers/nvidia.js.map +1 -0
  90. package/dist/esm/providers/ollama.js +253 -0
  91. package/dist/esm/providers/ollama.js.map +1 -0
  92. package/dist/esm/providers/openai.js +636 -0
  93. package/dist/esm/providers/openai.js.map +1 -0
  94. package/dist/esm/providers/openrouter.js +375 -0
  95. package/dist/esm/providers/openrouter.js.map +1 -0
  96. package/dist/esm/providers/perplexity.js +368 -0
  97. package/dist/esm/providers/perplexity.js.map +1 -0
  98. package/dist/esm/providers/replicate.js +336 -0
  99. package/dist/esm/providers/replicate.js.map +1 -0
  100. package/dist/esm/providers/together-ai.js +337 -0
  101. package/dist/esm/providers/together-ai.js.map +1 -0
  102. package/dist/esm/providers/xai.js +335 -0
  103. package/dist/esm/providers/xai.js.map +1 -0
  104. package/dist/esm/shared.js +272 -0
  105. package/dist/esm/shared.js.map +1 -0
  106. package/dist/types/index.d.ts +38 -0
  107. package/dist/types/index.d.ts.map +1 -0
  108. package/dist/types/providers/ai21.d.ts +106 -0
  109. package/dist/types/providers/ai21.d.ts.map +1 -0
  110. package/dist/types/providers/anthropic.d.ts +194 -0
  111. package/dist/types/providers/anthropic.d.ts.map +1 -0
  112. package/dist/types/providers/anyscale.d.ts +109 -0
  113. package/dist/types/providers/anyscale.d.ts.map +1 -0
  114. package/dist/types/providers/aws-bedrock.d.ts +152 -0
  115. package/dist/types/providers/aws-bedrock.d.ts.map +1 -0
  116. package/dist/types/providers/azure-openai.d.ts +142 -0
  117. package/dist/types/providers/azure-openai.d.ts.map +1 -0
  118. package/dist/types/providers/cerebras.d.ts +130 -0
  119. package/dist/types/providers/cerebras.d.ts.map +1 -0
  120. package/dist/types/providers/cloudflare.d.ts +125 -0
  121. package/dist/types/providers/cloudflare.d.ts.map +1 -0
  122. package/dist/types/providers/cohere.d.ts +114 -0
  123. package/dist/types/providers/cohere.d.ts.map +1 -0
  124. package/dist/types/providers/deepinfra.d.ts +118 -0
  125. package/dist/types/providers/deepinfra.d.ts.map +1 -0
  126. package/dist/types/providers/deepseek.d.ts +68 -0
  127. package/dist/types/providers/deepseek.d.ts.map +1 -0
  128. package/dist/types/providers/fireworks.d.ts +127 -0
  129. package/dist/types/providers/fireworks.d.ts.map +1 -0
  130. package/dist/types/providers/gemini.d.ts +71 -0
  131. package/dist/types/providers/gemini.d.ts.map +1 -0
  132. package/dist/types/providers/groq.d.ts +83 -0
  133. package/dist/types/providers/groq.d.ts.map +1 -0
  134. package/dist/types/providers/huggingface.d.ts +154 -0
  135. package/dist/types/providers/huggingface.d.ts.map +1 -0
  136. package/dist/types/providers/lmstudio.d.ts +88 -0
  137. package/dist/types/providers/lmstudio.d.ts.map +1 -0
  138. package/dist/types/providers/mistral.d.ts +65 -0
  139. package/dist/types/providers/mistral.d.ts.map +1 -0
  140. package/dist/types/providers/nvidia.d.ts +100 -0
  141. package/dist/types/providers/nvidia.d.ts.map +1 -0
  142. package/dist/types/providers/ollama.d.ts +59 -0
  143. package/dist/types/providers/ollama.d.ts.map +1 -0
  144. package/dist/types/providers/openai.d.ts +205 -0
  145. package/dist/types/providers/openai.d.ts.map +1 -0
  146. package/dist/types/providers/openrouter.d.ts +135 -0
  147. package/dist/types/providers/openrouter.d.ts.map +1 -0
  148. package/dist/types/providers/perplexity.d.ts +116 -0
  149. package/dist/types/providers/perplexity.d.ts.map +1 -0
  150. package/dist/types/providers/replicate.d.ts +91 -0
  151. package/dist/types/providers/replicate.d.ts.map +1 -0
  152. package/dist/types/providers/together-ai.d.ts +118 -0
  153. package/dist/types/providers/together-ai.d.ts.map +1 -0
  154. package/dist/types/providers/xai.d.ts +119 -0
  155. package/dist/types/providers/xai.d.ts.map +1 -0
  156. package/dist/types/shared.d.ts +116 -0
  157. package/dist/types/shared.d.ts.map +1 -0
  158. package/package.json +327 -0
  159. package/readme.md +86 -0
@@ -0,0 +1,68 @@
1
+ /**
2
+ * DeepSeek Backend Adapter
3
+ *
4
+ * Adapts Universal IR to DeepSeek API (OpenAI-compatible).
5
+ * DeepSeek provides cost-effective models with strong reasoning capabilities.
6
+ *
7
+ * @module
8
+ */
9
+ import { OpenAIBackendAdapter, type OpenAIRequest, type OpenAIResponse } from './openai.js';
10
+ import type { BackendAdapter, BackendAdapterConfig } from 'ai.matey.types';
11
+ /**
12
+ * Backend adapter for DeepSeek API.
13
+ *
14
+ * DeepSeek uses an OpenAI-compatible API, so we extend the OpenAI adapter
15
+ * with DeepSeek-specific configuration.
16
+ *
17
+ * @example Basic Usage
18
+ * ```typescript
19
+ * import { DeepSeekBackendAdapter } from 'ai.matey';
20
+ *
21
+ * const adapter = new DeepSeekBackendAdapter({
22
+ * apiKey: process.env.DEEPSEEK_API_KEY,
23
+ * });
24
+ * ```
25
+ *
26
+ * @example With Custom Model
27
+ * ```typescript
28
+ * const adapter = new DeepSeekBackendAdapter({
29
+ * apiKey: process.env.DEEPSEEK_API_KEY,
30
+ * });
31
+ *
32
+ * const response = await adapter.execute({
33
+ * messages: [{ role: 'user', content: 'Hello!' }],
34
+ * parameters: { model: 'deepseek-chat' },
35
+ * });
36
+ * ```
37
+ *
38
+ * @example With Bridge
39
+ * ```typescript
40
+ * import { createBridge } from 'ai.matey';
41
+ *
42
+ * const bridge = createBridge({
43
+ * backend: new DeepSeekBackendAdapter({
44
+ * apiKey: process.env.DEEPSEEK_API_KEY,
45
+ * }),
46
+ * });
47
+ * ```
48
+ */
49
+ export declare class DeepSeekBackendAdapter extends OpenAIBackendAdapter implements BackendAdapter<OpenAIRequest, OpenAIResponse> {
50
+ constructor(config: BackendAdapterConfig);
51
+ }
52
+ /**
53
+ * Create a DeepSeek backend adapter.
54
+ *
55
+ * @param config - Adapter configuration
56
+ * @returns DeepSeek backend adapter
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * import { createDeepSeekAdapter } from 'ai.matey';
61
+ *
62
+ * const adapter = createDeepSeekAdapter({
63
+ * apiKey: process.env.DEEPSEEK_API_KEY,
64
+ * });
65
+ * ```
66
+ */
67
+ export declare function createDeepSeekAdapter(config: BackendAdapterConfig): DeepSeekBackendAdapter;
68
+ //# sourceMappingURL=deepseek.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepseek.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,sBACX,SAAQ,oBACR,YAAW,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC;gBAE5C,MAAM,EAAE,oBAAoB;CAgCzC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,oBAAoB,GAAG,sBAAsB,CAE1F"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Fireworks AI Backend Adapter
3
+ *
4
+ * Adapts Universal IR to Fireworks AI Chat Completions API.
5
+ * Fireworks AI is OpenAI-compatible with 100+ models and fastest APIs.
6
+ *
7
+ * @module
8
+ */
9
+ import type { BackendAdapter, BackendAdapterConfig, AdapterMetadata } from 'ai.matey.types';
10
+ import type { IRChatRequest, IRChatResponse, IRChatStream } from 'ai.matey.types';
11
+ export type FireworksAIMessageContent = string | Array<{
12
+ type: 'text';
13
+ text: string;
14
+ } | {
15
+ type: 'image_url';
16
+ image_url: {
17
+ url: string;
18
+ };
19
+ }>;
20
+ export interface FireworksAIMessage {
21
+ role: 'system' | 'user' | 'assistant' | 'tool';
22
+ content: FireworksAIMessageContent;
23
+ name?: string;
24
+ tool_calls?: Array<{
25
+ id: string;
26
+ type: 'function';
27
+ function: {
28
+ name: string;
29
+ arguments: string;
30
+ };
31
+ }>;
32
+ }
33
+ export interface FireworksAIRequest {
34
+ model: string;
35
+ messages: FireworksAIMessage[];
36
+ temperature?: number;
37
+ max_tokens?: number;
38
+ top_p?: number;
39
+ top_k?: number;
40
+ frequency_penalty?: number;
41
+ presence_penalty?: number;
42
+ stop?: string[];
43
+ stream?: boolean;
44
+ reasoning_effort?: 'low' | 'medium' | 'high';
45
+ }
46
+ export interface FireworksAIResponse {
47
+ id: string;
48
+ object: 'chat.completion';
49
+ created: number;
50
+ model: string;
51
+ choices: Array<{
52
+ index: number;
53
+ message: FireworksAIMessage;
54
+ finish_reason: 'stop' | 'length' | 'tool_calls' | null;
55
+ }>;
56
+ usage: {
57
+ prompt_tokens: number;
58
+ completion_tokens: number;
59
+ total_tokens: number;
60
+ };
61
+ }
62
+ export interface FireworksAIStreamChunk {
63
+ id: string;
64
+ object: 'chat.completion.chunk';
65
+ created: number;
66
+ model: string;
67
+ choices: Array<{
68
+ index: number;
69
+ delta: {
70
+ role?: 'assistant';
71
+ content?: string;
72
+ };
73
+ finish_reason: 'stop' | 'length' | null;
74
+ }>;
75
+ usage?: {
76
+ prompt_tokens: number;
77
+ completion_tokens: number;
78
+ total_tokens: number;
79
+ };
80
+ }
81
+ /**
82
+ * Backend adapter for Fireworks AI Chat Completions API.
83
+ *
84
+ * Features:
85
+ * - 100+ open-source models
86
+ * - Fastest inference APIs
87
+ * - OpenAI-compatible with topK support
88
+ * - Vision model support
89
+ * - Function calling support
90
+ * - Reasoning models with reasoning_effort parameter
91
+ * - Pricing from $0.10 per 1M tokens
92
+ */
93
+ export declare class FireworksAIBackendAdapter implements BackendAdapter<FireworksAIRequest, FireworksAIResponse> {
94
+ readonly metadata: AdapterMetadata;
95
+ private readonly config;
96
+ private readonly baseURL;
97
+ constructor(config: BackendAdapterConfig);
98
+ /**
99
+ * Convert IR to Fireworks AI format.
100
+ */
101
+ fromIR(request: IRChatRequest): FireworksAIRequest;
102
+ /**
103
+ * Convert Fireworks AI response to IR.
104
+ */
105
+ toIR(response: FireworksAIResponse, originalRequest: IRChatRequest, latencyMs: number): IRChatResponse;
106
+ /**
107
+ * Execute non-streaming request.
108
+ */
109
+ execute(request: IRChatRequest, signal?: AbortSignal): Promise<IRChatResponse>;
110
+ /**
111
+ * Execute streaming request.
112
+ */
113
+ executeStream(request: IRChatRequest, signal?: AbortSignal): IRChatStream;
114
+ /**
115
+ * Get HTTP headers.
116
+ */
117
+ private getHeaders;
118
+ /**
119
+ * Health check.
120
+ */
121
+ healthCheck(): Promise<boolean>;
122
+ /**
123
+ * Estimate cost.
124
+ */
125
+ estimateCost(request: IRChatRequest): Promise<number | null>;
126
+ }
127
+ //# sourceMappingURL=fireworks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fireworks.d.ts","sourceRoot":"","sources":["../../../src/providers/fireworks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Google Gemini Backend Adapter
3
+ *
4
+ * Adapts Universal IR to Google Gemini API.
5
+ * Handles Gemini's systemInstruction field and content array format.
6
+ *
7
+ * @module
8
+ */
9
+ import type { BackendAdapter, BackendAdapterConfig, AdapterMetadata } from 'ai.matey.types';
10
+ import type { IRChatRequest, IRChatResponse, IRChatStream } from 'ai.matey.types';
11
+ export interface GeminiContent {
12
+ role: 'user' | 'model';
13
+ parts: Array<{
14
+ text: string;
15
+ } | {
16
+ inlineData: {
17
+ mimeType: string;
18
+ data: string;
19
+ };
20
+ }>;
21
+ }
22
+ export interface GeminiRequest {
23
+ contents: GeminiContent[];
24
+ systemInstruction?: {
25
+ parts: Array<{
26
+ text: string;
27
+ }>;
28
+ };
29
+ generationConfig?: {
30
+ temperature?: number;
31
+ topP?: number;
32
+ topK?: number;
33
+ maxOutputTokens?: number;
34
+ stopSequences?: string[];
35
+ };
36
+ }
37
+ export interface GeminiResponse {
38
+ candidates: Array<{
39
+ content: GeminiContent;
40
+ finishReason: 'STOP' | 'MAX_TOKENS' | 'SAFETY' | 'RECITATION' | 'OTHER';
41
+ }>;
42
+ usageMetadata?: {
43
+ promptTokenCount: number;
44
+ candidatesTokenCount: number;
45
+ totalTokenCount: number;
46
+ };
47
+ }
48
+ export declare class GeminiBackendAdapter implements BackendAdapter<GeminiRequest, GeminiResponse> {
49
+ readonly metadata: AdapterMetadata;
50
+ private readonly config;
51
+ private readonly baseURL;
52
+ constructor(config: BackendAdapterConfig);
53
+ execute(request: IRChatRequest, signal?: AbortSignal): Promise<IRChatResponse>;
54
+ executeStream(request: IRChatRequest, signal?: AbortSignal): IRChatStream;
55
+ healthCheck(): Promise<boolean>;
56
+ estimateCost(_request: IRChatRequest): Promise<number | null>;
57
+ /**
58
+ * Convert IR request to Gemini format.
59
+ *
60
+ * Public method for testing and debugging - see what will be sent to Gemini.
61
+ */
62
+ fromIR(request: IRChatRequest): GeminiRequest;
63
+ /**
64
+ * Convert Gemini response to IR format.
65
+ *
66
+ * Public method for testing and debugging - parse Gemini responses manually.
67
+ */
68
+ toIR(response: GeminiResponse, originalRequest: IRChatRequest, latencyMs: number): IRChatResponse;
69
+ private mapFinishReason;
70
+ }
71
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,YAAY,EAIb,MAAM,gBAAgB,CAAC;AAgBxB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,UAAU,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,iBAAiB,CAAC,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IACvD,gBAAgB,CAAC,EAAE;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,KAAK,CAAC;QAChB,OAAO,EAAE,aAAa,CAAC;QACvB,YAAY,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAC;KACzE,CAAC,CAAC;IACH,aAAa,CAAC,EAAE;QACd,gBAAgB,EAAE,MAAM,CAAC;QACzB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAMD,qBAAa,oBAAqB,YAAW,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC;IACxF,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,oBAAoB;IA8BlC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IAqC7E,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,YAAY;IAgI1E,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAYrC,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI7D;;;;OAIG;IACI,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa;IAoCpD;;;;OAIG;IACI,IAAI,CACT,QAAQ,EAAE,cAAc,EACxB,eAAe,EAAE,aAAa,EAC9B,SAAS,EAAE,MAAM,GAChB,cAAc;IAiCjB,OAAO,CAAC,eAAe;CAYxB"}
@@ -0,0 +1,83 @@
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, type OpenAIRequest, type OpenAIResponse } from './openai.js';
10
+ import type { BackendAdapter, BackendAdapterConfig, IRChatRequest } from 'ai.matey.types';
11
+ /**
12
+ * Backend adapter for Groq API.
13
+ *
14
+ * Groq uses an OpenAI-compatible API with ultra-fast inference speeds.
15
+ * Known for extremely low latency responses.
16
+ *
17
+ * @example Basic Usage
18
+ * ```typescript
19
+ * import { GroqBackendAdapter } from 'ai.matey';
20
+ *
21
+ * const adapter = new GroqBackendAdapter({
22
+ * apiKey: process.env.GROQ_API_KEY,
23
+ * });
24
+ * ```
25
+ *
26
+ * @example With Fast Models
27
+ * ```typescript
28
+ * const adapter = new GroqBackendAdapter({
29
+ * apiKey: process.env.GROQ_API_KEY,
30
+ * });
31
+ *
32
+ * const response = await adapter.execute({
33
+ * messages: [{ role: 'user', content: 'Hello!' }],
34
+ * parameters: {
35
+ * model: 'llama-3.3-70b-versatile', // Fast and capable
36
+ * },
37
+ * });
38
+ * ```
39
+ *
40
+ * @example Streaming for Ultra-Fast Responses
41
+ * ```typescript
42
+ * const stream = adapter.executeStream({
43
+ * messages: [{ role: 'user', content: 'Tell me a story' }],
44
+ * parameters: {
45
+ * model: 'llama-3.1-8b-instant', // Optimized for speed
46
+ * },
47
+ * });
48
+ *
49
+ * for await (const chunk of stream) {
50
+ * if (chunk.type === 'content') {
51
+ * console.log(chunk.delta);
52
+ * }
53
+ * }
54
+ * ```
55
+ */
56
+ export declare class GroqBackendAdapter extends OpenAIBackendAdapter implements BackendAdapter<OpenAIRequest, OpenAIResponse> {
57
+ constructor(config: BackendAdapterConfig);
58
+ /**
59
+ * Health check for Groq API.
60
+ */
61
+ healthCheck(): Promise<boolean>;
62
+ /**
63
+ * Estimate cost for Groq (very low cost, optimized for speed).
64
+ */
65
+ estimateCost(request: IRChatRequest): Promise<number | null>;
66
+ }
67
+ /**
68
+ * Create a Groq backend adapter.
69
+ *
70
+ * @param config - Adapter configuration
71
+ * @returns Groq backend adapter
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * import { createGroqAdapter } from 'ai.matey';
76
+ *
77
+ * const adapter = createGroqAdapter({
78
+ * apiKey: process.env.GROQ_API_KEY,
79
+ * });
80
+ * ```
81
+ */
82
+ export declare function createGroqAdapter(config: BackendAdapterConfig): GroqBackendAdapter;
83
+ //# sourceMappingURL=groq.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groq.d.ts","sourceRoot":"","sources":["../../../src/providers/groq.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,qBAAa,kBACX,SAAQ,oBACR,YAAW,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC;gBAE5C,MAAM,EAAE,oBAAoB;IAiCxC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAiBrC;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAWnE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,kBAAkB,CAElF"}
@@ -0,0 +1,154 @@
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 type { BackendAdapter, BackendAdapterConfig, AdapterMetadata } from 'ai.matey.types';
10
+ import type { IRChatRequest, IRChatResponse, IRChatStream } from 'ai.matey.types';
11
+ /**
12
+ * Hugging Face API message format.
13
+ */
14
+ export interface HuggingFaceMessage {
15
+ role: 'system' | 'user' | 'assistant';
16
+ content: string;
17
+ }
18
+ /**
19
+ * Hugging Face API request.
20
+ */
21
+ export interface HuggingFaceRequest {
22
+ inputs: string | {
23
+ past_user_inputs?: string[];
24
+ generated_responses?: string[];
25
+ text: string;
26
+ };
27
+ parameters?: {
28
+ temperature?: number;
29
+ max_new_tokens?: number;
30
+ top_p?: number;
31
+ top_k?: number;
32
+ repetition_penalty?: number;
33
+ do_sample?: boolean;
34
+ return_full_text?: boolean;
35
+ };
36
+ options?: {
37
+ wait_for_model?: boolean;
38
+ use_cache?: boolean;
39
+ };
40
+ }
41
+ /**
42
+ * Hugging Face API response.
43
+ */
44
+ export interface HuggingFaceResponse {
45
+ generated_text?: string;
46
+ conversation?: {
47
+ past_user_inputs: string[];
48
+ generated_responses: string[];
49
+ };
50
+ error?: string;
51
+ }
52
+ /**
53
+ * Backend adapter for Hugging Face Inference API.
54
+ *
55
+ * Supports text generation models from Hugging Face Hub.
56
+ *
57
+ * @example Basic Usage
58
+ * ```typescript
59
+ * import { HuggingFaceBackendAdapter } from 'ai.matey';
60
+ *
61
+ * const adapter = new HuggingFaceBackendAdapter({
62
+ * apiKey: process.env.HUGGINGFACE_API_KEY,
63
+ * });
64
+ * ```
65
+ *
66
+ * @example With Specific Model
67
+ * ```typescript
68
+ * const adapter = new HuggingFaceBackendAdapter({
69
+ * apiKey: process.env.HUGGINGFACE_API_KEY,
70
+ * });
71
+ *
72
+ * const response = await adapter.execute({
73
+ * messages: [{ role: 'user', content: 'Hello!' }],
74
+ * parameters: {
75
+ * model: 'mistralai/Mixtral-8x7B-Instruct-v0.1',
76
+ * },
77
+ * });
78
+ * ```
79
+ *
80
+ * @example With Inference Endpoints
81
+ * ```typescript
82
+ * const adapter = new HuggingFaceBackendAdapter({
83
+ * apiKey: process.env.HUGGINGFACE_API_KEY,
84
+ * baseURL: 'https://your-endpoint.aws.endpoints.huggingface.cloud',
85
+ * });
86
+ * ```
87
+ */
88
+ export declare class HuggingFaceBackendAdapter implements BackendAdapter<HuggingFaceRequest, HuggingFaceResponse> {
89
+ readonly metadata: AdapterMetadata;
90
+ private readonly config;
91
+ private readonly baseURL;
92
+ constructor(config: BackendAdapterConfig);
93
+ /**
94
+ * Execute non-streaming chat completion request.
95
+ */
96
+ execute(request: IRChatRequest, signal?: AbortSignal): Promise<IRChatResponse>;
97
+ /**
98
+ * Execute streaming chat completion request.
99
+ */
100
+ executeStream(request: IRChatRequest, _signal?: AbortSignal): IRChatStream;
101
+ /**
102
+ * Health check for Hugging Face API.
103
+ */
104
+ healthCheck(): Promise<boolean>;
105
+ /**
106
+ * Estimate cost for Hugging Face.
107
+ */
108
+ estimateCost(request: IRChatRequest): Promise<number | null>;
109
+ /**
110
+ * Convert IR request to Hugging Face format.
111
+ *
112
+ * Public method for testing and debugging - see what will be sent to Hugging Face.
113
+ */
114
+ fromIR(request: IRChatRequest): HuggingFaceRequest;
115
+ /**
116
+ * Convert Hugging Face response to IR format.
117
+ *
118
+ * Public method for testing and debugging - parse Hugging Face responses manually.
119
+ */
120
+ toIR(response: HuggingFaceResponse | HuggingFaceResponse[], originalRequest: IRChatRequest, latencyMs: number): IRChatResponse;
121
+ /**
122
+ * Convert messages to prompt text.
123
+ */
124
+ private messagesToPrompt;
125
+ /**
126
+ * Make HTTP request to Hugging Face API.
127
+ */
128
+ private makeRequest;
129
+ /**
130
+ * Get HTTP headers for Hugging Face API requests.
131
+ */
132
+ private getHeaders;
133
+ /**
134
+ * Estimate token count for a request.
135
+ */
136
+ private estimateTokens;
137
+ }
138
+ /**
139
+ * Create a Hugging Face backend adapter.
140
+ *
141
+ * @param config - Adapter configuration
142
+ * @returns Hugging Face backend adapter
143
+ *
144
+ * @example
145
+ * ```typescript
146
+ * import { createHuggingFaceAdapter } from 'ai.matey';
147
+ *
148
+ * const adapter = createHuggingFaceAdapter({
149
+ * apiKey: process.env.HUGGINGFACE_API_KEY,
150
+ * });
151
+ * ```
152
+ */
153
+ export declare function createHuggingFaceAdapter(config: BackendAdapterConfig): HuggingFaceBackendAdapter;
154
+ //# sourceMappingURL=huggingface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"huggingface.d.ts","sourceRoot":"","sources":["../../../src/providers/huggingface.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,YAAY,EAGb,MAAM,gBAAgB,CAAC;AASxB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EACF,MAAM,GACN;QACE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC5B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC/B,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACN,UAAU,CAAC,EAAE;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;IACF,OAAO,CAAC,EAAE;QACR,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE;QACb,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,mBAAmB,EAAE,MAAM,EAAE,CAAC;KAC/B,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,yBAA0B,YAAW,cAAc,CAC9D,kBAAkB,EAClB,mBAAmB,CACpB;IACC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,oBAAoB;IA6BxC;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IAoCpF;;OAEG;IACI,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,YAAY;IAgDjF;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAerC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkB5D;;;;OAIG;IACI,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,kBAAkB;IAoCzD;;;;OAIG;IACI,IAAI,CACT,QAAQ,EAAE,mBAAmB,GAAG,mBAAmB,EAAE,EACrD,eAAe,EAAE,aAAa,EAC9B,SAAS,EAAE,MAAM,GAChB,cAAc;IAgDjB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA2BxB;;OAEG;YACW,WAAW;IAuCzB;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,OAAO,CAAC,cAAc;CAiBvB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,oBAAoB,GAAG,yBAAyB,CAEhG"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * LM Studio Backend Adapter
3
+ *
4
+ * Adapts Universal IR to LM Studio local API (OpenAI-compatible).
5
+ * LM Studio runs models locally on your machine with zero cost.
6
+ *
7
+ * @module
8
+ */
9
+ import { OpenAIBackendAdapter, type OpenAIRequest, type OpenAIResponse } from './openai.js';
10
+ import type { BackendAdapter, BackendAdapterConfig, IRChatRequest } from 'ai.matey.types';
11
+ /**
12
+ * Backend adapter for LM Studio local API.
13
+ *
14
+ * LM Studio provides a local OpenAI-compatible API server for running
15
+ * models on your own hardware. Perfect for privacy, development, and cost savings.
16
+ *
17
+ * @example Basic Usage
18
+ * ```typescript
19
+ * import { LMStudioBackendAdapter } from 'ai.matey';
20
+ *
21
+ * const adapter = new LMStudioBackendAdapter({
22
+ * baseURL: 'http://localhost:1234/v1', // Default LM Studio port
23
+ * });
24
+ * ```
25
+ *
26
+ * @example With Custom Model
27
+ * ```typescript
28
+ * const adapter = new LMStudioBackendAdapter({
29
+ * baseURL: 'http://localhost:1234/v1',
30
+ * });
31
+ *
32
+ * const response = await adapter.execute({
33
+ * messages: [{ role: 'user', content: 'Hello!' }],
34
+ * parameters: {
35
+ * model: 'local-model', // Use whatever model is loaded in LM Studio
36
+ * },
37
+ * });
38
+ * ```
39
+ *
40
+ * @example Privacy-Focused Local Inference
41
+ * ```typescript
42
+ * import { createBridge } from 'ai.matey';
43
+ *
44
+ * const bridge = createBridge({
45
+ * backend: new LMStudioBackendAdapter({
46
+ * baseURL: 'http://localhost:1234/v1',
47
+ * }),
48
+ * });
49
+ *
50
+ * // All requests stay on your local machine
51
+ * const response = await bridge.chat({
52
+ * messages: [{ role: 'user', content: 'Sensitive data here' }],
53
+ * });
54
+ * ```
55
+ */
56
+ export declare class LMStudioBackendAdapter extends OpenAIBackendAdapter implements BackendAdapter<OpenAIRequest, OpenAIResponse> {
57
+ constructor(config: BackendAdapterConfig);
58
+ /**
59
+ * Health check for LM Studio.
60
+ */
61
+ healthCheck(): Promise<boolean>;
62
+ /**
63
+ * Estimate cost for LM Studio (always $0 - local inference).
64
+ */
65
+ estimateCost(_request: IRChatRequest): Promise<number | null>;
66
+ }
67
+ /**
68
+ * Create an LM Studio backend adapter.
69
+ *
70
+ * @param config - Adapter configuration
71
+ * @returns LM Studio backend adapter
72
+ *
73
+ * @example Default Configuration
74
+ * ```typescript
75
+ * import { createLMStudioAdapter } from 'ai.matey';
76
+ *
77
+ * const adapter = createLMStudioAdapter({});
78
+ * ```
79
+ *
80
+ * @example Custom Port
81
+ * ```typescript
82
+ * const adapter = createLMStudioAdapter({
83
+ * baseURL: 'http://localhost:8080/v1',
84
+ * });
85
+ * ```
86
+ */
87
+ export declare function createLMStudioAdapter(config?: BackendAdapterConfig): LMStudioBackendAdapter;
88
+ //# sourceMappingURL=lmstudio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lmstudio.d.ts","sourceRoot":"","sources":["../../../src/providers/lmstudio.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,qBAAa,sBACX,SAAQ,oBACR,YAAW,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC;gBAE5C,MAAM,EAAE,oBAAoB;IAmCxC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAgBrC;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAI9D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,GAAE,oBAAiD,GACxD,sBAAsB,CAExB"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Mistral Backend Adapter
3
+ *
4
+ * Adapts Universal IR to Mistral API.
5
+ * Mistral uses OpenAI-compatible format with minor differences.
6
+ *
7
+ * @module
8
+ */
9
+ import type { BackendAdapter, BackendAdapterConfig, AdapterMetadata } from 'ai.matey.types';
10
+ import type { IRChatRequest, IRChatResponse, IRChatStream } from 'ai.matey.types';
11
+ export interface MistralMessage {
12
+ role: 'system' | 'user' | 'assistant';
13
+ content: string;
14
+ }
15
+ export interface MistralRequest {
16
+ model: string;
17
+ messages: MistralMessage[];
18
+ temperature?: number;
19
+ max_tokens?: number;
20
+ top_p?: number;
21
+ stream?: boolean;
22
+ safe_mode?: boolean;
23
+ random_seed?: number;
24
+ }
25
+ export interface MistralResponse {
26
+ id: string;
27
+ object: 'chat.completion';
28
+ created: number;
29
+ model: string;
30
+ choices: Array<{
31
+ index: number;
32
+ message: MistralMessage;
33
+ finish_reason: 'stop' | 'length' | 'model_length' | null;
34
+ }>;
35
+ usage: {
36
+ prompt_tokens: number;
37
+ completion_tokens: number;
38
+ total_tokens: number;
39
+ };
40
+ }
41
+ export declare class MistralBackendAdapter implements BackendAdapter<MistralRequest, MistralResponse> {
42
+ readonly metadata: AdapterMetadata;
43
+ private readonly config;
44
+ private readonly baseURL;
45
+ constructor(config: BackendAdapterConfig);
46
+ execute(request: IRChatRequest, signal?: AbortSignal): Promise<IRChatResponse>;
47
+ executeStream(request: IRChatRequest, signal?: AbortSignal): IRChatStream;
48
+ healthCheck(): Promise<boolean>;
49
+ estimateCost(request: IRChatRequest): Promise<number | null>;
50
+ /**
51
+ * Convert IR request to Mistral format.
52
+ *
53
+ * Public method for testing and debugging - see what will be sent to Mistral.
54
+ */
55
+ fromIR(request: IRChatRequest): MistralRequest;
56
+ /**
57
+ * Convert Mistral response to IR format.
58
+ *
59
+ * Public method for testing and debugging - parse Mistral responses manually.
60
+ */
61
+ toIR(response: MistralResponse, originalRequest: IRChatRequest, latencyMs: number): IRChatResponse;
62
+ private mapFinishReason;
63
+ private estimateTokens;
64
+ }
65
+ //# sourceMappingURL=mistral.d.ts.map