@cogitator-ai/core 0.18.1 → 0.18.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/cogitator/tool-executor.d.ts.map +1 -1
  2. package/dist/cogitator/tool-executor.js.map +1 -1
  3. package/dist/context/strategies/sliding-window.d.ts.map +1 -1
  4. package/dist/context/strategies/sliding-window.js.map +1 -1
  5. package/dist/learning/agent-optimizer.d.ts.map +1 -1
  6. package/dist/learning/agent-optimizer.js +1 -0
  7. package/dist/learning/agent-optimizer.js.map +1 -1
  8. package/dist/learning/metrics.d.ts.map +1 -1
  9. package/dist/learning/metrics.js.map +1 -1
  10. package/dist/learning/postgres-trace-store.d.ts.map +1 -1
  11. package/dist/learning/postgres-trace-store.js.map +1 -1
  12. package/dist/llm/anthropic.d.ts.map +1 -1
  13. package/dist/llm/anthropic.js +2 -39
  14. package/dist/llm/anthropic.js.map +1 -1
  15. package/dist/llm/azure.d.ts +6 -21
  16. package/dist/llm/azure.d.ts.map +1 -1
  17. package/dist/llm/azure.js +5 -305
  18. package/dist/llm/azure.js.map +1 -1
  19. package/dist/llm/errors.d.ts +5 -1
  20. package/dist/llm/errors.d.ts.map +1 -1
  21. package/dist/llm/errors.js +47 -7
  22. package/dist/llm/errors.js.map +1 -1
  23. package/dist/llm/index.d.ts +2 -1
  24. package/dist/llm/index.d.ts.map +1 -1
  25. package/dist/llm/index.js +2 -1
  26. package/dist/llm/index.js.map +1 -1
  27. package/dist/llm/openai-compatible-base.d.ts +20 -0
  28. package/dist/llm/openai-compatible-base.d.ts.map +1 -0
  29. package/dist/llm/openai-compatible-base.js +268 -0
  30. package/dist/llm/openai-compatible-base.js.map +1 -0
  31. package/dist/llm/openai.d.ts +4 -18
  32. package/dist/llm/openai.d.ts.map +1 -1
  33. package/dist/llm/openai.js +2 -300
  34. package/dist/llm/openai.js.map +1 -1
  35. package/dist/logger.d.ts.map +1 -1
  36. package/dist/logger.js.map +1 -1
  37. package/dist/runtime.d.ts.map +1 -1
  38. package/dist/runtime.js +3 -1
  39. package/dist/runtime.js.map +1 -1
  40. package/dist/security/classifiers/llm-classifier.d.ts.map +1 -1
  41. package/dist/security/classifiers/llm-classifier.js +16 -2
  42. package/dist/security/classifiers/llm-classifier.js.map +1 -1
  43. package/dist/security/classifiers/local-classifier.d.ts.map +1 -1
  44. package/dist/security/classifiers/local-classifier.js +16 -6
  45. package/dist/security/classifiers/local-classifier.js.map +1 -1
  46. package/dist/security/prompt-injection-detector.d.ts.map +1 -1
  47. package/dist/security/prompt-injection-detector.js +13 -1
  48. package/dist/security/prompt-injection-detector.js.map +1 -1
  49. package/dist/tools/sql-query.d.ts.map +1 -1
  50. package/dist/tools/sql-query.js +12 -2
  51. package/dist/tools/sql-query.js.map +1 -1
  52. package/package.json +1 -1
