conversationalist 0.0.10 → 0.0.11

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 (67) hide show
  1. package/README.md +89 -15
  2. package/dist/adapters/anthropic/index.d.ts.map +1 -1
  3. package/dist/adapters/anthropic/index.js +255 -2
  4. package/dist/adapters/anthropic/index.js.map +8 -4
  5. package/dist/adapters/gemini/index.d.ts.map +1 -1
  6. package/dist/adapters/gemini/index.js +255 -3
  7. package/dist/adapters/gemini/index.js.map +8 -4
  8. package/dist/adapters/openai/index.d.ts.map +1 -1
  9. package/dist/adapters/openai/index.js +247 -3
  10. package/dist/adapters/openai/index.js.map +8 -4
  11. package/dist/context.d.ts +6 -0
  12. package/dist/context.d.ts.map +1 -1
  13. package/dist/conversation/append.d.ts +5 -0
  14. package/dist/conversation/append.d.ts.map +1 -1
  15. package/dist/conversation/create.d.ts +9 -0
  16. package/dist/conversation/create.d.ts.map +1 -1
  17. package/dist/conversation/index.d.ts +8 -3
  18. package/dist/conversation/index.d.ts.map +1 -1
  19. package/dist/conversation/integrity.d.ts +16 -0
  20. package/dist/conversation/integrity.d.ts.map +1 -0
  21. package/dist/conversation/modify.d.ts +8 -2
  22. package/dist/conversation/modify.d.ts.map +1 -1
  23. package/dist/conversation/serialization.d.ts +0 -17
  24. package/dist/conversation/serialization.d.ts.map +1 -1
  25. package/dist/conversation/system-messages.d.ts.map +1 -1
  26. package/dist/conversation/tool-interactions.d.ts +45 -0
  27. package/dist/conversation/tool-interactions.d.ts.map +1 -0
  28. package/dist/conversation/transform.d.ts.map +1 -1
  29. package/dist/conversation/validation.d.ts +8 -0
  30. package/dist/conversation/validation.d.ts.map +1 -0
  31. package/dist/errors.d.ts +6 -1
  32. package/dist/errors.d.ts.map +1 -1
  33. package/dist/export/index.js +249 -12
  34. package/dist/export/index.js.map +10 -6
  35. package/dist/history.d.ts +4 -1
  36. package/dist/history.d.ts.map +1 -1
  37. package/dist/index.d.ts +2 -2
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +604 -231
  40. package/dist/index.js.map +24 -13
  41. package/dist/markdown/index.js +595 -215
  42. package/dist/markdown/index.js.map +22 -12
  43. package/dist/schemas/index.js +35 -19
  44. package/dist/schemas/index.js.map +3 -3
  45. package/dist/schemas.d.ts +15 -35
  46. package/dist/schemas.d.ts.map +1 -1
  47. package/dist/streaming.d.ts.map +1 -1
  48. package/dist/types.d.ts +0 -4
  49. package/dist/types.d.ts.map +1 -1
  50. package/dist/utilities/index.d.ts +0 -1
  51. package/dist/utilities/index.d.ts.map +1 -1
  52. package/dist/utilities/markdown.d.ts.map +1 -1
  53. package/dist/utilities/tool-calls.d.ts +2 -6
  54. package/dist/utilities/tool-calls.d.ts.map +1 -1
  55. package/dist/utilities/tool-results.d.ts.map +1 -1
  56. package/dist/utilities/transient.d.ts.map +1 -1
  57. package/dist/utilities.d.ts +0 -1
  58. package/dist/utilities.d.ts.map +1 -1
  59. package/dist/versioning/index.d.ts +0 -1
  60. package/dist/versioning/index.d.ts.map +1 -1
  61. package/dist/versioning/index.js +1 -52
  62. package/dist/versioning/index.js.map +4 -5
  63. package/dist/with-conversation.d.ts +4 -1
  64. package/dist/with-conversation.d.ts.map +1 -1
  65. package/package.json +6 -4
  66. package/dist/conversation.d.ts +0 -109
  67. package/dist/conversation.d.ts.map +0 -1
@@ -1,3 +1,247 @@
1
+ // src/errors.ts
2
+ class ConversationalistError extends Error {
3
+ code;
4
+ context;
5
+ cause;
6
+ constructor(code, message, options) {
7
+ super(message);
8
+ this.name = "ConversationalistError";
9
+ this.code = code;
10
+ this.context = options?.context;
11
+ this.cause = options?.cause;
12
+ if (Error.captureStackTrace) {
13
+ Error.captureStackTrace(this, ConversationalistError);
14
+ }
15
+ }
16
+ toDetailedString() {
17
+ const parts = [`[${this.code}] ${this.message}`];
18
+ if (this.context && Object.keys(this.context).length > 0) {
19
+ parts.push(`Context: ${JSON.stringify(this.context, null, 2)}`);
20
+ }
21
+ if (this.cause) {
22
+ parts.push(`Caused by: ${this.cause.message}`);
23
+ }
24
+ return parts.join(`
25
+ `);
26
+ }
27
+ }
28
+ function createValidationError(message, context, cause) {
29
+ return new ConversationalistError("error:validation", message, { context, cause });
30
+ }
31
+ function createIntegrityError(message, context) {
32
+ return new ConversationalistError("error:integrity", message, { context });
33
+ }
34
+
35
+ // src/schemas.ts
36
+ import { z } from "zod";
37
+ var isPlainObject = (value) => {
38
+ if (!value || typeof value !== "object")
39
+ return false;
40
+ const prototype = Reflect.getPrototypeOf(value);
41
+ return prototype === Object.prototype || prototype === null;
42
+ };
43
+ function toMultiModalContent(value) {
44
+ const result = { type: value.type };
45
+ if (value.text !== undefined)
46
+ result.text = value.text;
47
+ if (value.url !== undefined)
48
+ result.url = value.url;
49
+ if (value.mimeType !== undefined)
50
+ result.mimeType = value.mimeType;
51
+ return result;
52
+ }
53
+ var jsonValueSchema = z.lazy(() => {
54
+ const jsonObjectSchema = z.preprocess((value, ctx) => {
55
+ if (!isPlainObject(value)) {
56
+ ctx.addIssue({
57
+ code: z.ZodIssueCode.custom,
58
+ message: "expected a plain object"
59
+ });
60
+ return z.NEVER;
61
+ }
62
+ return value;
63
+ }, z.record(z.string(), jsonValueSchema));
64
+ return z.union([
65
+ z.string(),
66
+ z.number().refine((value) => Number.isFinite(value), {
67
+ message: "expected a finite number"
68
+ }),
69
+ z.boolean(),
70
+ z.null(),
71
+ z.array(jsonValueSchema),
72
+ jsonObjectSchema
73
+ ]);
74
+ });
75
+ var multiModalContentSchema = z.discriminatedUnion("type", [
76
+ z.object({
77
+ type: z.literal("text"),
78
+ text: z.string()
79
+ }),
80
+ z.object({
81
+ type: z.literal("image"),
82
+ url: z.string().url(),
83
+ mimeType: z.string().optional(),
84
+ text: z.string().optional()
85
+ })
86
+ ]).transform(toMultiModalContent);
87
+ var messageRoleSchema = z.enum([
88
+ "user",
89
+ "assistant",
90
+ "system",
91
+ "developer",
92
+ "tool-use",
93
+ "tool-result",
94
+ "snapshot"
95
+ ]);
96
+ var toolCallSchema = z.object({
97
+ id: z.string(),
98
+ name: z.string(),
99
+ arguments: jsonValueSchema
100
+ }).strict();
101
+ var toolResultSchema = z.object({
102
+ callId: z.string(),
103
+ outcome: z.enum(["success", "error"]),
104
+ content: jsonValueSchema
105
+ }).strict();
106
+ var tokenUsageSchema = z.object({
107
+ prompt: z.number().int().min(0),
108
+ completion: z.number().int().min(0),
109
+ total: z.number().int().min(0)
110
+ });
111
+ var messageInputSchema = z.object({
112
+ role: messageRoleSchema,
113
+ content: z.union([z.string(), z.array(multiModalContentSchema)]),
114
+ metadata: z.record(z.string(), jsonValueSchema).optional(),
115
+ hidden: z.boolean().optional(),
116
+ toolCall: toolCallSchema.optional(),
117
+ toolResult: toolResultSchema.optional(),
118
+ tokenUsage: tokenUsageSchema.optional(),
119
+ goalCompleted: z.boolean().optional()
120
+ }).strict();
121
+ var messageSchema = z.object({
122
+ id: z.string(),
123
+ role: messageRoleSchema,
124
+ content: z.union([z.string(), z.array(multiModalContentSchema)]),
125
+ position: z.number().int().min(0),
126
+ createdAt: z.string(),
127
+ metadata: z.record(z.string(), jsonValueSchema),
128
+ hidden: z.boolean(),
129
+ toolCall: toolCallSchema.optional(),
130
+ toolResult: toolResultSchema.optional(),
131
+ tokenUsage: tokenUsageSchema.optional(),
132
+ goalCompleted: z.boolean().optional()
133
+ }).strict();
134
+ var conversationStatusSchema = z.enum([
135
+ "active",
136
+ "archived",
137
+ "deleted"
138
+ ]);
139
+ var conversationShape = {
140
+ schemaVersion: z.number().int().min(1),
141
+ id: z.string(),
142
+ title: z.string().optional(),
143
+ status: conversationStatusSchema,
144
+ metadata: z.record(z.string(), jsonValueSchema),
145
+ ids: z.array(z.string()),
146
+ messages: z.record(z.string(), messageSchema),
147
+ createdAt: z.string(),
148
+ updatedAt: z.string()
149
+ };
150
+ var conversationSchema = z.object(conversationShape).strict();
151
+
152
+ // src/conversation/integrity.ts
153
+ function validateConversationIntegrity(conversation) {
154
+ const issues = [];
155
+ const seenIds = new Set;
156
+ conversation.ids.forEach((id, index) => {
157
+ if (seenIds.has(id)) {
158
+ issues.push({
159
+ code: "integrity:duplicate-message-id",
160
+ message: `duplicate message id in ids: ${id}`,
161
+ data: { id, position: index }
162
+ });
163
+ } else {
164
+ seenIds.add(id);
165
+ }
166
+ if (!conversation.messages[id]) {
167
+ issues.push({
168
+ code: "integrity:missing-message",
169
+ message: `missing message for id ${id}`,
170
+ data: { id, position: index }
171
+ });
172
+ }
173
+ });
174
+ for (const id of Object.keys(conversation.messages)) {
175
+ if (!seenIds.has(id)) {
176
+ issues.push({
177
+ code: "integrity:unlisted-message",
178
+ message: `message ${id} is not listed in ids`,
179
+ data: { id }
180
+ });
181
+ }
182
+ }
183
+ const toolUses = new Map;
184
+ conversation.ids.forEach((id, index) => {
185
+ const message = conversation.messages[id];
186
+ if (!message)
187
+ return;
188
+ if (message.role === "tool-use" && message.toolCall) {
189
+ if (toolUses.has(message.toolCall.id)) {
190
+ issues.push({
191
+ code: "integrity:duplicate-tool-call",
192
+ message: `duplicate toolCall.id ${message.toolCall.id}`,
193
+ data: { toolCallId: message.toolCall.id, messageId: message.id }
194
+ });
195
+ } else {
196
+ toolUses.set(message.toolCall.id, { position: index, messageId: message.id });
197
+ }
198
+ }
199
+ });
200
+ conversation.ids.forEach((id, index) => {
201
+ const message = conversation.messages[id];
202
+ if (!message)
203
+ return;
204
+ if (message.role === "tool-result" && message.toolResult) {
205
+ const toolUse = toolUses.get(message.toolResult.callId);
206
+ if (!toolUse) {
207
+ issues.push({
208
+ code: "integrity:orphan-tool-result",
209
+ message: `tool-result references missing tool-use ${message.toolResult.callId}`,
210
+ data: { callId: message.toolResult.callId, messageId: message.id }
211
+ });
212
+ } else if (toolUse.position >= index) {
213
+ issues.push({
214
+ code: "integrity:tool-result-before-call",
215
+ message: `tool-result ${message.toolResult.callId} occurs before tool-use`,
216
+ data: {
217
+ callId: message.toolResult.callId,
218
+ messageId: message.id,
219
+ toolUseMessageId: toolUse.messageId
220
+ }
221
+ });
222
+ }
223
+ }
224
+ });
225
+ return issues;
226
+ }
227
+ function assertConversationIntegrity(conversation) {
228
+ const issues = validateConversationIntegrity(conversation);
229
+ if (issues.length === 0)
230
+ return;
231
+ throw createIntegrityError("conversation integrity check failed", { issues });
232
+ }
233
+
234
+ // src/conversation/validation.ts
235
+ function assertConversationSafe(conversation) {
236
+ const parsed = conversationSchema.safeParse(conversation);
237
+ if (!parsed.success) {
238
+ throw createValidationError("conversation failed schema validation", {
239
+ issues: parsed.error.issues
240
+ });
241
+ }
242
+ assertConversationIntegrity(conversation);
243
+ }
244
+
1
245
  // src/utilities/message-store.ts
