@node-llm/core 0.2.2 → 0.4.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 (127) hide show
  1. package/README.md +288 -16
  2. package/dist/chat/Chat.d.ts +58 -17
  3. package/dist/chat/Chat.d.ts.map +1 -1
  4. package/dist/chat/Chat.js +185 -33
  5. package/dist/chat/ChatOptions.d.ts +10 -0
  6. package/dist/chat/ChatOptions.d.ts.map +1 -1
  7. package/dist/chat/ChatResponse.d.ts +23 -0
  8. package/dist/chat/ChatResponse.d.ts.map +1 -0
  9. package/dist/chat/ChatResponse.js +38 -0
  10. package/dist/chat/Stream.d.ts.map +1 -1
  11. package/dist/chat/Stream.js +10 -0
  12. package/dist/constants.d.ts +7 -0
  13. package/dist/constants.d.ts.map +1 -0
  14. package/dist/constants.js +6 -0
  15. package/dist/embedding/Embedding.d.ts +17 -0
  16. package/dist/embedding/Embedding.d.ts.map +1 -0
  17. package/dist/embedding/Embedding.js +24 -0
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/llm.d.ts +35 -3
  22. package/dist/llm.d.ts.map +1 -1
  23. package/dist/llm.js +88 -14
  24. package/dist/models/ModelRegistry.d.ts +23 -0
  25. package/dist/models/ModelRegistry.d.ts.map +1 -0
  26. package/dist/models/ModelRegistry.js +54 -0
  27. package/dist/moderation/Moderation.d.ts +56 -0
  28. package/dist/moderation/Moderation.d.ts.map +1 -0
  29. package/dist/moderation/Moderation.js +92 -0
  30. package/dist/providers/Embedding.d.ts +20 -0
  31. package/dist/providers/Embedding.d.ts.map +1 -0
  32. package/dist/providers/Provider.d.ts +50 -4
  33. package/dist/providers/Provider.d.ts.map +1 -1
  34. package/dist/providers/gemini/Capabilities.d.ts +30 -0
  35. package/dist/providers/gemini/Capabilities.d.ts.map +1 -0
  36. package/dist/providers/gemini/Capabilities.js +148 -0
  37. package/dist/providers/gemini/Chat.d.ts +8 -0
  38. package/dist/providers/gemini/Chat.d.ts.map +1 -0
  39. package/dist/providers/gemini/Chat.js +69 -0
  40. package/dist/providers/gemini/ChatUtils.d.ts +9 -0
  41. package/dist/providers/gemini/ChatUtils.d.ts.map +1 -0
  42. package/dist/providers/gemini/ChatUtils.js +83 -0
  43. package/dist/providers/gemini/Embeddings.d.ts +8 -0
  44. package/dist/providers/gemini/Embeddings.d.ts.map +1 -0
  45. package/dist/providers/gemini/Embeddings.js +44 -0
  46. package/dist/providers/gemini/Errors.d.ts +2 -0
  47. package/dist/providers/gemini/Errors.d.ts.map +1 -0
  48. package/dist/providers/gemini/Errors.js +34 -0
  49. package/dist/providers/gemini/GeminiProvider.d.ts +34 -0
  50. package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -0
  51. package/dist/providers/gemini/GeminiProvider.js +55 -0
  52. package/dist/providers/gemini/Image.d.ts +8 -0
  53. package/dist/providers/gemini/Image.d.ts.map +1 -0
  54. package/dist/providers/gemini/Image.js +47 -0
  55. package/dist/providers/gemini/Models.d.ts +8 -0
  56. package/dist/providers/gemini/Models.d.ts.map +1 -0
  57. package/dist/providers/gemini/Models.js +38 -0
  58. package/dist/providers/gemini/Streaming.d.ts +8 -0
  59. package/dist/providers/gemini/Streaming.d.ts.map +1 -0
  60. package/dist/providers/gemini/Streaming.js +70 -0
  61. package/dist/providers/gemini/Transcription.d.ts +9 -0
  62. package/dist/providers/gemini/Transcription.d.ts.map +1 -0
  63. package/dist/providers/gemini/Transcription.js +63 -0
  64. package/dist/providers/gemini/index.d.ts +11 -0
  65. package/dist/providers/gemini/index.d.ts.map +1 -0
  66. package/dist/providers/gemini/index.js +24 -0
  67. package/dist/providers/gemini/types.d.ts +118 -0
  68. package/dist/providers/gemini/types.d.ts.map +1 -0
  69. package/dist/providers/gemini/types.js +1 -0
  70. package/dist/providers/openai/Capabilities.d.ts +7 -2
  71. package/dist/providers/openai/Capabilities.d.ts.map +1 -1
  72. package/dist/providers/openai/Capabilities.js +52 -214
  73. package/dist/providers/openai/Chat.d.ts.map +1 -1
  74. package/dist/providers/openai/Chat.js +4 -0
  75. package/dist/providers/openai/Embedding.d.ts +8 -0
  76. package/dist/providers/openai/Embedding.d.ts.map +1 -0
  77. package/dist/providers/openai/Embedding.js +48 -0
  78. package/dist/providers/openai/ModelDefinitions.d.ts +25 -0
  79. package/dist/providers/openai/ModelDefinitions.d.ts.map +1 -0
  80. package/dist/providers/openai/ModelDefinitions.js +211 -0
  81. package/dist/providers/openai/Moderation.d.ts +8 -0
  82. package/dist/providers/openai/Moderation.d.ts.map +1 -0
  83. package/dist/providers/openai/Moderation.js +27 -0
  84. package/dist/providers/openai/OpenAIProvider.d.ts +13 -1
  85. package/dist/providers/openai/OpenAIProvider.d.ts.map +1 -1
  86. package/dist/providers/openai/OpenAIProvider.js +22 -0
  87. package/dist/providers/openai/Streaming.d.ts.map +1 -1
  88. package/dist/providers/openai/Streaming.js +19 -8
  89. package/dist/providers/openai/Transcription.d.ts +10 -0
  90. package/dist/providers/openai/Transcription.d.ts.map +1 -0
  91. package/dist/providers/openai/Transcription.js +162 -0
  92. package/dist/providers/openai/index.d.ts +8 -0
  93. package/dist/providers/openai/index.d.ts.map +1 -1
  94. package/dist/providers/openai/index.js +12 -0
  95. package/dist/schema/Schema.d.ts +20 -0
  96. package/dist/schema/Schema.d.ts.map +1 -0
  97. package/dist/schema/Schema.js +22 -0
  98. package/dist/schema/to-json-schema.d.ts +3 -0
  99. package/dist/schema/to-json-schema.d.ts.map +1 -0
  100. package/dist/schema/to-json-schema.js +10 -0
  101. package/dist/transcription/Transcription.d.ts +11 -0
  102. package/dist/transcription/Transcription.d.ts.map +1 -0
  103. package/dist/transcription/Transcription.js +21 -0
  104. package/dist/utils/Binary.d.ts +12 -0
  105. package/dist/utils/Binary.d.ts.map +1 -0
  106. package/dist/utils/Binary.js +71 -0
  107. package/dist/utils/FileLoader.d.ts.map +1 -1
  108. package/dist/utils/FileLoader.js +12 -1
  109. package/dist/utils/audio.d.ts +10 -0
  110. package/dist/utils/audio.d.ts.map +1 -0
  111. package/dist/utils/audio.js +46 -0
  112. package/package.json +18 -7
  113. package/dist/providers/openai/register.d.ts +0 -2
  114. package/dist/providers/openai/register.d.ts.map +0 -1
  115. package/dist/providers/openai/register.js +0 -15
  116. package/dist/tools/Tool.d.ts +0 -8
  117. package/dist/tools/Tool.d.ts.map +0 -1
  118. package/dist/tools/ToolSet.d.ts +0 -15
  119. package/dist/tools/ToolSet.d.ts.map +0 -1
  120. package/dist/tools/ToolSet.js +0 -29
  121. package/dist/tools/index.d.ts +0 -2
  122. package/dist/tools/index.d.ts.map +0 -1
  123. package/dist/tools/index.js +0 -1
  124. package/dist/tools/runCommandTool.d.ts +0 -8
  125. package/dist/tools/runCommandTool.d.ts.map +0 -1
  126. package/dist/tools/runCommandTool.js +0 -19
  127. /package/dist/{tools/Tool.js → providers/Embedding.js} +0 -0