@@ -0,0 +1,268 @@
1
+ import { ErrorCode } from '@cogitator-ai/types';
2
+ import { BaseLLMBackend } from './base';
3
+ import { LLMError, wrapSDKError, llmInvalidResponse } from './errors';
4
+ export class OpenAICompatibleBackend extends BaseLLMBackend {
5
+ resolveModel(request) {
6
+ return request.model;
7
+ }
8
+ async chat(request) {
9
+ const model = this.resolveModel(request);
10
+ const ctx = {
11
+ provider: this.provider,
12
+ model,
13
+ endpoint: this.client.baseURL,
14
+ };
15
+ let response;
16
+ try {
17
+ response = await this.client.chat.completions.create({
18
+ model,
19
+ messages: this.convertMessages(request.messages),
20
+ tools: request.tools
21
+ ? request.tools.map((t) => ({
22
+ type: 'function',
23
+ function: {
24
+ name: t.name,
25
+ description: t.description,
26
+ parameters: t.parameters,
27
+ },
28
+ }))
29
+ : undefined,
30
+ tool_choice: this.convertToolChoice(request.toolChoice),
31
+ temperature: request.temperature,
32
+ top_p: request.topP,
33
+ max_tokens: request.maxTokens,
34
+ stop: request.stop,
35
+ response_format: this.convertResponseFormat(request.responseFormat),
36
+ });
37
+ }
38
+ catch (e) {
39
+ throw this.wrapAPIError(e, ctx);
40
+ }
41
+ const choice = response.choices[0];
42
+ if (!choice) {
43
+ throw llmInvalidResponse(ctx, `No choices in ${this.provider} response`);
44
+ }
45
+ const message = choice.message;
46
+ const toolCalls = message.tool_calls
47
+ ?.filter((tc) => tc.type === 'function')
48
+ .map((tc) => ({
49
+ id: tc.id,
50
+ name: tc.function.name,
51
+ arguments: this.tryParseJson(tc.function.arguments, ctx),
52
+ }));
53
+ return {
54
+ id: response.id,
55
+ content: message.content ?? '',
56
+ toolCalls,
57
+ finishReason: this.mapFinishReason(choice.finish_reason),
58
+ usage: {
59
+ inputTokens: response.usage?.prompt_tokens ?? 0,
60
+ outputTokens: response.usage?.completion_tokens ?? 0,
61
+ totalTokens: response.usage?.total_tokens ?? 0,
62
+ },
63
+ };
64
+ }
65
+ async *chatStream(request) {
66
+ const model = this.resolveModel(request);
67
+ const ctx = {
68
+ provider: this.provider,
69
+ model,
70
+ endpoint: this.client.baseURL,
71
+ };
72
+ let stream;
73
+ try {
74
+ stream = await this.client.chat.completions.create({
75
+ model,
76
+ messages: this.convertMessages(request.messages),
77
+ tools: request.tools
78
+ ? request.tools.map((t) => ({
79
+ type: 'function',
80
+ function: {
81
+ name: t.name,
82
+ description: t.description,
83
+ parameters: t.parameters,
84
+ },
85
+ }))
86
+ : undefined,
87
+ tool_choice: this.convertToolChoice(request.toolChoice),
88
+ temperature: request.temperature,
89
+ top_p: request.topP,
90
+ max_tokens: request.maxTokens,
91
+ stop: request.stop,
92
+ stream: true,
93
+ stream_options: { include_usage: true },
94
+ response_format: this.convertResponseFormat(request.responseFormat),
95
+ });
96
+ }
97
+ catch (e) {
98
+ throw this.wrapAPIError(e, ctx);
99
+ }
100
+ const toolCallsAccum = new Map();
101
+ const toolCallArgsAccum = new Map();
102
+ for await (const chunk of stream) {
103
+ const choice = chunk.choices[0];
104
+ if (!choice && chunk.usage) {
105
+ yield {
106
+ id: chunk.id,
107
+ delta: {},
108
+ usage: {
109
+ inputTokens: chunk.usage.prompt_tokens,
110
+ outputTokens: chunk.usage.completion_tokens,
111
+ totalTokens: chunk.usage.total_tokens,
112
+ },
113
+ };
114
+ continue;
115
+ }
116
+ if (!choice)
117
+ continue;
118
+ const delta = choice.delta;
119
+ if (delta.tool_calls) {
120
+ for (const tc of delta.tool_calls) {
121
+ const existing = toolCallsAccum.get(tc.index) ?? {};
122
+ toolCallsAccum.set(tc.index, {
123
+ id: tc.id ?? existing.id,
124
+ name: tc.function?.name ?? existing.name,
125
+ });
126
+ if (tc.function?.arguments) {
127
+ const existingArgs = toolCallArgsAccum.get(tc.index) ?? '';
128
+ toolCallArgsAccum.set(tc.index, existingArgs + tc.function.arguments);
129
+ }
130
+ }
131
+ }
132
+ let finalToolCalls;
133
+ if (choice.finish_reason === 'tool_calls') {
134
+ finalToolCalls = Array.from(toolCallsAccum.entries()).map(([index, partial]) => ({
135
+ id: partial.id ?? '',
136
+ name: partial.name ?? '',
137
+ arguments: this.tryParseJson(toolCallArgsAccum.get(index) ?? '{}', ctx),
138
+ }));
139
+ }
140
+ yield {
141
+ id: chunk.id,
142
+ delta: {
143
+ content: delta.content ?? undefined,
144
+ toolCalls: finalToolCalls,
145
+ },
146
+ finishReason: choice.finish_reason ? this.mapFinishReason(choice.finish_reason) : undefined,
147
+ };
148
+ }
149
+ }
150
+ convertMessages(messages) {
151
+ return messages.map((m) => {
152
+ switch (m.role) {
153
+ case 'system':
154
+ return {
155
+ role: 'system',
156
+ content: this.getTextContent(m.content),
157
+ };
158
+ case 'user':
159
+ return {
160
+ role: 'user',
161
+ content: this.convertContent(m.content),
162
+ };
163
+ case 'assistant':
164
+ return {
165
+ role: 'assistant',
166
+ content: this.getTextContent(m.content),
167
+ };
168
+ case 'tool':
169
+ return {
170
+ role: 'tool',
171
+ content: this.getTextContent(m.content),
172
+ tool_call_id: m.toolCallId ?? '',
173
+ };
174
+ }
175
+ });
176
+ }
177
+ convertContent(content) {
178
+ if (typeof content === 'string') {
179
+ return content;
180
+ }
181
+ return content.map((part) => this.convertContentPart(part));
182
+ }
183
+ convertContentPart(part) {
184
+ switch (part.type) {
185
+ case 'text':
186
+ return { type: 'text', text: part.text };
187
+ case 'image_url':
188
+ return {
189
+ type: 'image_url',
190
+ image_url: {
191
+ url: part.image_url.url,
192
+ detail: part.image_url.detail,
193
+ },
194
+ };
195
+ case 'image_base64':
196
+ return {
197
+ type: 'image_url',
198
+ image_url: {
199
+ url: `data:${part.image_base64.media_type};base64,${part.image_base64.data}`,
200
+ },
201
+ };
202
+ }
203
+ }
204
+ getTextContent(content) {
205
+ if (typeof content === 'string') {
206
+ return content;
207
+ }
208
+ return content
209
+ .filter((part) => part.type === 'text')
210
+ .map((part) => part.text)
211
+ .join(' ');
212
+ }
213
+ mapFinishReason(reason) {
214
+ switch (reason) {
215
+ case 'stop':
216
+ return 'stop';
217
+ case 'tool_calls':
218
+ return 'tool_calls';
219
+ case 'length':
220
+ return 'length';
221
+ default:
222
+ return 'stop';
223
+ }
224
+ }
225
+ tryParseJson(str, ctx) {
226
+ try {
227
+ return JSON.parse(str);
228
+ }
229
+ catch (e) {
230
+ throw new LLMError(`Failed to parse tool call arguments: ${str.slice(0, 100)}`, ErrorCode.LLM_INVALID_RESPONSE, ctx, { cause: e instanceof Error ? e : undefined });
231
+ }
232
+ }
233
+ wrapAPIError(error, ctx) {
234
+ return wrapSDKError(error, ctx);
235
+ }
236
+ convertResponseFormat(format) {
237
+ if (!format)
238
+ return undefined;
239
+ switch (format.type) {
240
+ case 'text':
241
+ return { type: 'text' };
242
+ case 'json_object':
243
+ return { type: 'json_object' };
244
+ case 'json_schema':
245
+ return {
246
+ type: 'json_schema',
247
+ json_schema: {
248
+ name: format.jsonSchema.name,
249
+ description: format.jsonSchema.description,
250
+ schema: format.jsonSchema.schema,
251
+ strict: format.jsonSchema.strict ?? true,
252
+ },
253
+ };
254
+ }
255
+ }
256
+ convertToolChoice(choice) {
257
+ if (!choice)
258
+ return undefined;
259
+ if (typeof choice === 'string') {
260
+ return choice;
261
+ }
262
+ return {
263
+ type: 'function',
264
+ function: { name: choice.function.name },
265
+ };
266
+ }
267
+ }
268
+ //# sourceMappingURL=openai-compatible-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-compatible-base.js","sourceRoot":"","sources":["../../src/llm/openai-compatible-base.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,13 @@
1
- /**
2
- * OpenAI LLM Backend
3
- */
4
- import type { ChatRequest, ChatResponse, ChatStreamChunk } from '@cogitator-ai/types';
5
- import { BaseLLMBackend } from './base';
1
+ import OpenAI from 'openai';
2
+ import { OpenAICompatibleBackend } from './openai-compatible-base';
6
3
  interface OpenAIConfig {
7
4
  apiKey: string;
8
5
  baseUrl?: string;
9
6
  }