2
246
  function getOrderedMessages(conversation) {
3
247
  const ordered = [];
@@ -78,12 +322,19 @@ function toFunctionCallPart(toolCall) {
78
322
  let args;
79
323
  if (typeof toolCall.arguments === "string") {
80
324
  try {
81
- args = JSON.parse(toolCall.arguments);
325
+ const parsed = JSON.parse(toolCall.arguments);
326
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
327
+ args = parsed;
328
+ } else {
329
+ args = { _value: parsed };
330
+ }
82
331
  } catch {
83
332
  args = { _raw: toolCall.arguments };
84
333
  }
85
- } else {
334
+ } else if (toolCall.arguments && typeof toolCall.arguments === "object" && !Array.isArray(toolCall.arguments)) {
86
335
  args = toolCall.arguments;
336
+ } else {
337
+ args = { _value: toolCall.arguments };
87
338
  }
88
339
  return {
89
340
  functionCall: {
@@ -118,6 +369,7 @@ function extractSystemInstruction(messages) {
118
369
  };
119
370
  }
120
371
  function toGeminiMessages(conversation) {
372
+ assertConversationSafe(conversation);
121
373
  const ordered = getOrderedMessages(conversation);
122
374
  const systemInstruction = extractSystemInstruction(ordered);
123
375
  const toolCallNames = new Map;
@@ -188,4 +440,4 @@ export {
188
440
  toGeminiMessages
189
441
  };
190
442
 
191
- //# debugId=88465330F0A95D8664756E2164756E21
443
+ //# debugId=3CC11A8F1158A69264756E2164756E21
@@ -1,11 +1,15 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/utilities/message-store.ts", "../../../src/adapters/gemini/index.ts"],
3
+ "sources": ["../../../src/errors.ts", "../../../src/schemas.ts", "../../../src/conversation/integrity.ts", "../../../src/conversation/validation.ts", "../../../src/utilities/message-store.ts", "../../../src/adapters/gemini/index.ts"],
4
4
  "sourcesContent": [
5
+ "/**\n * Error codes for Conversationalist errors (kebab-case with `error:` prefix).\n */\nexport type ConversationalistErrorCode =\n | 'error:locked'\n | 'error:invalid-input'\n | 'error:invalid-position'\n | 'error:invalid-tool-reference'\n | 'error:duplicate-id'\n | 'error:not-found'\n | 'error:serialization'\n | 'error:validation'\n | 'error:integrity';\n\n/**\n * Base error class for all Conversationalist errors.\n *\n * Provides structured error information with error codes, context data,\n * and cause chains for better debugging.\n */\nexport class ConversationalistError extends Error {\n /** Structured error code */\n readonly code: ConversationalistErrorCode;\n\n /** Additional context data */\n readonly context?: Record<string, unknown> | undefined;\n\n /** Underlying cause (if any) */\n override readonly cause?: Error | undefined;\n\n constructor(\n code: ConversationalistErrorCode,\n message: string,\n options?: {\n context?: Record<string, unknown> | undefined;\n cause?: Error | undefined;\n },\n ) {\n super(message);\n this.name = 'ConversationalistError';\n this.code = code;\n this.context = options?.context;\n this.cause = options?.cause;\n\n // Maintain proper stack trace in V8 environments\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ConversationalistError);\n }\n }\n\n /**\n * Formats the error as a detailed string with code and context.\n */\n toDetailedString(): string {\n const parts = [`[${this.code}] ${this.message}`];\n\n if (this.context && Object.keys(this.context).length > 0) {\n parts.push(`Context: ${JSON.stringify(this.context, null, 2)}`);\n }\n\n if (this.cause) {\n parts.push(`Caused by: ${this.cause.message}`);\n }\n\n return parts.join('\\n');\n }\n}\n\n/**\n * Creates a lock error (ERR_LOCKED).\n * Thrown when a conversation is already being modified.\n */\nexport function createLockedError(conversationId: string): ConversationalistError {\n return new ConversationalistError(\n 'error:locked',\n `conversation ${conversationId} is locked (concurrent modification detected)`,\n { context: { conversationId } },\n );\n}\n\n/**\n * Creates an invalid input error (ERR_INVALID_INPUT).\n * Thrown when message input data is invalid.\n */\nexport function createInvalidInputError(\n message: string,\n context?: Record<string, unknown>,\n): ConversationalistError {\n return new ConversationalistError('error:invalid-input', message, { context });\n}\n\n/**\n * Creates an invalid position error (ERR_INVALID_POSITION).\n * Thrown when positions are non-contiguous or invalid.\n */\nexport function createInvalidPositionError(\n expected: number,\n actual: number,\n): ConversationalistError {\n return new ConversationalistError(\n 'error:invalid-position',\n `invalid position: expected ${expected}, got ${actual}`,\n { context: { expected, actual } },\n );\n}\n\n/**\n * Creates an invalid tool reference error (ERR_INVALID_TOOL_REFERENCE).\n * Thrown when a tool result references a non-existent tool-use message.\n */\nexport function createInvalidToolReferenceError(callId: string): ConversationalistError {\n return new ConversationalistError(\n 'error:invalid-tool-reference',\n `tool result references non-existent tool-use: ${callId}`,\n { context: { callId } },\n );\n}\n\n/**\n * Creates a duplicate ID error (ERR_DUPLICATE_ID).\n * Thrown when a conversation with the given ID already exists.\n */\nexport function createDuplicateIdError(id: string): ConversationalistError {\n return new ConversationalistError(\n 'error:duplicate-id',\n `conversation with id ${id} already exists`,\n { context: { id } },\n );\n}\n\n/**\n * Creates a not found error (ERR_NOT_FOUND).\n * Thrown when a conversation cannot be found.\n */\nexport function createNotFoundError(id: string): ConversationalistError {\n return new ConversationalistError(\n 'error:not-found',\n `conversation with id ${id} not found`,\n {\n context: { id },\n },\n );\n}\n\n/**\n * Creates a serialization error (ERR_SERIALIZATION).\n * Thrown when JSON serialization/deserialization fails.\n */\nexport function createSerializationError(\n message: string,\n cause?: Error,\n): ConversationalistError {\n return new ConversationalistError('error:serialization', message, { cause });\n}\n\n/**\n * Creates a validation error (ERR_VALIDATION).\n * Thrown when data validation fails (e.g., Zod schema validation).\n */\nexport function createValidationError(\n message: string,\n context?: Record<string, unknown>,\n cause?: Error,\n): ConversationalistError {\n return new ConversationalistError('error:validation', message, { context, cause });\n}\n\n/**\n * Creates an integrity error (ERR_INTEGRITY).\n * Thrown when conversation invariants are violated.\n */\nexport function createIntegrityError(\n message: string,\n context?: Record<string, unknown>,\n): ConversationalistError {\n return new ConversationalistError('error:integrity', message, { context });\n}\n",
6
+ "import type { MultiModalContent } from '@lasercat/homogenaize';\nimport { z } from 'zod';\n\nimport type {\n Conversation,\n ConversationStatus,\n JSONValue,\n Message,\n MessageInput,\n MessageRole,\n TokenUsage,\n ToolCall,\n ToolResult,\n} from './types';\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (!value || typeof value !== 'object') return false;\n const prototype = Reflect.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n};\n\ntype RawMultiModalContent = {\n type: 'text' | 'image';\n text?: string | undefined;\n url?: string | undefined;\n mimeType?: string | undefined;\n};\n\nfunction toMultiModalContent(value: RawMultiModalContent): MultiModalContent {\n const result: MultiModalContent = { type: value.type };\n if (value.text !== undefined) result.text = value.text;\n if (value.url !== undefined) result.url = value.url;\n if (value.mimeType !== undefined) result.mimeType = value.mimeType;\n return result;\n}\n\n/**\n * Zod schema for JSON-serializable values.\n */\nexport const jsonValueSchema: z.ZodType<JSONValue> = z.lazy(() => {\n const jsonObjectSchema = z.preprocess(\n (value, ctx) => {\n if (!isPlainObject(value)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'expected a plain object',\n });\n return z.NEVER;\n }\n return value;\n },\n z.record(z.string(), jsonValueSchema),\n );\n\n return z.union([\n z.string(),\n z.number().refine((value) => Number.isFinite(value), {\n message: 'expected a finite number',\n }),\n z.boolean(),\n z.null(),\n z.array(jsonValueSchema),\n jsonObjectSchema,\n ]);\n}) satisfies z.ZodType<JSONValue>;\n\n/**\n * Zod schema for multi-modal content parts (text or image).\n */\nexport const multiModalContentSchema = z\n .discriminatedUnion('type', [\n z.object({\n type: z.literal('text'),\n text: z.string(),\n }),\n z.object({\n type: z.literal('image'),\n url: z.string().url(),\n mimeType: z.string().optional(),\n text: z.string().optional(),\n }),\n ])\n .transform(toMultiModalContent) satisfies z.ZodType<MultiModalContent>;\n\n/**\n * Zod schema for valid message roles.\n */\nexport const messageRoleSchema = z.enum([\n 'user',\n 'assistant',\n 'system',\n 'developer',\n 'tool-use',\n 'tool-result',\n 'snapshot',\n]) satisfies z.ZodType<MessageRole>;\n\n/**\n * Zod schema for tool call metadata.\n */\nexport const toolCallSchema = z\n .object({\n id: z.string(),\n name: z.string(),\n arguments: jsonValueSchema,\n })\n .strict() satisfies z.ZodType<ToolCall>;\n\n/**\n * Zod schema for tool result metadata.\n */\nexport const toolResultSchema = z\n .object({\n callId: z.string(),\n outcome: z.enum(['success', 'error']),\n content: jsonValueSchema,\n })\n .strict() satisfies z.ZodType<ToolResult>;\n\n/**\n * Zod schema for token usage accounting.\n */\nexport const tokenUsageSchema = z.object({\n prompt: z.number().int().min(0),\n completion: z.number().int().min(0),\n total: z.number().int().min(0),\n}) satisfies z.ZodType<TokenUsage>;\n\n/**\n * Zod schema for message input payloads.\n */\nexport const messageInputSchema = z\n .object({\n role: messageRoleSchema,\n content: z.union([z.string(), z.array(multiModalContentSchema)]),\n metadata: z.record(z.string(), jsonValueSchema).optional(),\n hidden: z.boolean().optional(),\n toolCall: toolCallSchema.optional(),\n toolResult: toolResultSchema.optional(),\n tokenUsage: tokenUsageSchema.optional(),\n goalCompleted: z.boolean().optional(),\n })\n .strict() satisfies z.ZodType<MessageInput>;\n\n/**\n * Zod schema for messages.\n */\nexport const messageSchema = z\n .object({\n id: z.string(),\n role: messageRoleSchema,\n content: z.union([z.string(), z.array(multiModalContentSchema)]),\n position: z.number().int().min(0),\n createdAt: z.string(),\n metadata: z.record(z.string(), jsonValueSchema),\n hidden: z.boolean(),\n toolCall: toolCallSchema.optional(),\n toolResult: toolResultSchema.optional(),\n tokenUsage: tokenUsageSchema.optional(),\n goalCompleted: z.boolean().optional(),\n })\n .strict() satisfies z.ZodType<Message>;\n\n/**\n * Zod schema for conversation status values.\n */\nexport const conversationStatusSchema = z.enum([\n 'active',\n 'archived',\n 'deleted',\n]) satisfies z.ZodType<ConversationStatus>;\n\n/**\n * Raw conversation shape for storage systems that need direct access to fields.\n */\nexport const conversationShape = {\n schemaVersion: z.number().int().min(1),\n id: z.string(),\n title: z.string().optional(),\n status: conversationStatusSchema,\n metadata: z.record(z.string(), jsonValueSchema),\n ids: z.array(z.string()),\n messages: z.record(z.string(), messageSchema),\n createdAt: z.string(),\n updatedAt: z.string(),\n} as const;\n\n/**\n * Zod schema for serialized conversations.\n */\nexport const conversationSchema = z\n .object(conversationShape)\n .strict() satisfies z.ZodType<Conversation>;\n",
7
+ "import { createIntegrityError } from '../errors';\nimport type { Conversation } from '../types';\n\nexport type IntegrityIssueCode =\n | 'integrity:missing-message'\n | 'integrity:unlisted-message'\n | 'integrity:duplicate-message-id'\n | 'integrity:orphan-tool-result'\n | 'integrity:tool-result-before-call'\n | 'integrity:duplicate-tool-call';\n\nexport interface IntegrityIssue {\n code: IntegrityIssueCode;\n message: string;\n data?: Record<string, unknown> | undefined;\n}\n\n/**\n * Validates conversation invariants and returns a list of issues.\n */\nexport function validateConversationIntegrity(\n conversation: Conversation,\n): IntegrityIssue[] {\n const issues: IntegrityIssue[] = [];\n const seenIds = new Set<string>();\n\n conversation.ids.forEach((id, index) => {\n if (seenIds.has(id)) {\n issues.push({\n code: 'integrity:duplicate-message-id',\n message: `duplicate message id in ids: ${id}`,\n data: { id, position: index },\n });\n } else {\n seenIds.add(id);\n }\n\n if (!conversation.messages[id]) {\n issues.push({\n code: 'integrity:missing-message',\n message: `missing message for id ${id}`,\n data: { id, position: index },\n });\n }\n });\n\n for (const id of Object.keys(conversation.messages)) {\n if (!seenIds.has(id)) {\n issues.push({\n code: 'integrity:unlisted-message',\n message: `message ${id} is not listed in ids`,\n data: { id },\n });\n }\n }\n\n const toolUses = new Map<string, { position: number; messageId: string }>();\n\n conversation.ids.forEach((id, index) => {\n const message = conversation.messages[id];\n if (!message) return;\n\n if (message.role === 'tool-use' && message.toolCall) {\n if (toolUses.has(message.toolCall.id)) {\n issues.push({\n code: 'integrity:duplicate-tool-call',\n message: `duplicate toolCall.id ${message.toolCall.id}`,\n data: { toolCallId: message.toolCall.id, messageId: message.id },\n });\n } else {\n toolUses.set(message.toolCall.id, { position: index, messageId: message.id });\n }\n }\n });\n\n conversation.ids.forEach((id, index) => {\n const message = conversation.messages[id];\n if (!message) return;\n\n if (message.role === 'tool-result' && message.toolResult) {\n const toolUse = toolUses.get(message.toolResult.callId);\n if (!toolUse) {\n issues.push({\n code: 'integrity:orphan-tool-result',\n message: `tool-result references missing tool-use ${message.toolResult.callId}`,\n data: { callId: message.toolResult.callId, messageId: message.id },\n });\n } else if (toolUse.position >= index) {\n issues.push({\n code: 'integrity:tool-result-before-call',\n message: `tool-result ${message.toolResult.callId} occurs before tool-use`,\n data: {\n callId: message.toolResult.callId,\n messageId: message.id,\n toolUseMessageId: toolUse.messageId,\n },\n });\n }\n }\n });\n\n return issues;\n}\n\n/**\n * Throws an integrity error if the conversation fails validation.\n */\nexport function assertConversationIntegrity(conversation: Conversation): void {\n const issues = validateConversationIntegrity(conversation);\n if (issues.length === 0) return;\n\n throw createIntegrityError('conversation integrity check failed', { issues });\n}\n",
8
+ "import { createValidationError } from '../errors';\nimport { conversationSchema } from '../schemas';\nimport type { Conversation } from '../types';\nimport { assertConversationIntegrity } from './integrity';\n\n/**\n * Ensures a conversation conforms to the schema (JSON-safe) and integrity rules.\n * Internal helper for public API enforcement points.\n */\nexport function assertConversationSafe(conversation: Conversation): void {\n const parsed = conversationSchema.safeParse(conversation);\n if (!parsed.success) {\n throw createValidationError('conversation failed schema validation', {\n issues: parsed.error.issues,\n });\n }\n\n assertConversationIntegrity(conversation);\n}\n\nexport function ensureConversationSafe(conversation: Conversation): Conversation {\n assertConversationSafe(conversation);\n return conversation;\n}\n",
5
9
  "import type { Conversation, Message } from '../types';\n\nexport function getOrderedMessages(conversation: Conversation): Message[] {\n const ordered: Message[] = [];\n for (const id of conversation.ids) {\n const message = conversation.messages[id];\n if (message) {\n ordered.push(message);\n }\n }\n return ordered;\n}\n\nexport function toIdRecord<T extends { id: string }>(\n items: readonly T[],\n): Record<string, T> {\n const record: Record<string, T> = {};\n for (const item of items) {\n record[item.id] = item;\n }\n return record;\n}\n",
6
- "import type { MultiModalContent } from '@lasercat/homogenaize';\n\nimport type { Conversation, Message, ToolCall, ToolResult } from '../../types';\nimport { getOrderedMessages } from '../../utilities/message-store';\n\n/**\n * Gemini text part.\n */\nexport interface GeminiTextPart {\n text: string;\n}\n\n/**\n * Gemini inline data part (for images).\n */\nexport interface GeminiInlineDataPart {\n inlineData: {\n mimeType: string;\n data: string;\n };\n}\n\n/**\n * Gemini file data part (for URLs).\n */\nexport interface GeminiFileDataPart {\n fileData: {\n mimeType: string;\n fileUri: string;\n };\n}\n\n/**\n * Gemini function call part.\n */\nexport interface GeminiFunctionCallPart {\n functionCall: {\n name: string;\n args: Record<string, unknown>;\n };\n}\n\n/**\n * Gemini function response part.\n */\nexport interface GeminiFunctionResponsePart {\n functionResponse: {\n name: string;\n response: Record<string, unknown>;\n };\n}\n\n/**\n * Gemini content part union type.\n */\nexport type GeminiPart =\n | GeminiTextPart\n | GeminiInlineDataPart\n | GeminiFileDataPart\n | GeminiFunctionCallPart\n | GeminiFunctionResponsePart;\n\n/**\n * Gemini content (message) format.\n */\nexport interface GeminiContent {\n role: 'user' | 'model';\n parts: GeminiPart[];\n}\n\n/**\n * Result of converting a conversation to Gemini format.\n */\nexport interface GeminiConversation {\n systemInstruction?: GeminiContent;\n contents: GeminiContent[];\n}\n\nconst DEFAULT_FILE_MIME_TYPE = 'application/octet-stream';\n\nconst MIME_TYPE_BY_EXTENSION: Record<string, string> = {\n bmp: 'image/bmp',\n gif: 'image/gif',\n heic: 'image/heic',\n heif: 'image/heif',\n jpeg: 'image/jpeg',\n jpg: 'image/jpeg',\n png: 'image/png',\n svg: 'image/svg+xml',\n webp: 'image/webp',\n};\n\nfunction inferMimeType(url: string): string | undefined {\n const trimmed = url.split('#')[0]?.split('?')[0] ?? '';\n const dotIndex = trimmed.lastIndexOf('.');\n if (dotIndex === -1) {\n return undefined;\n }\n const extension = trimmed.slice(dotIndex + 1).toLowerCase();\n return MIME_TYPE_BY_EXTENSION[extension];\n}\n\nfunction resolveMimeType(url: string, explicit?: string): string {\n return explicit ?? inferMimeType(url) ?? DEFAULT_FILE_MIME_TYPE;\n}\n\nfunction normalizeGeminiResponse(content: unknown): Record<string, unknown> {\n if (content !== null && typeof content === 'object') {\n return content as Record<string, unknown>;\n }\n return { result: content };\n}\n\n/**\n * Converts internal multi-modal content to Gemini parts.\n */\nfunction toGeminiParts(content: string | ReadonlyArray<MultiModalContent>): GeminiPart[] {\n if (typeof content === 'string') {\n return content ? [{ text: content }] : [];\n }\n\n const parts: GeminiPart[] = [];\n for (const part of content) {\n if (part.type === 'text') {\n if (part.text) {\n parts.push({ text: part.text });\n }\n } else if (part.type === 'image') {\n const url = part.url ?? '';\n if (url.startsWith('data:')) {\n // Base64 data URL\n const matches = url.match(/^data:([^;]+);base64,(.+)$/);\n if (matches) {\n parts.push({\n inlineData: {\n mimeType: matches[1]!,\n data: matches[2]!,\n },\n });\n }\n } else {\n // File URI\n const fileData: GeminiFileDataPart['fileData'] = {\n fileUri: url,\n mimeType: resolveMimeType(url, part.mimeType),\n };\n parts.push({ fileData });\n }\n }\n }\n\n return parts;\n}\n\n/**\n * Converts an internal ToolCall to Gemini functionCall part.\n */\nfunction toFunctionCallPart(toolCall: ToolCall): GeminiFunctionCallPart {\n let args: Record<string, unknown>;\n if (typeof toolCall.arguments === 'string') {\n try {\n args = JSON.parse(toolCall.arguments) as Record<string, unknown>;\n } catch {\n args = { _raw: toolCall.arguments };\n }\n } else {\n args = toolCall.arguments as Record<string, unknown>;\n }\n\n return {\n functionCall: {\n name: toolCall.name,\n args,\n },\n };\n}\n\n/**\n * Converts an internal ToolResult to Gemini functionResponse part.\n * Note: Gemini needs the function name, which we track via a map from the conversation.\n */\nfunction toFunctionResponsePart(\n toolResult: ToolResult,\n functionName: string,\n): GeminiFunctionResponsePart {\n return {\n functionResponse: {\n name: functionName,\n response: normalizeGeminiResponse(toolResult.content),\n },\n };\n}\n\n/**\n * Collects system message content from a conversation for Gemini's systemInstruction.\n */\nfunction extractSystemInstruction(\n messages: ReadonlyArray<Message>,\n): GeminiContent | undefined {\n const systemMessages = messages.filter(\n (m) => (m.role === 'system' || m.role === 'developer') && !m.hidden,\n );\n\n if (systemMessages.length === 0) {\n return undefined;\n }\n\n const parts: GeminiPart[] = [];\n for (const msg of systemMessages) {\n parts.push(...toGeminiParts(msg.content));\n }\n\n if (parts.length === 0) {\n return undefined;\n }\n\n return {\n role: 'user', // systemInstruction uses 'user' role in Gemini\n parts,\n };\n}\n\n/**\n * Converts a conversation to Google Gemini API format.\n * System messages are extracted to `systemInstruction`.\n * Tool calls become functionCall parts, tool results become functionResponse parts.\n *\n * @example\n * ```ts\n * import { toGeminiMessages } from 'conversationalist/gemini';\n *\n * const { systemInstruction, contents } = toGeminiMessages(conversation);\n * const response = await genAI.getGenerativeModel({ model: 'gemini-pro' }).generateContent({\n * systemInstruction,\n * contents,\n * });\n * ```\n */\nexport function toGeminiMessages(conversation: Conversation): GeminiConversation {\n const ordered = getOrderedMessages(conversation);\n const systemInstruction = extractSystemInstruction(ordered);\n\n // Build a map of tool call IDs to function names for tool results\n const toolCallNames = new Map<string, string>();\n for (const message of ordered) {\n if (message.role === 'tool-use' && message.toolCall) {\n toolCallNames.set(message.toolCall.id, message.toolCall.name);\n }\n }\n\n const contents: GeminiContent[] = [];\n\n // Track pending parts to merge consecutive same-role messages\n let currentRole: 'user' | 'model' | null = null;\n let currentParts: GeminiPart[] = [];\n\n const flushCurrent = () => {\n if (currentRole && currentParts.length > 0) {\n contents.push({\n role: currentRole,\n parts: currentParts,\n });\n currentParts = [];\n }\n currentRole = null;\n };\n\n for (const message of ordered) {\n if (message.hidden) continue;\n\n // Skip system messages (already extracted)\n if (message.role === 'system' || message.role === 'developer') {\n continue;\n }\n\n // Skip snapshots\n if (message.role === 'snapshot') {\n continue;\n }\n\n let targetRole: 'user' | 'model';\n let parts: GeminiPart[] = [];\n\n if (message.role === 'user') {\n targetRole = 'user';\n parts = toGeminiParts(message.content);\n } else if (message.role === 'assistant') {\n targetRole = 'model';\n parts = toGeminiParts(message.content);\n } else if (message.role === 'tool-use' && message.toolCall) {\n targetRole = 'model';\n parts = [toFunctionCallPart(message.toolCall)];\n } else if (message.role === 'tool-result' && message.toolResult) {\n targetRole = 'user';\n const functionName = toolCallNames.get(message.toolResult.callId) ?? 'unknown';\n parts = [toFunctionResponsePart(message.toolResult, functionName)];\n } else {\n continue;\n }\n\n if (parts.length === 0) {\n continue;\n }\n\n // Merge with current or start new\n if (currentRole === targetRole) {\n currentParts.push(...parts);\n } else {\n flushCurrent();\n currentRole = targetRole;\n currentParts = parts;\n }\n }\n\n flushCurrent();\n\n const result: GeminiConversation = { contents };\n if (systemInstruction !== undefined) {\n result.systemInstruction = systemInstruction;\n }\n return result;\n}\n"
10
+ "import type { MultiModalContent } from '@lasercat/homogenaize';\n\nimport { assertConversationSafe } from '../../conversation/validation';\nimport type { Conversation, Message, ToolCall, ToolResult } from '../../types';\nimport { getOrderedMessages } from '../../utilities/message-store';\n\n/**\n * Gemini text part.\n */\nexport interface GeminiTextPart {\n text: string;\n}\n\n/**\n * Gemini inline data part (for images).\n */\nexport interface GeminiInlineDataPart {\n inlineData: {\n mimeType: string;\n data: string;\n };\n}\n\n/**\n * Gemini file data part (for URLs).\n */\nexport interface GeminiFileDataPart {\n fileData: {\n mimeType: string;\n fileUri: string;\n };\n}\n\n/**\n * Gemini function call part.\n */\nexport interface GeminiFunctionCallPart {\n functionCall: {\n name: string;\n args: Record<string, unknown>;\n };\n}\n\n/**\n * Gemini function response part.\n */\nexport interface GeminiFunctionResponsePart {\n functionResponse: {\n name: string;\n response: Record<string, unknown>;\n };\n}\n\n/**\n * Gemini content part union type.\n */\nexport type GeminiPart =\n | GeminiTextPart\n | GeminiInlineDataPart\n | GeminiFileDataPart\n | GeminiFunctionCallPart\n | GeminiFunctionResponsePart;\n\n/**\n * Gemini content (message) format.\n */\nexport interface GeminiContent {\n role: 'user' | 'model';\n parts: GeminiPart[];\n}\n\n/**\n * Result of converting a conversation to Gemini format.\n */\nexport interface GeminiConversation {\n systemInstruction?: GeminiContent;\n contents: GeminiContent[];\n}\n\nconst DEFAULT_FILE_MIME_TYPE = 'application/octet-stream';\n\nconst MIME_TYPE_BY_EXTENSION: Record<string, string> = {\n bmp: 'image/bmp',\n gif: 'image/gif',\n heic: 'image/heic',\n heif: 'image/heif',\n jpeg: 'image/jpeg',\n jpg: 'image/jpeg',\n png: 'image/png',\n svg: 'image/svg+xml',\n webp: 'image/webp',\n};\n\nfunction inferMimeType(url: string): string | undefined {\n const trimmed = url.split('#')[0]?.split('?')[0] ?? '';\n const dotIndex = trimmed.lastIndexOf('.');\n if (dotIndex === -1) {\n return undefined;\n }\n const extension = trimmed.slice(dotIndex + 1).toLowerCase();\n return MIME_TYPE_BY_EXTENSION[extension];\n}\n\nfunction resolveMimeType(url: string, explicit?: string): string {\n return explicit ?? inferMimeType(url) ?? DEFAULT_FILE_MIME_TYPE;\n}\n\nfunction normalizeGeminiResponse(content: unknown): Record<string, unknown> {\n if (content !== null && typeof content === 'object') {\n return content as Record<string, unknown>;\n }\n return { result: content };\n}\n\n/**\n * Converts internal multi-modal content to Gemini parts.\n */\nfunction toGeminiParts(content: string | ReadonlyArray<MultiModalContent>): GeminiPart[] {\n if (typeof content === 'string') {\n return content ? [{ text: content }] : [];\n }\n\n const parts: GeminiPart[] = [];\n for (const part of content) {\n if (part.type === 'text') {\n if (part.text) {\n parts.push({ text: part.text });\n }\n } else if (part.type === 'image') {\n const url = part.url ?? '';\n if (url.startsWith('data:')) {\n // Base64 data URL\n const matches = url.match(/^data:([^;]+);base64,(.+)$/);\n if (matches) {\n parts.push({\n inlineData: {\n mimeType: matches[1]!,\n data: matches[2]!,\n },\n });\n }\n } else {\n // File URI\n const fileData: GeminiFileDataPart['fileData'] = {\n fileUri: url,\n mimeType: resolveMimeType(url, part.mimeType),\n };\n parts.push({ fileData });\n }\n }\n }\n\n return parts;\n}\n\n/**\n * Converts an internal ToolCall to Gemini functionCall part.\n */\nfunction toFunctionCallPart(toolCall: ToolCall): GeminiFunctionCallPart {\n let args: Record<string, unknown>;\n\n if (typeof toolCall.arguments === 'string') {\n try {\n const parsed = JSON.parse(toolCall.arguments) as unknown;\n if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {\n args = parsed as Record<string, unknown>;\n } else {\n args = { _value: parsed };\n }\n } catch {\n args = { _raw: toolCall.arguments };\n }\n } else if (\n toolCall.arguments &&\n typeof toolCall.arguments === 'object' &&\n !Array.isArray(toolCall.arguments)\n ) {\n args = toolCall.arguments as Record<string, unknown>;\n } else {\n args = { _value: toolCall.arguments };\n }\n\n return {\n functionCall: {\n name: toolCall.name,\n args,\n },\n };\n}\n\n/**\n * Converts an internal ToolResult to Gemini functionResponse part.\n * Note: Gemini needs the function name, which we track via a map from the conversation.\n */\nfunction toFunctionResponsePart(\n toolResult: ToolResult,\n functionName: string,\n): GeminiFunctionResponsePart {\n return {\n functionResponse: {\n name: functionName,\n response: normalizeGeminiResponse(toolResult.content),\n },\n };\n}\n\n/**\n * Collects system message content from a conversation for Gemini's systemInstruction.\n */\nfunction extractSystemInstruction(\n messages: ReadonlyArray<Message>,\n): GeminiContent | undefined {\n const systemMessages = messages.filter(\n (m) => (m.role === 'system' || m.role === 'developer') && !m.hidden,\n );\n\n if (systemMessages.length === 0) {\n return undefined;\n }\n\n const parts: GeminiPart[] = [];\n for (const msg of systemMessages) {\n parts.push(...toGeminiParts(msg.content));\n }\n\n if (parts.length === 0) {\n return undefined;\n }\n\n return {\n role: 'user', // systemInstruction uses 'user' role in Gemini\n parts,\n };\n}\n\n/**\n * Converts a conversation to Google Gemini API format.\n * System messages are extracted to `systemInstruction`.\n * Tool calls become functionCall parts, tool results become functionResponse parts.\n *\n * @example\n * ```ts\n * import { toGeminiMessages } from 'conversationalist/gemini';\n *\n * const { systemInstruction, contents } = toGeminiMessages(conversation);\n * const response = await genAI.getGenerativeModel({ model: 'gemini-pro' }).generateContent({\n * systemInstruction,\n * contents,\n * });\n * ```\n */\nexport function toGeminiMessages(conversation: Conversation): GeminiConversation {\n assertConversationSafe(conversation);\n const ordered = getOrderedMessages(conversation);\n const systemInstruction = extractSystemInstruction(ordered);\n\n // Build a map of tool call IDs to function names for tool results\n const toolCallNames = new Map<string, string>();\n for (const message of ordered) {\n if (message.role === 'tool-use' && message.toolCall) {\n toolCallNames.set(message.toolCall.id, message.toolCall.name);\n }\n }\n\n const contents: GeminiContent[] = [];\n\n // Track pending parts to merge consecutive same-role messages\n let currentRole: 'user' | 'model' | null = null;\n let currentParts: GeminiPart[] = [];\n\n const flushCurrent = () => {\n if (currentRole && currentParts.length > 0) {\n contents.push({\n role: currentRole,\n parts: currentParts,\n });\n currentParts = [];\n }\n currentRole = null;\n };\n\n for (const message of ordered) {\n if (message.hidden) continue;\n\n // Skip system messages (already extracted)\n if (message.role === 'system' || message.role === 'developer') {\n continue;\n }\n\n // Skip snapshots\n if (message.role === 'snapshot') {\n continue;\n }\n\n let targetRole: 'user' | 'model';\n let parts: GeminiPart[] = [];\n\n if (message.role === 'user') {\n targetRole = 'user';\n parts = toGeminiParts(message.content);\n } else if (message.role === 'assistant') {\n targetRole = 'model';\n parts = toGeminiParts(message.content);\n } else if (message.role === 'tool-use' && message.toolCall) {\n targetRole = 'model';\n parts = [toFunctionCallPart(message.toolCall)];\n } else if (message.role === 'tool-result' && message.toolResult) {\n targetRole = 'user';\n const functionName = toolCallNames.get(message.toolResult.callId) ?? 'unknown';\n parts = [toFunctionResponsePart(message.toolResult, functionName)];\n } else {\n continue;\n }\n\n if (parts.length === 0) {\n continue;\n }\n\n // Merge with current or start new\n if (currentRole === targetRole) {\n currentParts.push(...parts);\n } else {\n flushCurrent();\n currentRole = targetRole;\n currentParts = parts;\n }\n }\n\n flushCurrent();\n\n const result: GeminiConversation = { contents };\n if (systemInstruction !== undefined) {\n result.systemInstruction = systemInstruction;\n }\n return result;\n}\n"
7
11
  ],
8
- "mappings": "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",
9
- "debugId": "88465330F0A95D8664756E2164756E21",
12
+ "mappings": ";AAoBO,MAAM,+BAA+B,MAAM;AAAA,EAEvC;AAAA,EAGA;AAAA,EAGS;AAAA,EAElB,WAAW,CACT,MACA,SACA,SAIA;AAAA,IACA,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA,IACZ,KAAK,UAAU,SAAS;AAAA,IACxB,KAAK,QAAQ,SAAS;AAAA,IAGtB,IAAI,MAAM,mBAAmB;AAAA,MAC3B,MAAM,kBAAkB,MAAM,sBAAsB;AAAA,IACtD;AAAA;AAAA,EAMF,gBAAgB,GAAW;AAAA,IACzB,MAAM,QAAQ,CAAC,IAAI,KAAK,SAAS,KAAK,SAAS;AAAA,IAE/C,IAAI,KAAK,WAAW,OAAO,KAAK,KAAK,OAAO,EAAE,SAAS,GAAG;AAAA,MACxD,MAAM,KAAK,YAAY,KAAK,UAAU,KAAK,SAAS,MAAM,CAAC,GAAG;AAAA,IAChE;AAAA,IAEA,IAAI,KAAK,OAAO;AAAA,MACd,MAAM,KAAK,cAAc,KAAK,MAAM,SAAS;AAAA,IAC/C;AAAA,IAEA,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAE1B;AA6FO,SAAS,qBAAqB,CACnC,SACA,SACA,OACwB;AAAA,EACxB,OAAO,IAAI,uBAAuB,oBAAoB,SAAS,EAAE,SAAS,MAAM,CAAC;AAAA;AAO5E,SAAS,oBAAoB,CAClC,SACA,SACwB;AAAA,EACxB,OAAO,IAAI,uBAAuB,mBAAmB,SAAS,EAAE,QAAQ,CAAC;AAAA;;;AC9K3E;AAcA,IAAM,gBAAgB,CAAC,UAAqD;AAAA,EAC1E,IAAI,CAAC,SAAS,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EAChD,MAAM,YAAY,QAAQ,eAAe,KAAK;AAAA,EAC9C,OAAO,cAAc,OAAO,aAAa,cAAc;AAAA;AAUzD,SAAS,mBAAmB,CAAC,OAAgD;AAAA,EAC3E,MAAM,SAA4B,EAAE,MAAM,MAAM,KAAK;AAAA,EACrD,IAAI,MAAM,SAAS;AAAA,IAAW,OAAO,OAAO,MAAM;AAAA,EAClD,IAAI,MAAM,QAAQ;AAAA,IAAW,OAAO,MAAM,MAAM;AAAA,EAChD,IAAI,MAAM,aAAa;AAAA,IAAW,OAAO,WAAW,MAAM;AAAA,EAC1D,OAAO;AAAA;AAMF,IAAM,kBAAwC,EAAE,KAAK,MAAM;AAAA,EAChE,MAAM,mBAAmB,EAAE,WACzB,CAAC,OAAO,QAAQ;AAAA,IACd,IAAI,CAAC,cAAc,KAAK,GAAG;AAAA,MACzB,IAAI,SAAS;AAAA,QACX,MAAM,EAAE,aAAa;AAAA,QACrB,SAAS;AAAA,MACX,CAAC;AAAA,MACD,OAAO,EAAE;AAAA,IACX;AAAA,IACA,OAAO;AAAA,KAET,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe,CACtC;AAAA,EAEA,OAAO,EAAE,MAAM;AAAA,IACb,EAAE,OAAO;AAAA,IACT,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,OAAO,SAAS,KAAK,GAAG;AAAA,MACnD,SAAS;AAAA,IACX,CAAC;AAAA,IACD,EAAE,QAAQ;AAAA,IACV,EAAE,KAAK;AAAA,IACP,EAAE,MAAM,eAAe;AAAA,IACvB;AAAA,EACF,CAAC;AAAA,CACF;AAKM,IAAM,0BAA0B,EACpC,mBAAmB,QAAQ;AAAA,EAC1B,EAAE,OAAO;AAAA,IACP,MAAM,EAAE,QAAQ,MAAM;AAAA,IACtB,MAAM,EAAE,OAAO;AAAA,EACjB,CAAC;AAAA,EACD,EAAE,OAAO;AAAA,IACP,MAAM,EAAE,QAAQ,OAAO;AAAA,IACvB,KAAK,EAAE,OAAO,EAAE,IAAI;AAAA,IACpB,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,IAC9B,MAAM,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,CAAC;AACH,CAAC,EACA,UAAU,mBAAmB;AAKzB,IAAM,oBAAoB,EAAE,KAAK;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAKM,IAAM,iBAAiB,EAC3B,OAAO;AAAA,EACN,IAAI,EAAE,OAAO;AAAA,EACb,MAAM,EAAE,OAAO;AAAA,EACf,WAAW;AACb,CAAC,EACA,OAAO;AAKH,IAAM,mBAAmB,EAC7B,OAAO;AAAA,EACN,QAAQ,EAAE,OAAO;AAAA,EACjB,SAAS,EAAE,KAAK,CAAC,WAAW,OAAO,CAAC;AAAA,EACpC,SAAS;AACX,CAAC,EACA,OAAO;AAKH,IAAM,mBAAmB,EAAE,OAAO;AAAA,EACvC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;AAAA,EAC9B,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;AAAA,EAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;AAC/B,CAAC;AAKM,IAAM,qBAAqB,EAC/B,OAAO;AAAA,EACN,MAAM;AAAA,EACN,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,MAAM,uBAAuB,CAAC,CAAC;AAAA,EAC/D,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe,EAAE,SAAS;AAAA,EACzD,QAAQ,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC7B,UAAU,eAAe,SAAS;AAAA,EAClC,YAAY,iBAAiB,SAAS;AAAA,EACtC,YAAY,iBAAiB,SAAS;AAAA,EACtC,eAAe,EAAE,QAAQ,EAAE,SAAS;AACtC,CAAC,EACA,OAAO;AAKH,IAAM,gBAAgB,EAC1B,OAAO;AAAA,EACN,IAAI,EAAE,OAAO;AAAA,EACb,MAAM;AAAA,EACN,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,MAAM,uBAAuB,CAAC,CAAC;AAAA,EAC/D,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;AAAA,EAChC,WAAW,EAAE,OAAO;AAAA,EACpB,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe;AAAA,EAC9C,QAAQ,EAAE,QAAQ;AAAA,EAClB,UAAU,eAAe,SAAS;AAAA,EAClC,YAAY,iBAAiB,SAAS;AAAA,EACtC,YAAY,iBAAiB,SAAS;AAAA,EACtC,eAAe,EAAE,QAAQ,EAAE,SAAS;AACtC,CAAC,EACA,OAAO;AAKH,IAAM,2BAA2B,EAAE,KAAK;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAKM,IAAM,oBAAoB;AAAA,EAC/B,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;AAAA,EACrC,IAAI,EAAE,OAAO;AAAA,EACb,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,QAAQ;AAAA,EACR,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe;AAAA,EAC9C,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;AAAA,EACvB,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,aAAa;AAAA,EAC5C,WAAW,EAAE,OAAO;AAAA,EACpB,WAAW,EAAE,OAAO;AACtB;AAKO,IAAM,qBAAqB,EAC/B,OAAO,iBAAiB,EACxB,OAAO;;;AC5KH,SAAS,6BAA6B,CAC3C,cACkB;AAAA,EAClB,MAAM,SAA2B,CAAC;AAAA,EAClC,MAAM,UAAU,IAAI;AAAA,EAEpB,aAAa,IAAI,QAAQ,CAAC,IAAI,UAAU;AAAA,IACtC,IAAI,QAAQ,IAAI,EAAE,GAAG;AAAA,MACnB,OAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,SAAS,gCAAgC;AAAA,QACzC,MAAM,EAAE,IAAI,UAAU,MAAM;AAAA,MAC9B,CAAC;AAAA,IACH,EAAO;AAAA,MACL,QAAQ,IAAI,EAAE;AAAA;AAAA,IAGhB,IAAI,CAAC,aAAa,SAAS,KAAK;AAAA,MAC9B,OAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,SAAS,0BAA0B;AAAA,QACnC,MAAM,EAAE,IAAI,UAAU,MAAM;AAAA,MAC9B,CAAC;AAAA,IACH;AAAA,GACD;AAAA,EAED,WAAW,MAAM,OAAO,KAAK,aAAa,QAAQ,GAAG;AAAA,IACnD,IAAI,CAAC,QAAQ,IAAI,EAAE,GAAG;AAAA,MACpB,OAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,MAAM,EAAE,GAAG;AAAA,MACb,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,IAAI;AAAA,EAErB,aAAa,IAAI,QAAQ,CAAC,IAAI,UAAU;AAAA,IACtC,MAAM,UAAU,aAAa,SAAS;AAAA,IACtC,IAAI,CAAC;AAAA,MAAS;AAAA,IAEd,IAAI,QAAQ,SAAS,cAAc,QAAQ,UAAU;AAAA,MACnD,IAAI,SAAS,IAAI,QAAQ,SAAS,EAAE,GAAG;AAAA,QACrC,OAAO,KAAK;AAAA,UACV,MAAM;AAAA,UACN,SAAS,yBAAyB,QAAQ,SAAS;AAAA,UACnD,MAAM,EAAE,YAAY,QAAQ,SAAS,IAAI,WAAW,QAAQ,GAAG;AAAA,QACjE,CAAC;AAAA,MACH,EAAO;AAAA,QACL,SAAS,IAAI,QAAQ,SAAS,IAAI,EAAE,UAAU,OAAO,WAAW,QAAQ,GAAG,CAAC;AAAA;AAAA,IAEhF;AAAA,GACD;AAAA,EAED,aAAa,IAAI,QAAQ,CAAC,IAAI,UAAU;AAAA,IACtC,MAAM,UAAU,aAAa,SAAS;AAAA,IACtC,IAAI,CAAC;AAAA,MAAS;AAAA,IAEd,IAAI,QAAQ,SAAS,iBAAiB,QAAQ,YAAY;AAAA,MACxD,MAAM,UAAU,SAAS,IAAI,QAAQ,WAAW,MAAM;AAAA,MACtD,IAAI,CAAC,SAAS;AAAA,QACZ,OAAO,KAAK;AAAA,UACV,MAAM;AAAA,UACN,SAAS,2CAA2C,QAAQ,WAAW;AAAA,UACvE,MAAM,EAAE,QAAQ,QAAQ,WAAW,QAAQ,WAAW,QAAQ,GAAG;AAAA,QACnE,CAAC;AAAA,MACH,EAAO,SAAI,QAAQ,YAAY,OAAO;AAAA,QACpC,OAAO,KAAK;AAAA,UACV,MAAM;AAAA,UACN,SAAS,eAAe,QAAQ,WAAW;AAAA,UAC3C,MAAM;AAAA,YACJ,QAAQ,QAAQ,WAAW;AAAA,YAC3B,WAAW,QAAQ;AAAA,YACnB,kBAAkB,QAAQ;AAAA,UAC5B;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,GACD;AAAA,EAED,OAAO;AAAA;AAMF,SAAS,2BAA2B,CAAC,cAAkC;AAAA,EAC5E,MAAM,SAAS,8BAA8B,YAAY;AAAA,EACzD,IAAI,OAAO,WAAW;AAAA,IAAG;AAAA,EAEzB,MAAM,qBAAqB,uCAAuC,EAAE,OAAO,CAAC;AAAA;;;ACtGvE,SAAS,sBAAsB,CAAC,cAAkC;AAAA,EACvE,MAAM,SAAS,mBAAmB,UAAU,YAAY;AAAA,EACxD,IAAI,CAAC,OAAO,SAAS;AAAA,IACnB,MAAM,sBAAsB,yCAAyC;AAAA,MACnE,QAAQ,OAAO,MAAM;AAAA,IACvB,CAAC;AAAA,EACH;AAAA,EAEA,4BAA4B,YAAY;AAAA;;;ACfnC,SAAS,kBAAkB,CAAC,cAAuC;AAAA,EACxE,MAAM,UAAqB,CAAC;AAAA,EAC5B,WAAW,MAAM,aAAa,KAAK;AAAA,IACjC,MAAM,UAAU,aAAa,SAAS;AAAA,IACtC,IAAI,SAAS;AAAA,MACX,QAAQ,KAAK,OAAO;AAAA,IACtB;AAAA,EACF;AAAA,EACA,OAAO;AAAA;;;ACqET,IAAM,yBAAyB;AAE/B,IAAM,yBAAiD;AAAA,EACrD,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AACR;AAEA,SAAS,aAAa,CAAC,KAAiC;AAAA,EACtD,MAAM,UAAU,IAAI,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,EAAE,MAAM;AAAA,EACpD,MAAM,WAAW,QAAQ,YAAY,GAAG;AAAA,EACxC,IAAI,aAAa,IAAI;AAAA,IACnB;AAAA,EACF;AAAA,EACA,MAAM,YAAY,QAAQ,MAAM,WAAW,CAAC,EAAE,YAAY;AAAA,EAC1D,OAAO,uBAAuB;AAAA;AAGhC,SAAS,eAAe,CAAC,KAAa,UAA2B;AAAA,EAC/D,OAAO,YAAY,cAAc,GAAG,KAAK;AAAA;AAG3C,SAAS,uBAAuB,CAAC,SAA2C;AAAA,EAC1E,IAAI,YAAY,QAAQ,OAAO,YAAY,UAAU;AAAA,IACnD,OAAO;AAAA,EACT;AAAA,EACA,OAAO,EAAE,QAAQ,QAAQ;AAAA;AAM3B,SAAS,aAAa,CAAC,SAAkE;AAAA,EACvF,IAAI,OAAO,YAAY,UAAU;AAAA,IAC/B,OAAO,UAAU,CAAC,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC;AAAA,EAC1C;AAAA,EAEA,MAAM,QAAsB,CAAC;AAAA,EAC7B,WAAW,QAAQ,SAAS;AAAA,IAC1B,IAAI,KAAK,SAAS,QAAQ;AAAA,MACxB,IAAI,KAAK,MAAM;AAAA,QACb,MAAM,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC;AAAA,MAChC;AAAA,IACF,EAAO,SAAI,KAAK,SAAS,SAAS;AAAA,MAChC,MAAM,MAAM,KAAK,OAAO;AAAA,MACxB,IAAI,IAAI,WAAW,OAAO,GAAG;AAAA,QAE3B,MAAM,UAAU,IAAI,MAAM,4BAA4B;AAAA,QACtD,IAAI,SAAS;AAAA,UACX,MAAM,KAAK;AAAA,YACT,YAAY;AAAA,cACV,UAAU,QAAQ;AAAA,cAClB,MAAM,QAAQ;AAAA,YAChB;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,EAAO;AAAA,QAEL,MAAM,WAA2C;AAAA,UAC/C,SAAS;AAAA,UACT,UAAU,gBAAgB,KAAK,KAAK,QAAQ;AAAA,QAC9C;AAAA,QACA,MAAM,KAAK,EAAE,SAAS,CAAC;AAAA;AAAA,IAE3B;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAMT,SAAS,kBAAkB,CAAC,UAA4C;AAAA,EACtE,IAAI;AAAA,EAEJ,IAAI,OAAO,SAAS,cAAc,UAAU;AAAA,IAC1C,IAAI;AAAA,MACF,MAAM,SAAS,KAAK,MAAM,SAAS,SAAS;AAAA,MAC5C,IAAI,UAAU,OAAO,WAAW,YAAY,CAAC,MAAM,QAAQ,MAAM,GAAG;AAAA,QAClE,OAAO;AAAA,MACT,EAAO;AAAA,QACL,OAAO,EAAE,QAAQ,OAAO;AAAA;AAAA,MAE1B,MAAM;AAAA,MACN,OAAO,EAAE,MAAM,SAAS,UAAU;AAAA;AAAA,EAEtC,EAAO,SACL,SAAS,aACT,OAAO,SAAS,cAAc,YAC9B,CAAC,MAAM,QAAQ,SAAS,SAAS,GACjC;AAAA,IACA,OAAO,SAAS;AAAA,EAClB,EAAO;AAAA,IACL,OAAO,EAAE,QAAQ,SAAS,UAAU;AAAA;AAAA,EAGtC,OAAO;AAAA,IACL,cAAc;AAAA,MACZ,MAAM,SAAS;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAAA;AAOF,SAAS,sBAAsB,CAC7B,YACA,cAC4B;AAAA,EAC5B,OAAO;AAAA,IACL,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,UAAU,wBAAwB,WAAW,OAAO;AAAA,IACtD;AAAA,EACF;AAAA;AAMF,SAAS,wBAAwB,CAC/B,UAC2B;AAAA,EAC3B,MAAM,iBAAiB,SAAS,OAC9B,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,SAAS,gBAAgB,CAAC,EAAE,MAC/D;AAAA,EAEA,IAAI,eAAe,WAAW,GAAG;AAAA,IAC/B;AAAA,EACF;AAAA,EAEA,MAAM,QAAsB,CAAC;AAAA,EAC7B,WAAW,OAAO,gBAAgB;AAAA,IAChC,MAAM,KAAK,GAAG,cAAc,IAAI,OAAO,CAAC;AAAA,EAC1C;AAAA,EAEA,IAAI,MAAM,WAAW,GAAG;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,EACF;AAAA;AAmBK,SAAS,gBAAgB,CAAC,cAAgD;AAAA,EAC/E,uBAAuB,YAAY;AAAA,EACnC,MAAM,UAAU,mBAAmB,YAAY;AAAA,EAC/C,MAAM,oBAAoB,yBAAyB,OAAO;AAAA,EAG1D,MAAM,gBAAgB,IAAI;AAAA,EAC1B,WAAW,WAAW,SAAS;AAAA,IAC7B,IAAI,QAAQ,SAAS,cAAc,QAAQ,UAAU;AAAA,MACnD,cAAc,IAAI,QAAQ,SAAS,IAAI,QAAQ,SAAS,IAAI;AAAA,IAC9D;AAAA,EACF;AAAA,EAEA,MAAM,WAA4B,CAAC;AAAA,EAGnC,IAAI,cAAuC;AAAA,EAC3C,IAAI,eAA6B,CAAC;AAAA,EAElC,MAAM,eAAe,MAAM;AAAA,IACzB,IAAI,eAAe,aAAa,SAAS,GAAG;AAAA,MAC1C,SAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,OAAO;AAAA,MACT,CAAC;AAAA,MACD,eAAe,CAAC;AAAA,IAClB;AAAA,IACA,cAAc;AAAA;AAAA,EAGhB,WAAW,WAAW,SAAS;AAAA,IAC7B,IAAI,QAAQ;AAAA,MAAQ;AAAA,IAGpB,IAAI,QAAQ,SAAS,YAAY,QAAQ,SAAS,aAAa;AAAA,MAC7D;AAAA,IACF;AAAA,IAGA,IAAI,QAAQ,SAAS,YAAY;AAAA,MAC/B;AAAA,IACF;AAAA,IAEA,IAAI;AAAA,IACJ,IAAI,QAAsB,CAAC;AAAA,IAE3B,IAAI,QAAQ,SAAS,QAAQ;AAAA,MAC3B,aAAa;AAAA,MACb,QAAQ,cAAc,QAAQ,OAAO;AAAA,IACvC,EAAO,SAAI,QAAQ,SAAS,aAAa;AAAA,MACvC,aAAa;AAAA,MACb,QAAQ,cAAc,QAAQ,OAAO;AAAA,IACvC,EAAO,SAAI,QAAQ,SAAS,cAAc,QAAQ,UAAU;AAAA,MAC1D,aAAa;AAAA,MACb,QAAQ,CAAC,mBAAmB,QAAQ,QAAQ,CAAC;AAAA,IAC/C,EAAO,SAAI,QAAQ,SAAS,iBAAiB,QAAQ,YAAY;AAAA,MAC/D,aAAa;AAAA,MACb,MAAM,eAAe,cAAc,IAAI,QAAQ,WAAW,MAAM,KAAK;AAAA,MACrE,QAAQ,CAAC,uBAAuB,QAAQ,YAAY,YAAY,CAAC;AAAA,IACnE,EAAO;AAAA,MACL;AAAA;AAAA,IAGF,IAAI,MAAM,WAAW,GAAG;AAAA,MACtB;AAAA,IACF;AAAA,IAGA,IAAI,gBAAgB,YAAY;AAAA,MAC9B,aAAa,KAAK,GAAG,KAAK;AAAA,IAC5B,EAAO;AAAA,MACL,aAAa;AAAA,MACb,cAAc;AAAA,MACd,eAAe;AAAA;AAAA,EAEnB;AAAA,EAEA,aAAa;AAAA,EAEb,MAAM,SAA6B,EAAE,SAAS;AAAA,EAC9C,IAAI,sBAAsB,WAAW;AAAA,IACnC,OAAO,oBAAoB;AAAA,EAC7B;AAAA,EACA,OAAO;AAAA;",
13
+ "debugId": "3CC11A8F1158A69264756E2164756E21",
10
14
  "names": []
11
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/openai/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAiC,MAAM,aAAa,CAAC;AAG/E;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE;QACT,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;KAClC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,GAAG,sBAAsB,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAAC;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,qBAAqB,EAAE,GAAG,IAAI,CAAC;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAAC;IAC1C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,mBAAmB,GACnB,iBAAiB,GACjB,sBAAsB,GACtB,iBAAiB,CAAC;AA4ItB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,aAAa,EAAE,CAW5E;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,YAAY,GAAG,aAAa,EAAE,CAsCnF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/openai/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAiC,MAAM,aAAa,CAAC;AAG/E;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE;QACT,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;KAClC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,GAAG,sBAAsB,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAAC;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,qBAAqB,EAAE,GAAG,IAAI,CAAC;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAAC;IAC1C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,mBAAmB,GACnB,iBAAiB,GACjB,sBAAsB,GACtB,iBAAiB,CAAC;AAyItB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,aAAa,EAAE,CAY5E;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,YAAY,GAAG,aAAa,EAAE,CAuCnF"}