@@ -0,0 +1,70 @@
1
+ import { Capabilities } from "./Capabilities.js";
2
+ import { handleGeminiError } from "./Errors.js";
3
+ import { GeminiChatUtils } from "./ChatUtils.js";
4
+ export class GeminiStreaming {
5
+ baseUrl;
6
+ apiKey;
7
+ constructor(baseUrl, apiKey) {
8
+ this.baseUrl = baseUrl;
9
+ this.apiKey = apiKey;
10
+ }
11
+ async *execute(request) {
12
+ const temperature = Capabilities.normalizeTemperature(request.temperature, request.model);
13
+ const url = `${this.baseUrl}/models/${request.model}:streamGenerateContent?alt=sse&key=${this.apiKey}`;
14
+ const { contents, systemInstructionParts } = await GeminiChatUtils.convertMessages(request.messages);
15
+ const payload = {
16
+ contents,
17
+ generationConfig: {
18
+ temperature: temperature ?? undefined,
19
+ maxOutputTokens: request.max_tokens,
20
+ },
21
+ };
22
+ if (systemInstructionParts.length > 0) {
23
+ payload.systemInstruction = { parts: systemInstructionParts };
24
+ }
25
+ const response = await fetch(url, {
26
+ method: "POST",
27
+ headers: {
28
+ "Content-Type": "application/json",
29
+ },
30
+ body: JSON.stringify(payload),
31
+ });
32
+ if (!response.ok) {
33
+ await handleGeminiError(response, request.model);
34
+ }
35
+ if (!response.body) {
36
+ throw new Error("No response body for streaming");
37
+ }
38
+ const reader = response.body.getReader();
39
+ const decoder = new TextDecoder();
40
+ let buffer = "";
41
+ while (true) {
42
+ const { value, done } = await reader.read();
43
+ if (done)
44
+ break;
45
+ buffer += decoder.decode(value, { stream: true });
46
+ let lineEnd;
47
+ while ((lineEnd = buffer.indexOf("\n")) !== -1) {
48
+ const line = buffer.substring(0, lineEnd).trim();
49
+ buffer = buffer.substring(lineEnd + 1);
50
+ if (line.startsWith("data: ")) {
51
+ const data = line.substring(6).trim();
52
+ if (!data)
53
+ continue;
54
+ try {
55
+ const json = JSON.parse(data);
56
+ const parts = json.candidates?.[0]?.content?.parts || [];
57
+ for (const part of parts) {
58
+ if (part.text) {
59
+ yield { content: part.text };
60
+ }
61
+ }
62
+ }
63
+ catch (e) {
64
+ // Ignore parse errors
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
@@ -0,0 +1,9 @@
1
+ import { TranscriptionRequest, TranscriptionResponse } from "../Provider.js";
2
+ export declare class GeminiTranscription {
3
+ private readonly baseUrl;
4
+ private readonly apiKey;
5
+ private static readonly DEFAULT_PROMPT;
6
+ constructor(baseUrl: string, apiKey: string);
7
+ execute(request: TranscriptionRequest): Promise<TranscriptionResponse>;
8
+ }
9
+ //# sourceMappingURL=Transcription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transcription.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Transcription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAK7E,qBAAa,mBAAmB;IAGlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFrE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAA8E;gBAEvF,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAEvE,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA2D7E"}
@@ -0,0 +1,63 @@
1
+ import { handleGeminiError } from "./Errors.js";
2
+ import { BinaryUtils } from "../../utils/Binary.js";
3
+ export class GeminiTranscription {
4
+ baseUrl;
5
+ apiKey;
6
+ static DEFAULT_PROMPT = "Transcribe the provided audio and respond with only the transcript text.";
7
+ constructor(baseUrl, apiKey) {
8
+ this.baseUrl = baseUrl;
9
+ this.apiKey = apiKey;
10
+ }
11
+ async execute(request) {
12
+ const model = request.model || "gemini-2.0-flash";
13
+ const url = `${this.baseUrl}/models/${model}:generateContent?key=${this.apiKey}`;
14
+ const result = await BinaryUtils.toBase64(request.file);
15
+ if (!result) {
16
+ throw new Error(`Failed to load audio file: ${request.file}`);
17
+ }
18
+ const { data: base64Data, mimeType } = result;
19
+ let prompt = GeminiTranscription.DEFAULT_PROMPT;
20
+ if (request.language) {
21
+ prompt += ` Respond in the ${request.language} language.`;
22
+ }
23
+ if (request.prompt) {
24
+ prompt += ` ${request.prompt}`;
25
+ }
26
+ const payload = {
27
+ contents: [
28
+ {
29
+ role: "user",
30
+ parts: [
31
+ { text: prompt },
32
+ {
33
+ inlineData: {
34
+ mimeType,
35
+ data: base64Data,
36
+ },
37
+ },
38
+ ],
39
+ },
40
+ ],
41
+ generationConfig: {
42
+ responseMimeType: "text/plain",
43
+ },
44
+ };
45
+ const response = await fetch(url, {
46
+ method: "POST",
47
+ headers: {
48
+ "Content-Type": "application/json",
49
+ },
50
+ body: JSON.stringify(payload),
51
+ });
52
+ if (!response.ok) {
53
+ await handleGeminiError(response, model);
54
+ }
55
+ const json = (await response.json());
56
+ const text = json.candidates?.[0]?.content?.parts?.map(p => p.text).join("") || "";
57
+ return {
58
+ text,
59
+ model,
60
+ segments: [], // Gemini's generateContent doesn't return segments by default
61
+ };
62
+ }
63
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Idempotent registration of the Gemini provider.
3
+ * Automatically called by LLM.configure({ provider: 'gemini' })
4
+ */
5
+ export declare function registerGeminiProvider(): void;
6
+ /**
7
+ * Alias for registerGeminiProvider for internal use.
8
+ */
9
+ export declare const ensureGeminiRegistered: typeof registerGeminiProvider;
10
+ export * from "./GeminiProvider.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/index.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,sBAAsB,SAcrC;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,+BAAyB,CAAC;AAE7D,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { providerRegistry } from "../registry.js";
2
+ import { GeminiProvider } from "./GeminiProvider.js";
3
+ let registered = false;
4
+ /**
5
+ * Idempotent registration of the Gemini provider.
6
+ * Automatically called by LLM.configure({ provider: 'gemini' })
7
+ */
8
+ export function registerGeminiProvider() {
9
+ if (registered)
10
+ return;
11
+ providerRegistry.register("gemini", () => {
12
+ const apiKey = process.env.GEMINI_API_KEY;
13
+ if (!apiKey) {
14
+ throw new Error("GEMINI_API_KEY is not set");
15
+ }
16
+ return new GeminiProvider({ apiKey });
17
+ });
18
+ registered = true;
19
+ }
20
+ /**
21
+ * Alias for registerGeminiProvider for internal use.
22
+ */
23
+ export const ensureGeminiRegistered = registerGeminiProvider;
24
+ export * from "./GeminiProvider.js";
@@ -0,0 +1,118 @@
1
+ export interface GeminiPart {
2
+ text?: string;
3
+ inlineData?: {
4
+ mimeType: string;
5
+ data: string;
6
+ };
7
+ functionCall?: {
8
+ name: string;
9
+ args: Record<string, any>;
10
+ };
11
+ functionResponse?: {
12
+ name: string;
13
+ response: Record<string, any>;
14
+ };
15
+ }
16
+ export interface GeminiContent {
17
+ role?: "user" | "model";
18
+ parts: GeminiPart[];
19
+ }
20
+ export interface GeminiGenerateContentRequest {
21
+ contents: GeminiContent[];
22
+ systemInstruction?: {
23
+ parts: GeminiPart[];
24
+ };
25
+ tools?: {
26
+ functionDeclarations: Array<{
27
+ name: string;
28
+ description?: string;
29
+ parameters?: Record<string, any>;
30
+ }>;
31
+ }[];
32
+ generationConfig?: {
33
+ temperature?: number;
34
+ maxOutputTokens?: number;
35
+ stopSequences?: string[];
36
+ topP?: number;
37
+ topK?: number;
38
+ responseMimeType?: string;
39
+ responseSchema?: Record<string, any>;
40
+ };
41
+ safetySettings?: Array<{
42
+ category: string;
43
+ threshold: string;
44
+ }>;
45
+ }
46
+ export interface GeminiGenerateContentResponse {
47
+ candidates?: Array<{
48
+ content: GeminiContent;
49
+ finishReason?: string;
50
+ index?: number;
51
+ safetyRatings?: Array<{
52
+ category: string;
53
+ probability: string;
54
+ }>;
55
+ }>;
56
+ usageMetadata?: {
57
+ promptTokenCount: number;
58
+ candidatesTokenCount: number;
59
+ totalTokenCount: number;
60
+ };
61
+ modelVersion?: string;
62
+ }
63
+ export interface GeminiModel {
64
+ name: string;
65
+ version: string;
66
+ displayName: string;
67
+ description: string;
68
+ inputTokenLimit: number;
69
+ outputTokenLimit: number;
70
+ supportedGenerationMethods: string[];
71
+ temperature?: number;
72
+ topP?: number;
73
+ topK?: number;
74
+ }
75
+ export interface GeminiListModelsResponse {
76
+ models: GeminiModel[];
77
+ nextPageToken?: string;
78
+ }
79
+ export interface GeminiImageRequest {
80
+ prompt: string;
81
+ numberOfImages?: number;
82
+ aspectRatio?: string;
83
+ safetySetting?: Array<{
84
+ category: string;
85
+ threshold: string;
86
+ }>;
87
+ }
88
+ export interface GeminiImageResponse {
89
+ images: Array<{
90
+ image: {
91
+ mimeType: string;
92
+ data: string;
93
+ };
94
+ }>;
95
+ }
96
+ export interface GeminiEmbedRequest {
97
+ model: string;
98
+ content: {
99
+ parts: Array<{
100
+ text: string;
101
+ }>;
102
+ };
103
+ outputDimensionality?: number;
104
+ }
105
+ export interface GeminiEmbedResponse {
106
+ embedding: {
107
+ values: number[];
108
+ };
109
+ }
110
+ export interface GeminiBatchEmbedRequest {
111
+ requests: GeminiEmbedRequest[];
112
+ }
113
+ export interface GeminiBatchEmbedResponse {
114
+ embeddings: Array<{
115
+ values: number[];
116
+ }>;
117
+ }
118
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,12 +1,17 @@
1
- export type ModelFamily = "dall_e" | "chatgpt4o" | "gpt41" | "gpt41_mini" | "gpt41_nano" | "gpt4" | "gpt4_turbo" | "gpt45" | "gpt35_turbo" | "gpt4o" | "gpt4o_audio" | "gpt4o_mini" | "gpt4o_mini_audio" | "gpt4o_mini_realtime" | "gpt4o_mini_transcribe" | "gpt4o_mini_tts" | "gpt4o_realtime" | "gpt4o_search" | "gpt4o_transcribe" | "gpt5" | "gpt5_mini" | "gpt5_nano" | "o1" | "o1_mini" | "o1_pro" | "o3_mini" | "babbage" | "davinci" | "embedding3_large" | "embedding3_small" | "embedding_ada" | "tts1" | "tts1_hd" | "whisper" | "moderation" | "other";
1
+ import { ModelFamilyDefinition } from "./ModelDefinitions.js";
2
2
  export declare class Capabilities {
3
- static getFamily(modelId: string): ModelFamily;
3
+ static getFamily(modelId: string): string;
4
+ static getDefinition(modelId: string): ModelFamilyDefinition;
4
5
  static getContextWindow(modelId: string): number | null;
5
6
  static getMaxOutputTokens(modelId: string): number | null;
6
7
  static supportsVision(modelId: string): boolean;
7
8
  static supportsTools(modelId: string): boolean;
8
9
  static supportsStructuredOutput(modelId: string): boolean;
9
10
  static supportsJsonMode(modelId: string): boolean;
11
+ static supportsEmbeddings(modelId: string): boolean;
12
+ static supportsImageGeneration(modelId: string): boolean;
13
+ static supportsTranscription(modelId: string): boolean;
14
+ static supportsModeration(modelId: string): boolean;
10
15
  static getInputPrice(modelId: string): number;
11
16
  static getCachedInputPrice(modelId: string): number | undefined;
12
17
  static getOutputPrice(modelId: string): number;
@@ -1 +1 @@
1
- {"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/Capabilities.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,WAAW,GACX,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,MAAM,GACN,YAAY,GACZ,OAAO,GACP,aAAa,GACb,OAAO,GACP,aAAa,GACb,YAAY,GACZ,kBAAkB,GAClB,qBAAqB,GACrB,uBAAuB,GACvB,gBAAgB,GAChB,gBAAgB,GAChB,cAAc,GACd,kBAAkB,GAClB,MAAM,GACN,WAAW,GACX,WAAW,GACX,IAAI,GACJ,SAAS,GACT,QAAQ,GACR,SAAS,GACT,SAAS,GACT,SAAS,GACT,kBAAkB,GAClB,kBAAkB,GAClB,eAAe,GACf,MAAM,GACN,SAAS,GACT,SAAS,GACT,YAAY,GACZ,OAAO,CAAC;AA4EZ,qBAAa,YAAY;IACvB,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAS9C,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA8CvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAgDzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAS/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQ9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQzD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjD,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAM7C,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAM/D,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAM9C,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM;IAS7F,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAKjD,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAarC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAUlC,MAAM,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI;IAUxG,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAgB5E,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAmBjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM;CAyBlC"}
1
+ {"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/Capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE7E,qBAAa,YAAY;IACvB,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAUzC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB;IAK5D,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIzD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAInD,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAMtD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAInD,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAK7C,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI/D,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAK9C,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM;IAI7F,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAKjD,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAarC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAUlC,MAAM,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI;IAUxG,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAqB5E,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAiBjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM;CAyBlC"}