10
- export declare class OpenAIBackend extends BaseLLMBackend {
7
+ export declare class OpenAIBackend extends OpenAICompatibleBackend {
11
8
  readonly provider: "openai";
12
- private client;
9
+ protected client: OpenAI;
13
10
  constructor(config: OpenAIConfig);
14
- chat(request: ChatRequest): Promise<ChatResponse>;
15
- chatStream(request: ChatRequest): AsyncGenerator<ChatStreamChunk>;
16
- private convertMessages;
17
- private convertContent;
18
- private convertContentPart;
19
- private getTextContent;
20
- private mapFinishReason;
21
- private tryParseJson;
22
- private wrapOpenAIError;
23
- private convertResponseFormat;
24
- private convertToolChoice;
25
11
  }
26
12
  export {};
27
13
  //# sourceMappingURL=openai.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/llm/openai.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EAOhB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAGxC,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAc,SAAQ,cAAc;IAC/C,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IACtC,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,YAAY;IAQ1B,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA4DhD,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,eAAe,CAAC;IA6FxE,OAAO,CAAC,eAAe;IA4BvB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,eAAe;IAgDvB,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,iBAAiB;CAc1B"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/llm/openai.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAc,SAAQ,uBAAuB;IACxD,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IACtC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEb,MAAM,EAAE,YAAY;CAOjC"}
@@ -1,11 +1,6 @@
1
- /**
2
- * OpenAI LLM Backend
3
- */
4
1
  import OpenAI from 'openai';
5
- import { ErrorCode } from '@cogitator-ai/types';
6
- import { BaseLLMBackend } from './base';
7
- import { LLMError, llmInvalidResponse } from './errors';
8
- export class OpenAIBackend extends BaseLLMBackend {
2
+ import { OpenAICompatibleBackend } from './openai-compatible-base';
3
+ export class OpenAIBackend extends OpenAICompatibleBackend {
9
4
  provider = 'openai';
10
5
  client;
11
6
  constructor(config) {
@@ -15,298 +10,5 @@ export class OpenAIBackend extends BaseLLMBackend {
15
10
  baseURL: config.baseUrl,
16
11
  });
17
12
  }
18
- async chat(request) {
19
- const ctx = {
20
- provider: this.provider,
21
- model: request.model,
22
- endpoint: this.client.baseURL,
23
- };
24
- let response;
25
- try {
26
- response = await this.client.chat.completions.create({
27
- model: request.model,
28
- messages: this.convertMessages(request.messages),
29
- tools: request.tools
30
- ? request.tools.map((t) => ({
31
- type: 'function',
32
- function: {
33
- name: t.name,
34
- description: t.description,
35
- parameters: t.parameters,
36
- },
37
- }))
38
- : undefined,
39
- tool_choice: this.convertToolChoice(request.toolChoice),
40
- temperature: request.temperature,
41
- top_p: request.topP,
42
- max_tokens: request.maxTokens,
43
- stop: request.stop,
44
- response_format: this.convertResponseFormat(request.responseFormat),
45
- });
46
- }
47
- catch (e) {
48
- throw this.wrapOpenAIError(e, ctx);
49
- }
50
- const choice = response.choices[0];
51
- if (!choice) {
52
- throw llmInvalidResponse(ctx, 'No choices in OpenAI response');
53
- }
54
- const message = choice.message;
55
- const toolCalls = message.tool_calls
56
- ?.filter((tc) => tc.type === 'function')
57
- .map((tc) => ({
58
- id: tc.id,
59
- name: tc.function.name,
60
- arguments: this.tryParseJson(tc.function.arguments, ctx),
61
- }));
62
- return {
63
- id: response.id,
64
- content: message.content ?? '',
65
- toolCalls,
66
- finishReason: this.mapFinishReason(choice.finish_reason),
67
- usage: {
68
- inputTokens: response.usage?.prompt_tokens ?? 0,
69
- outputTokens: response.usage?.completion_tokens ?? 0,
70
- totalTokens: response.usage?.total_tokens ?? 0,
71
- },
72
- };
73
- }
74
- async *chatStream(request) {
75
- const ctx = {
76
- provider: this.provider,
77
- model: request.model,
78
- endpoint: this.client.baseURL,
79
- };
80
- let stream;
81
- try {
82
- stream = await this.client.chat.completions.create({
83
- model: request.model,
84
- messages: this.convertMessages(request.messages),
85
- tools: request.tools
86
- ? request.tools.map((t) => ({
87
- type: 'function',
88
- function: {
89
- name: t.name,
90
- description: t.description,
91
- parameters: t.parameters,
92
- },
93
- }))
94
- : undefined,
95
- tool_choice: this.convertToolChoice(request.toolChoice),
96
- temperature: request.temperature,
97
- top_p: request.topP,
98
- max_tokens: request.maxTokens,
99
- stop: request.stop,
100
- stream: true,
101
- stream_options: { include_usage: true },
102
- response_format: this.convertResponseFormat(request.responseFormat),
103
- });
104
- }
105
- catch (e) {
106
- throw this.wrapOpenAIError(e, ctx);
107
- }
108
- const toolCallsAccum = new Map();
109
- const toolCallArgsAccum = new Map();
110
- for await (const chunk of stream) {
111
- const choice = chunk.choices[0];
112
- if (!choice && chunk.usage) {
113
- yield {
114
- id: chunk.id,
115
- delta: {},
116
- usage: {
117
- inputTokens: chunk.usage.prompt_tokens,
118
- outputTokens: chunk.usage.completion_tokens,
119
- totalTokens: chunk.usage.total_tokens,
120
- },
121
- };
122
- continue;
123
- }
124
- if (!choice)
125
- continue;
126
- const delta = choice.delta;
127
- if (delta.tool_calls) {
128
- for (const tc of delta.tool_calls) {
129
- const existing = toolCallsAccum.get(tc.index) ?? {};
130
- toolCallsAccum.set(tc.index, {
131
- id: tc.id ?? existing.id,
132
- name: tc.function?.name ?? existing.name,
133
- });
134
- if (tc.function?.arguments) {
135
- const existingArgs = toolCallArgsAccum.get(tc.index) ?? '';
136
- toolCallArgsAccum.set(tc.index, existingArgs + tc.function.arguments);
137
- }
138
- }
139
- }
140
- let finalToolCalls;
141
- if (choice.finish_reason === 'tool_calls') {
142
- finalToolCalls = Array.from(toolCallsAccum.entries()).map(([index, partial]) => ({
143
- id: partial.id ?? '',
144
- name: partial.name ?? '',
145
- arguments: this.tryParseJson(toolCallArgsAccum.get(index) ?? '{}', ctx),
146
- }));
147
- }
148
- yield {
149
- id: chunk.id,
150
- delta: {
151
- content: delta.content ?? undefined,
152
- toolCalls: finalToolCalls,
153
- },
154
- finishReason: choice.finish_reason ? this.mapFinishReason(choice.finish_reason) : undefined,
155
- };
156
- }
157
- }
158
- convertMessages(messages) {
159
- return messages.map((m) => {
160
- switch (m.role) {
161
- case 'system':
162
- return {
163
- role: 'system',
164
- content: this.getTextContent(m.content),
165
- };
166
- case 'user':
167
- return {
168
- role: 'user',
169
- content: this.convertContent(m.content),
170
- };
171
- case 'assistant':
172
- return {
173
- role: 'assistant',
174
- content: this.getTextContent(m.content),
175
- };
176
- case 'tool':
177
- return {
178
- role: 'tool',
179
- content: this.getTextContent(m.content),
180
- tool_call_id: m.toolCallId ?? '',
181
- };
182
- }
183
- });
184
- }
185
- convertContent(content) {
186
- if (typeof content === 'string') {
187
- return content;
188
- }
189
- return content.map((part) => this.convertContentPart(part));
190
- }
191
- convertContentPart(part) {
192
- switch (part.type) {
193
- case 'text':
194
- return { type: 'text', text: part.text };
195
- case 'image_url':
196
- return {
197
- type: 'image_url',
198
- image_url: {
199
- url: part.image_url.url,
200
- detail: part.image_url.detail,
201
- },
202
- };
203
- case 'image_base64':
204
- return {
205
- type: 'image_url',
206
- image_url: {
207
- url: `data:${part.image_base64.media_type};base64,${part.image_base64.data}`,
208
- },
209
- };
210
- }
211
- }
212
- getTextContent(content) {
213
- if (typeof content === 'string') {
214
- return content;
215
- }
216
- return content
217
- .filter((part) => part.type === 'text')
218
- .map((part) => part.text)
219
- .join(' ');
220
- }
221
- mapFinishReason(reason) {
222
- switch (reason) {
223
- case 'stop':
224
- return 'stop';
225
- case 'tool_calls':
226
- return 'tool_calls';
227
- case 'length':
228
- return 'length';
229
- default:
230
- return 'stop';
231
- }
232
- }
233
- tryParseJson(str, ctx) {
234
- try {
235
- return JSON.parse(str);
236
- }
237
- catch (e) {
238
- throw new LLMError(`Failed to parse tool call arguments: ${str.slice(0, 100)}`, ErrorCode.LLM_INVALID_RESPONSE, ctx, { cause: e instanceof Error ? e : undefined });
239
- }
240
- }
241
- wrapOpenAIError(error, ctx) {
242
- if (error instanceof OpenAI.APIError) {
243
- const statusCode = error.status ?? 500;
244
- ctx.statusCode = statusCode;
245
- ctx.responseBody = error.message;
246
- if (statusCode === 429) {
247
- return new LLMError('Rate limit exceeded', ErrorCode.LLM_RATE_LIMITED, ctx, {
248
- cause: error,
249
- retryable: true,
250
- retryAfter: 60000,
251
- });
252
- }
253
- if (statusCode === 401 || statusCode === 403) {
254
- return new LLMError(`Authentication failed: ${error.message}`, ErrorCode.LLM_UNAVAILABLE, ctx, {
255
- cause: error,
256
- retryable: false,
257
- });
258
- }
259
- if (statusCode >= 500) {
260
- return new LLMError(`Server error: ${error.message}`, ErrorCode.LLM_UNAVAILABLE, ctx, {
261
- cause: error,
262
- retryable: true,
263
- retryAfter: 5000,
264
- });
265
- }
266
- return new LLMError(error.message, ErrorCode.LLM_INVALID_RESPONSE, ctx, {
267
- cause: error,
268
- retryable: false,
269
- });
270
- }
271
- if (error instanceof Error) {
272
- return new LLMError(`Request failed: ${error.message}`, ErrorCode.LLM_UNAVAILABLE, ctx, {
273
- cause: error,
274
- retryable: true,
275
- retryAfter: 1000,
276
- });
277
- }
278
- return new LLMError(`Unknown error: ${String(error)}`, ErrorCode.INTERNAL_ERROR, ctx);
279
- }
280
- convertResponseFormat(format) {
281
- if (!format)
282
- return undefined;
283
- switch (format.type) {
284
- case 'text':
285
- return { type: 'text' };
286
- case 'json_object':
287
- return { type: 'json_object' };
288
- case 'json_schema':
289
- return {
290
- type: 'json_schema',
291
- json_schema: {
292
- name: format.jsonSchema.name,
293
- description: format.jsonSchema.description,
294
- schema: format.jsonSchema.schema,
295
- strict: format.jsonSchema.strict ?? true,
296
- },
297
- };
298
- }
299
- }
300
- convertToolChoice(choice) {
301
- if (!choice)
302
- return undefined;
303
- if (typeof choice === 'string') {
304
- return choice;
305
- }
306
- return {
307
- type: 'function',
308
- function: { name: choice.function.name },
309
- };
310
- }
311
13
  }
312
14
  //# sourceMappingURL=openai.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/llm/openai.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAY5B,OAAO,EAAE,SAAS,EAAkB,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAwB,MAAM,UAAU,CAAC;AAO9E,MAAM,OAAO,aAAc,SAAQ,cAAc;IACtC,QAAQ,GAAG,QAAiB,CAAC;IAC9B,MAAM,CAAS;IAEvB,YAAY,MAAoB;QAC9B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAoB;QAC7B,MAAM,GAAG,GAAoB;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;SAC9B,CAAC;QAEF,IAAI,QAAoC,CAAC;QACzC,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACnD,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAChD,KAAK,EAAE,OAAO,CAAC,KAAK;oBAClB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACxB,IAAI,EAAE,UAAmB;wBACzB,QAAQ,EAAE;4BACR,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,WAAW,EAAE,CAAC,CAAC,WAAW;4BAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;yBACzB;qBACF,CAAC,CAAC;oBACL,CAAC,CAAC,SAAS;gBACb,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC;gBACvD,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,KAAK,EAAE,OAAO,CAAC,IAAI;gBACnB,UAAU,EAAE,OAAO,CAAC,SAAS;gBAC7B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,eAAe,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,cAAc,CAAC;aACpE,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,kBAAkB,CAAC,GAAG,EAAE,+BAA+B,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAE/B,MAAM,SAAS,GAA2B,OAAO,CAAC,UAAU;YAC1D,EAAE,MAAM,CAAC,CAAC,EAAE,EAA0C,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC;aAC/E,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACZ,EAAE,EAAE,EAAE,CAAC,EAAE;YACT,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI;YACtB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC;SACzD,CAAC,CAAC,CAAC;QAEN,OAAO;YACL,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,SAAS;YACT,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC;YACxD,KAAK,EAAE;gBACL,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;gBAC/C,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC;gBACpD,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC;aAC/C;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,CAAC,UAAU,CAAC,OAAoB;QACpC,MAAM,GAAG,GAAoB;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;SAC9B,CAAC;QAEF,IAAI,MAAsD,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACjD,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAChD,KAAK,EAAE,OAAO,CAAC,KAAK;oBAClB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACxB,IAAI,EAAE,UAAmB;wBACzB,QAAQ,EAAE;4BACR,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,WAAW,EAAE,CAAC,CAAC,WAAW;4BAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;yBACzB;qBACF,CAAC,CAAC;oBACL,CAAC,CAAC,SAAS;gBACb,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC;gBACvD,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,KAAK,EAAE,OAAO,CAAC,IAAI;gBACnB,UAAU,EAAE,OAAO,CAAC,SAAS;gBAC7B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,IAAI;gBACZ,cAAc,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;gBACvC,eAAe,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,cAAc,CAAC;aACpE,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,GAAG,EAA0C,CAAC;QACzE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;QAEpD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAEhC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC3B,MAAM;oBACJ,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,KAAK,EAAE,EAAE;oBACT,KAAK,EAAE;wBACL,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa;wBACtC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,iBAAiB;wBAC3C,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY;qBACtC;iBACF,CAAC;gBACF,SAAS;YACX,CAAC;YAED,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAE3B,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;oBAClC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACpD,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE;wBAC3B,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE;wBACxB,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI;qBACzC,CAAC,CAAC;oBAEH,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;wBAC3B,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;wBAC3D,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBACxE,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,cAAsC,CAAC;YAC3C,IAAI,MAAM,CAAC,aAAa,KAAK,YAAY,EAAE,CAAC;gBAC1C,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC/E,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE;oBACpB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;oBACxB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,GAAG,CAAC;iBACxE,CAAC,CAAC,CAAC;YACN,CAAC;YAED,MAAM;gBACJ,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,KAAK,EAAE;oBACL,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS;oBACnC,SAAS,EAAE,cAAc;iBAC1B;gBACD,YAAY,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;aAC5F,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,QAAmB;QACzC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAA0C,EAAE;YAChE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;gBACf,KAAK,QAAQ;oBACX,OAAO;wBACL,IAAI,EAAE,QAAiB;wBACvB,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;qBACxC,CAAC;gBACJ,KAAK,MAAM;oBACT,OAAO;wBACL,IAAI,EAAE,MAAe;wBACrB,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;qBACxC,CAAC;gBACJ,KAAK,WAAW;oBACd,OAAO;wBACL,IAAI,EAAE,WAAoB;wBAC1B,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;qBACxC,CAAC;gBACJ,KAAK,MAAM;oBACT,OAAO;wBACL,IAAI,EAAE,MAAe;wBACrB,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;wBACvC,YAAY,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE;qBACjC,CAAC;YACN,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CACpB,OAAuB;QAEvB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEO,kBAAkB,CAAC,IAAiB;QAC1C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM;gBACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAC3C,KAAK,WAAW;gBACd,OAAO;oBACL,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE;wBACT,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG;wBACvB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;qBAC9B;iBACF,CAAC;YACJ,KAAK,cAAc;gBACjB,OAAO;oBACL,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE;wBACT,GAAG,EAAE,QAAQ,IAAI,CAAC,YAAY,CAAC,UAAU,WAAW,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;qBAC7E;iBACF,CAAC;QACN,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,OAAuB;QAC5C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,IAAI,EAA0C,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;aAC9E,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;aACxB,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAEO,eAAe,CAAC,MAAqB;QAC3C,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC;YAChB,KAAK,YAAY;gBACf,OAAO,YAAY,CAAC;YACtB,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAC;YAClB;gBACE,OAAO,MAAM,CAAC;QAClB,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,GAAW,EAAE,GAAoB;QACpD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QACpD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,QAAQ,CAChB,wCAAwC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAC3D,SAAS,CAAC,oBAAoB,EAC9B,GAAG,EACH,EAAE,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAC9C,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,KAAc,EAAE,GAAoB;QAC1D,IAAI,KAAK,YAAY,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;YACvC,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;YAC5B,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;YAEjC,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvB,OAAO,IAAI,QAAQ,CAAC,qBAAqB,EAAE,SAAS,CAAC,gBAAgB,EAAE,GAAG,EAAE;oBAC1E,KAAK,EAAE,KAAK;oBACZ,SAAS,EAAE,IAAI;oBACf,UAAU,EAAE,KAAK;iBAClB,CAAC,CAAC;YACL,CAAC;YACD,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBAC7C,OAAO,IAAI,QAAQ,CACjB,0BAA0B,KAAK,CAAC,OAAO,EAAE,EACzC,SAAS,CAAC,eAAe,EACzB,GAAG,EACH;oBACE,KAAK,EAAE,KAAK;oBACZ,SAAS,EAAE,KAAK;iBACjB,CACF,CAAC;YACJ,CAAC;YACD,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;gBACtB,OAAO,IAAI,QAAQ,CAAC,iBAAiB,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,eAAe,EAAE,GAAG,EAAE;oBACpF,KAAK,EAAE,KAAK;oBACZ,SAAS,EAAE,IAAI;oBACf,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;YACL,CAAC;YACD,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,oBAAoB,EAAE,GAAG,EAAE;gBACtE,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,IAAI,QAAQ,CAAC,mBAAmB,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,eAAe,EAAE,GAAG,EAAE;gBACtF,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,kBAAkB,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACxF,CAAC;IAEO,qBAAqB,CAC3B,MAAqC;QAErC,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAE9B,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,MAAM;gBACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC1B,KAAK,aAAa;gBAChB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;YACjC,KAAK,aAAa;gBAChB,OAAO;oBACL,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE;wBACX,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI;wBAC5B,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW;wBAC1C,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM;wBAChC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI;qBACzC;iBACF,CAAC;QACN,CAAC;IACH,CAAC;IAEO,iBAAiB,CACvB,MAA8B;QAE9B,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAE9B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;SACzC,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/llm/openai.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAOnE,MAAM,OAAO,aAAc,SAAQ,uBAAuB;IAC/C,QAAQ,GAAG,QAAiB,CAAC;IAC5B,MAAM,CAAS;IAEzB,YAAY,MAAoB;QAC9B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,8DAA8D;IAC9D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD;AAuCD,qBAAa,MAAM;IACjB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,MAAM,CAAC,CAA+C;IAC9D,OAAO,CAAC,OAAO,CAAa;gBAEhB,OAAO,GAAE,aAAkB,EAAE,OAAO,GAAE,UAAe;IAQjE,OAAO,CAAC,GAAG;IA2BX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIlD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIjD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIjD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIlD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM;CAYnC;AASD,wBAAgB,SAAS,IAAI,MAAM,CAQlC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAE5D"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,8DAA8D;IAC9D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD;AAuCD,qBAAa,MAAM;IACjB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,MAAM,CAAC,CAA+C;IAC9D,OAAO,CAAC,OAAO,CAAa;gBAEhB,OAAO,GAAE,aAAkB,EAAE,OAAO,GAAE,UAAe;IAQjE,OAAO,CAAC,GAAG;IA2BX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIlD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIjD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIjD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAIlD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM;CAYnC;AASD,wBAAgB,SAAS,IAAI,MAAM,CASlC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAE5D"}