@llumiverse/drivers 0.19.0 → 0.21.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 (211) hide show
  1. package/lib/cjs/azure/azure_foundry.js +379 -0
  2. package/lib/cjs/azure/azure_foundry.js.map +1 -0
  3. package/lib/cjs/bedrock/converse.js +181 -123
  4. package/lib/cjs/bedrock/converse.js.map +1 -1
  5. package/lib/cjs/bedrock/index.js +157 -72
  6. package/lib/cjs/bedrock/index.js.map +1 -1
  7. package/lib/cjs/groq/index.js +91 -10
  8. package/lib/cjs/groq/index.js.map +1 -1
  9. package/lib/cjs/index.js +2 -1
  10. package/lib/cjs/index.js.map +1 -1
  11. package/lib/cjs/mistral/index.js +2 -1
  12. package/lib/cjs/mistral/index.js.map +1 -1
  13. package/lib/cjs/openai/azure_openai.js +72 -0
  14. package/lib/cjs/openai/azure_openai.js.map +1 -0
  15. package/lib/cjs/openai/index.js +6 -9
  16. package/lib/cjs/openai/index.js.map +1 -1
  17. package/lib/cjs/openai/openai.js +2 -2
  18. package/lib/cjs/openai/openai.js.map +1 -1
  19. package/lib/cjs/openai/openai_format.js +138 -0
  20. package/lib/cjs/openai/openai_format.js.map +1 -0
  21. package/lib/cjs/vertexai/index.js +1 -0
  22. package/lib/cjs/vertexai/index.js.map +1 -1
  23. package/lib/cjs/vertexai/models/claude.js +229 -118
  24. package/lib/cjs/vertexai/models/claude.js.map +1 -1
  25. package/lib/cjs/vertexai/models/gemini.js +110 -70
  26. package/lib/cjs/vertexai/models/gemini.js.map +1 -1
  27. package/lib/cjs/vertexai/models/imagen.js +2 -2
  28. package/lib/cjs/vertexai/models/imagen.js.map +1 -1
  29. package/lib/cjs/watsonx/index.js +11 -11
  30. package/lib/cjs/watsonx/index.js.map +1 -1
  31. package/lib/cjs/xai/index.js +3 -3
  32. package/lib/cjs/xai/index.js.map +1 -1
  33. package/lib/esm/azure/azure_foundry.js +373 -0
  34. package/lib/esm/azure/azure_foundry.js.map +1 -0
  35. package/lib/esm/bedrock/converse.js +180 -122
  36. package/lib/esm/bedrock/converse.js.map +1 -1
  37. package/lib/esm/bedrock/index.js +158 -73
  38. package/lib/esm/bedrock/index.js.map +1 -1
  39. package/lib/esm/groq/index.js +91 -10
  40. package/lib/esm/groq/index.js.map +1 -1
  41. package/lib/esm/index.js +2 -1
  42. package/lib/esm/index.js.map +1 -1
  43. package/lib/esm/mistral/index.js +2 -1
  44. package/lib/esm/mistral/index.js.map +1 -1
  45. package/lib/esm/openai/azure_openai.js +68 -0
  46. package/lib/esm/openai/azure_openai.js.map +1 -0
  47. package/lib/esm/openai/index.js +5 -8
  48. package/lib/esm/openai/index.js.map +1 -1
  49. package/lib/esm/openai/openai.js +2 -2
  50. package/lib/esm/openai/openai.js.map +1 -1
  51. package/lib/esm/openai/openai_format.js +134 -0
  52. package/lib/esm/openai/openai_format.js.map +1 -0
  53. package/lib/esm/src/adobe/firefly.js +115 -0
  54. package/lib/esm/src/adobe/firefly.js.map +1 -0
  55. package/lib/esm/src/bedrock/converse.js +278 -0
  56. package/lib/esm/src/bedrock/converse.js.map +1 -0
  57. package/lib/esm/src/bedrock/index.js +797 -0
  58. package/lib/esm/src/bedrock/index.js.map +1 -0
  59. package/lib/esm/src/bedrock/nova-image-payload.js +203 -0
  60. package/lib/esm/src/bedrock/nova-image-payload.js.map +1 -0
  61. package/lib/esm/src/bedrock/payloads.js +2 -0
  62. package/lib/esm/src/bedrock/payloads.js.map +1 -0
  63. package/lib/esm/src/bedrock/s3.js +99 -0
  64. package/lib/esm/src/bedrock/s3.js.map +1 -0
  65. package/lib/esm/src/groq/index.js +130 -0
  66. package/lib/esm/src/groq/index.js.map +1 -0
  67. package/lib/esm/src/huggingface_ie.js +196 -0
  68. package/lib/esm/src/huggingface_ie.js.map +1 -0
  69. package/lib/esm/src/index.js +13 -0
  70. package/lib/esm/src/index.js.map +1 -0
  71. package/lib/esm/src/mistral/index.js +167 -0
  72. package/lib/esm/src/mistral/index.js.map +1 -0
  73. package/lib/esm/src/mistral/types.js +80 -0
  74. package/lib/esm/src/mistral/types.js.map +1 -0
  75. package/{src/openai/azure.ts → lib/esm/src/openai/azure.js} +7 -34
  76. package/lib/esm/src/openai/azure.js.map +1 -0
  77. package/lib/esm/src/openai/index.js +463 -0
  78. package/lib/esm/src/openai/index.js.map +1 -0
  79. package/lib/esm/src/openai/openai.js +14 -0
  80. package/lib/esm/src/openai/openai.js.map +1 -0
  81. package/lib/esm/src/replicate.js +268 -0
  82. package/lib/esm/src/replicate.js.map +1 -0
  83. package/lib/esm/src/test/TestErrorCompletionStream.js +16 -0
  84. package/lib/esm/src/test/TestErrorCompletionStream.js.map +1 -0
  85. package/lib/esm/src/test/TestValidationErrorCompletionStream.js +20 -0
  86. package/lib/esm/src/test/TestValidationErrorCompletionStream.js.map +1 -0
  87. package/lib/esm/src/test/index.js +91 -0
  88. package/lib/esm/src/test/index.js.map +1 -0
  89. package/lib/esm/src/test/utils.js +25 -0
  90. package/lib/esm/src/test/utils.js.map +1 -0
  91. package/lib/esm/src/togetherai/index.js +122 -0
  92. package/lib/esm/src/togetherai/index.js.map +1 -0
  93. package/lib/esm/src/togetherai/interfaces.js +2 -0
  94. package/lib/esm/src/togetherai/interfaces.js.map +1 -0
  95. package/lib/esm/src/vertexai/debug.js +6 -0
  96. package/lib/esm/src/vertexai/debug.js.map +1 -0
  97. package/lib/esm/src/vertexai/embeddings/embeddings-image.js +24 -0
  98. package/lib/esm/src/vertexai/embeddings/embeddings-image.js.map +1 -0
  99. package/lib/esm/src/vertexai/embeddings/embeddings-text.js +20 -0
  100. package/lib/esm/src/vertexai/embeddings/embeddings-text.js.map +1 -0
  101. package/lib/esm/src/vertexai/index.js +270 -0
  102. package/lib/esm/src/vertexai/index.js.map +1 -0
  103. package/lib/esm/src/vertexai/models/claude.js +370 -0
  104. package/lib/esm/src/vertexai/models/claude.js.map +1 -0
  105. package/lib/esm/src/vertexai/models/gemini.js +700 -0
  106. package/lib/esm/src/vertexai/models/gemini.js.map +1 -0
  107. package/lib/esm/src/vertexai/models/imagen.js +310 -0
  108. package/lib/esm/src/vertexai/models/imagen.js.map +1 -0
  109. package/lib/esm/src/vertexai/models/llama.js +178 -0
  110. package/lib/esm/src/vertexai/models/llama.js.map +1 -0
  111. package/lib/esm/src/vertexai/models.js +21 -0
  112. package/lib/esm/src/vertexai/models.js.map +1 -0
  113. package/lib/esm/src/watsonx/index.js +157 -0
  114. package/lib/esm/src/watsonx/index.js.map +1 -0
  115. package/lib/esm/src/watsonx/interfaces.js +2 -0
  116. package/lib/esm/src/watsonx/interfaces.js.map +1 -0
  117. package/lib/esm/src/xai/index.js +64 -0
  118. package/lib/esm/src/xai/index.js.map +1 -0
  119. package/lib/esm/tsconfig.tsbuildinfo +1 -0
  120. package/lib/esm/vertexai/index.js +1 -0
  121. package/lib/esm/vertexai/index.js.map +1 -1
  122. package/lib/esm/vertexai/models/claude.js +230 -119
  123. package/lib/esm/vertexai/models/claude.js.map +1 -1
  124. package/lib/esm/vertexai/models/gemini.js +109 -70
  125. package/lib/esm/vertexai/models/gemini.js.map +1 -1
  126. package/lib/esm/vertexai/models/imagen.js +2 -2
  127. package/lib/esm/vertexai/models/imagen.js.map +1 -1
  128. package/lib/esm/watsonx/index.js +11 -11
  129. package/lib/esm/watsonx/index.js.map +1 -1
  130. package/lib/esm/xai/index.js +2 -2
  131. package/lib/esm/xai/index.js.map +1 -1
  132. package/lib/types/azure/azure_foundry.d.ts +50 -0
  133. package/lib/types/azure/azure_foundry.d.ts.map +1 -0
  134. package/lib/types/bedrock/converse.d.ts +2 -2
  135. package/lib/types/bedrock/converse.d.ts.map +1 -1
  136. package/lib/types/bedrock/index.d.ts +5 -5
  137. package/lib/types/bedrock/index.d.ts.map +1 -1
  138. package/lib/types/groq/index.d.ts +5 -5
  139. package/lib/types/groq/index.d.ts.map +1 -1
  140. package/lib/types/index.d.ts +2 -1
  141. package/lib/types/index.d.ts.map +1 -1
  142. package/lib/types/mistral/index.d.ts +2 -2
  143. package/lib/types/mistral/index.d.ts.map +1 -1
  144. package/lib/types/openai/azure_openai.d.ts +25 -0
  145. package/lib/types/openai/azure_openai.d.ts.map +1 -0
  146. package/lib/types/openai/index.d.ts +6 -7
  147. package/lib/types/openai/index.d.ts.map +1 -1
  148. package/lib/types/openai/openai.d.ts +2 -2
  149. package/lib/types/openai/openai.d.ts.map +1 -1
  150. package/lib/types/openai/openai_format.d.ts +19 -0
  151. package/lib/types/openai/openai_format.d.ts.map +1 -0
  152. package/lib/types/src/adobe/firefly.d.ts +29 -0
  153. package/lib/types/src/bedrock/converse.d.ts +8 -0
  154. package/lib/types/src/bedrock/index.d.ts +57 -0
  155. package/lib/types/src/bedrock/nova-image-payload.d.ts +73 -0
  156. package/lib/types/src/bedrock/payloads.d.ts +11 -0
  157. package/lib/types/src/bedrock/s3.d.ts +22 -0
  158. package/lib/types/src/groq/index.d.ts +23 -0
  159. package/lib/types/src/huggingface_ie.d.ts +31 -0
  160. package/lib/types/src/index.d.ts +12 -0
  161. package/lib/types/src/mistral/index.d.ts +24 -0
  162. package/lib/types/src/mistral/types.d.ts +131 -0
  163. package/lib/types/src/openai/azure.d.ts +19 -0
  164. package/lib/types/src/openai/index.d.ts +25 -0
  165. package/lib/types/src/openai/openai.d.ts +14 -0
  166. package/lib/types/src/replicate.d.ts +44 -0
  167. package/lib/types/src/test/TestErrorCompletionStream.d.ts +8 -0
  168. package/lib/types/src/test/TestValidationErrorCompletionStream.d.ts +8 -0
  169. package/lib/types/src/test/index.d.ts +23 -0
  170. package/lib/types/src/test/utils.d.ts +4 -0
  171. package/lib/types/src/togetherai/index.d.ts +22 -0
  172. package/lib/types/src/togetherai/interfaces.d.ts +95 -0
  173. package/lib/types/src/vertexai/debug.d.ts +1 -0
  174. package/lib/types/src/vertexai/embeddings/embeddings-image.d.ts +10 -0
  175. package/lib/types/src/vertexai/embeddings/embeddings-text.d.ts +9 -0
  176. package/lib/types/src/vertexai/index.d.ts +49 -0
  177. package/lib/types/src/vertexai/models/claude.d.ts +17 -0
  178. package/lib/types/src/vertexai/models/gemini.d.ts +16 -0
  179. package/lib/types/src/vertexai/models/imagen.d.ts +74 -0
  180. package/lib/types/src/vertexai/models/llama.d.ts +19 -0
  181. package/lib/types/src/vertexai/models.d.ts +14 -0
  182. package/lib/types/src/watsonx/index.d.ts +26 -0
  183. package/lib/types/src/watsonx/interfaces.d.ts +64 -0
  184. package/lib/types/src/xai/index.d.ts +18 -0
  185. package/lib/types/vertexai/index.d.ts +2 -3
  186. package/lib/types/vertexai/index.d.ts.map +1 -1
  187. package/lib/types/vertexai/models/claude.d.ts +5 -7
  188. package/lib/types/vertexai/models/claude.d.ts.map +1 -1
  189. package/lib/types/vertexai/models/gemini.d.ts +4 -2
  190. package/lib/types/vertexai/models/gemini.d.ts.map +1 -1
  191. package/lib/types/vertexai/models.d.ts +2 -2
  192. package/lib/types/vertexai/models.d.ts.map +1 -1
  193. package/lib/types/xai/index.d.ts.map +1 -1
  194. package/package.json +20 -16
  195. package/src/azure/azure_foundry.ts +450 -0
  196. package/src/bedrock/converse.ts +194 -129
  197. package/src/bedrock/index.ts +182 -84
  198. package/src/groq/index.ts +107 -16
  199. package/src/index.ts +2 -1
  200. package/src/mistral/index.ts +3 -2
  201. package/src/openai/azure_openai.ts +92 -0
  202. package/src/openai/index.ts +19 -22
  203. package/src/openai/openai.ts +2 -5
  204. package/src/openai/openai_format.ts +165 -0
  205. package/src/vertexai/index.ts +3 -3
  206. package/src/vertexai/models/claude.ts +270 -138
  207. package/src/vertexai/models/gemini.ts +120 -77
  208. package/src/vertexai/models/imagen.ts +3 -3
  209. package/src/vertexai/models.ts +2 -2
  210. package/src/watsonx/index.ts +17 -17
  211. package/src/xai/index.ts +2 -3
@@ -0,0 +1,370 @@
1
+ import { getMaxTokensLimitVertexAi, ModelType, PromptRole, readStreamAsBase64, readStreamAsString } from "@llumiverse/core";
2
+ import { asyncMap } from "@llumiverse/core/async";
3
+ function claudeFinishReason(reason) {
4
+ if (!reason)
5
+ return undefined;
6
+ switch (reason) {
7
+ case 'end_turn': return "stop";
8
+ case 'max_tokens': return "length";
9
+ default: return reason; //stop_sequence
10
+ }
11
+ }
12
+ export function collectTools(content) {
13
+ const out = [];
14
+ for (const block of content) {
15
+ if (block.type === "tool_use") {
16
+ out.push({
17
+ id: block.id,
18
+ tool_name: block.name,
19
+ tool_input: block.input,
20
+ });
21
+ }
22
+ }
23
+ return out.length > 0 ? out : undefined;
24
+ }
25
+ function collectAllTextContent(content, includeThoughts = false) {
26
+ const textParts = [];
27
+ // First pass: collect thinking blocks
28
+ if (includeThoughts) {
29
+ for (const block of content) {
30
+ if (block.type === 'thinking' && block.thinking) {
31
+ textParts.push(block.thinking);
32
+ }
33
+ else if (block.type === 'redacted_thinking' && block.data) {
34
+ textParts.push(`[Redacted thinking: ${block.data}]`);
35
+ }
36
+ }
37
+ if (textParts.length > 0) {
38
+ textParts.push(''); // Create a new line after thinking blocks
39
+ }
40
+ }
41
+ // Second pass: collect text blocks
42
+ for (const block of content) {
43
+ if (block.type === 'text' && block.text) {
44
+ textParts.push(block.text);
45
+ }
46
+ }
47
+ return textParts.join('\n');
48
+ }
49
+ //Used to get a max_token value when not specified in the model options. Claude requires it to be set.
50
+ function maxToken(option) {
51
+ const modelOptions = option.model_options;
52
+ if (modelOptions && typeof modelOptions.max_tokens === "number") {
53
+ return modelOptions.max_tokens;
54
+ }
55
+ else {
56
+ // Fallback to the default max tokens limit for the model
57
+ if (option.model.includes('claude-3-7-sonnet') && (modelOptions?.thinking_budget_tokens ?? 0) < 64000) {
58
+ return 64000; // Claude 3.7 can go up to 128k with a beta header, but when no max tokens is specified, we default to 64k.
59
+ }
60
+ return getMaxTokensLimitVertexAi(option.model);
61
+ }
62
+ }
63
+ async function collectFileBlocks(segment, restrictedTypes = false) {
64
+ const contentBlocks = [];
65
+ for (const file of segment.files || []) {
66
+ if (file.mime_type?.startsWith("image/")) {
67
+ const allowedTypes = ["image/png", "image/jpeg", "image/gif", "image/webp"];
68
+ if (!allowedTypes.includes(file.mime_type)) {
69
+ throw new Error(`Unsupported image type: ${file.mime_type}`);
70
+ }
71
+ const mimeType = String(file.mime_type);
72
+ contentBlocks.push({
73
+ type: 'image',
74
+ source: {
75
+ type: 'base64',
76
+ data: await readStreamAsBase64(await file.getStream()),
77
+ media_type: mimeType
78
+ }
79
+ });
80
+ }
81
+ else if (!restrictedTypes) {
82
+ if (file.mime_type === "application/pdf") {
83
+ contentBlocks.push({
84
+ title: file.name,
85
+ type: 'document',
86
+ source: {
87
+ type: 'base64',
88
+ data: await readStreamAsBase64(await file.getStream()),
89
+ media_type: 'application/pdf'
90
+ }
91
+ });
92
+ }
93
+ else if (file.mime_type?.startsWith("text/")) {
94
+ contentBlocks.push({
95
+ title: file.name,
96
+ type: 'document',
97
+ source: {
98
+ type: 'text',
99
+ data: await readStreamAsString(await file.getStream()),
100
+ media_type: 'text/plain'
101
+ }
102
+ });
103
+ }
104
+ }
105
+ }
106
+ return contentBlocks;
107
+ }
108
+ export class ClaudeModelDefinition {
109
+ model;
110
+ constructor(modelId) {
111
+ this.model = {
112
+ id: modelId,
113
+ name: modelId,
114
+ provider: 'vertexai',
115
+ type: ModelType.Text,
116
+ can_stream: true,
117
+ };
118
+ }
119
+ async createPrompt(_driver, segments, options) {
120
+ // Convert the prompt to the format expected by the Claude API
121
+ let system = segments
122
+ .filter(segment => segment.role === PromptRole.system)
123
+ .map(segment => ({
124
+ text: segment.content,
125
+ type: 'text'
126
+ }));
127
+ if (options.result_schema) {
128
+ let schemaText = '';
129
+ if (options.tools && options.tools.length > 0) {
130
+ schemaText = "When not calling tools, the answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(options.result_schema);
131
+ }
132
+ else {
133
+ schemaText = "The answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(options.result_schema);
134
+ }
135
+ const schemaSegments = {
136
+ text: schemaText,
137
+ type: 'text'
138
+ };
139
+ system.push(schemaSegments);
140
+ }
141
+ let messages = [];
142
+ const safetyMessages = [];
143
+ for (const segment of segments) {
144
+ if (segment.role === PromptRole.system) {
145
+ continue;
146
+ }
147
+ if (segment.role === PromptRole.tool) {
148
+ if (!segment.tool_use_id) {
149
+ throw new Error("Tool prompt segment must have a tool use ID");
150
+ }
151
+ // Build content blocks for tool results (restricted types)
152
+ const contentBlocks = [];
153
+ if (segment.content) {
154
+ contentBlocks.push({
155
+ type: 'text',
156
+ text: segment.content
157
+ });
158
+ }
159
+ // Collect file blocks with type safety
160
+ const fileBlocks = await collectFileBlocks(segment, true);
161
+ contentBlocks.push(...fileBlocks);
162
+ messages.push({
163
+ role: 'user',
164
+ content: [{
165
+ type: 'tool_result',
166
+ tool_use_id: segment.tool_use_id,
167
+ content: contentBlocks,
168
+ }]
169
+ });
170
+ }
171
+ else {
172
+ // Build content blocks for regular messages (all types allowed)
173
+ const contentBlocks = [];
174
+ if (segment.content) {
175
+ contentBlocks.push({
176
+ type: 'text',
177
+ text: segment.content
178
+ });
179
+ }
180
+ // Collect file blocks without restrictions
181
+ const fileBlocks = await collectFileBlocks(segment, false);
182
+ contentBlocks.push(...fileBlocks);
183
+ if (contentBlocks.length === 0) {
184
+ continue; // skip empty segments
185
+ }
186
+ const messageParam = {
187
+ role: segment.role === PromptRole.assistant ? 'assistant' : 'user',
188
+ content: contentBlocks
189
+ };
190
+ if (segment.role === PromptRole.safety) {
191
+ safetyMessages.push(messageParam);
192
+ }
193
+ else {
194
+ messages.push(messageParam);
195
+ }
196
+ }
197
+ }
198
+ messages = messages.concat(safetyMessages);
199
+ if (system && system.length === 0) {
200
+ system = undefined; // If system is empty, set to undefined
201
+ }
202
+ return {
203
+ messages: messages,
204
+ system: system
205
+ };
206
+ }
207
+ async requestTextCompletion(driver, prompt, options) {
208
+ const client = driver.getAnthropicClient();
209
+ options.model_options = options.model_options;
210
+ if (options.model_options?._option_id !== "vertexai-claude") {
211
+ driver.logger.warn("Invalid model options", { options: options.model_options });
212
+ }
213
+ let conversation = updateConversation(options.conversation, prompt);
214
+ const { payload, requestOptions } = getClaudePayload(options, conversation);
215
+ // disable streaming, the create function is overloaded so payload type matters.
216
+ const nonStreamingPayload = { ...payload, stream: false };
217
+ const result = await client.messages.create(nonStreamingPayload, requestOptions);
218
+ // Use the new function to collect text content, including thinking if enabled
219
+ const includeThoughts = options.model_options?.include_thoughts ?? false;
220
+ const text = collectAllTextContent(result.content, includeThoughts);
221
+ const tool_use = collectTools(result.content);
222
+ conversation = updateConversation(conversation, createPromptFromResponse(result));
223
+ return {
224
+ result: text ?? '',
225
+ tool_use,
226
+ token_usage: {
227
+ prompt: result.usage.input_tokens,
228
+ result: result.usage.output_tokens,
229
+ total: result.usage.input_tokens + result.usage.output_tokens
230
+ },
231
+ // make sure we set finish_reason to the correct value (claude is normally setting this by itself)
232
+ finish_reason: tool_use ? "tool_use" : claudeFinishReason(result?.stop_reason ?? ''),
233
+ conversation
234
+ };
235
+ }
236
+ async requestTextCompletionStream(driver, prompt, options) {
237
+ const client = driver.getAnthropicClient();
238
+ const model_options = options.model_options;
239
+ if (model_options?._option_id !== "vertexai-claude") {
240
+ driver.logger.warn("Invalid model options", { options: options.model_options });
241
+ }
242
+ const { payload, requestOptions } = getClaudePayload(options, prompt);
243
+ const streamingPayload = { ...payload, stream: true };
244
+ const response_stream = await client.messages.stream(streamingPayload, requestOptions);
245
+ const stream = asyncMap(response_stream, async (streamEvent) => {
246
+ switch (streamEvent.type) {
247
+ case "message_start":
248
+ return {
249
+ result: '',
250
+ token_usage: {
251
+ prompt: streamEvent.message.usage.input_tokens,
252
+ result: streamEvent.message.usage.output_tokens
253
+ }
254
+ };
255
+ case "message_delta":
256
+ return {
257
+ result: '',
258
+ token_usage: {
259
+ result: streamEvent.usage.output_tokens
260
+ },
261
+ finish_reason: claudeFinishReason(streamEvent.delta.stop_reason ?? undefined),
262
+ };
263
+ case "content_block_start":
264
+ // Handle redacted thinking blocks
265
+ if (streamEvent.content_block.type === "redacted_thinking" && model_options?.include_thoughts) {
266
+ return {
267
+ result: `[Redacted thinking: ${streamEvent.content_block.data}]`
268
+ };
269
+ }
270
+ break;
271
+ case "content_block_delta":
272
+ // Handle different delta types
273
+ switch (streamEvent.delta.type) {
274
+ case "text_delta":
275
+ return {
276
+ result: streamEvent.delta.text ?? ''
277
+ };
278
+ case "thinking_delta":
279
+ if (model_options?.include_thoughts) {
280
+ return {
281
+ result: streamEvent.delta.thinking ?? '',
282
+ };
283
+ }
284
+ break;
285
+ case "signature_delta":
286
+ // Signature deltas, signify the end of the thoughts.
287
+ if (model_options?.include_thoughts) {
288
+ return {
289
+ result: '\n\n', // Double newline for more spacing
290
+ };
291
+ }
292
+ break;
293
+ }
294
+ break;
295
+ case "content_block_stop":
296
+ // Handle the end of content blocks, for redacted thinking blocks
297
+ if (model_options?.include_thoughts) {
298
+ return {
299
+ result: '\n\n' // Add double newline for spacing
300
+ };
301
+ }
302
+ break;
303
+ }
304
+ // Default case for all other event types
305
+ return {
306
+ result: ''
307
+ };
308
+ });
309
+ return stream;
310
+ }
311
+ }
312
+ function createPromptFromResponse(response) {
313
+ return {
314
+ messages: [{
315
+ role: response.role,
316
+ content: response.content,
317
+ }],
318
+ system: undefined
319
+ };
320
+ }
321
+ /**
322
+ * Update the conversation messages
323
+ * @param prompt
324
+ * @param response
325
+ * @returns
326
+ */
327
+ function updateConversation(conversation, prompt) {
328
+ const baseSystemMessages = conversation?.system || [];
329
+ const baseMessages = conversation?.messages || [];
330
+ const system = baseSystemMessages.concat(prompt.system || []);
331
+ return {
332
+ messages: baseMessages.concat(prompt.messages || []),
333
+ system: system.length > 0 ? system : undefined // If system is empty, set to undefined
334
+ };
335
+ }
336
+ function getClaudePayload(options, prompt) {
337
+ const splits = options.model.split("/");
338
+ const modelName = splits[splits.length - 1];
339
+ const model_options = options.model_options;
340
+ // Add beta header for Claude 3.7 models to enable 128k output tokens
341
+ let requestOptions = undefined;
342
+ if (modelName.includes('claude-3-7-sonnet') &&
343
+ ((model_options?.max_tokens ?? 0) > 64000 || (model_options?.thinking_budget_tokens ?? 0) > 64000)) {
344
+ requestOptions = {
345
+ headers: {
346
+ 'anthropic-beta': 'output-128k-2025-02-19'
347
+ }
348
+ };
349
+ }
350
+ const payload = {
351
+ messages: prompt.messages,
352
+ system: prompt.system,
353
+ tools: options.tools, // we are using the same shape as claude for tools
354
+ temperature: model_options?.temperature,
355
+ model: modelName,
356
+ max_tokens: maxToken(options),
357
+ top_p: model_options?.top_p,
358
+ top_k: model_options?.top_k,
359
+ stop_sequences: model_options?.stop_sequence,
360
+ thinking: model_options?.thinking_mode ?
361
+ {
362
+ budget_tokens: model_options?.thinking_budget_tokens ?? 1024,
363
+ type: "enabled"
364
+ } : {
365
+ type: "disabled"
366
+ }
367
+ };
368
+ return { payload, requestOptions };
369
+ }
370
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../../../src/vertexai/models/claude.ts"],"names":[],"mappings":"AACA,OAAO,EAC2D,yBAAyB,EAAc,SAAS,EAC9G,UAAU,EAAiB,kBAAkB,EAAE,kBAAkB,EACpE,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAWlD,SAAS,kBAAkB,CAAC,MAA0B;IAClD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,UAAU,CAAC,CAAC,OAAO,MAAM,CAAC;QAC/B,KAAK,YAAY,CAAC,CAAC,OAAO,QAAQ,CAAC;QACnC,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,eAAe;IAC3C,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAuB;IAChD,MAAM,GAAG,GAAc,EAAE,CAAC;IAE1B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAC;gBACL,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,SAAS,EAAE,KAAK,CAAC,IAAI;gBACrB,UAAU,EAAE,KAAK,CAAC,KAAmB;aACxC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5C,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAuB,EAAE,kBAA2B,KAAK;IACpF,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,sCAAsC;IACtC,IAAI,eAAe,EAAE,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC9C,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnC,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC1D,SAAS,CAAC,IAAI,CAAC,uBAAuB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACzD,CAAC;QACL,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,0CAA0C;QAClE,CAAC;IACL,CAAC;IAED,mCAAmC;IACnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACtC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,sGAAsG;AACtG,SAAS,QAAQ,CAAC,MAAiC;IAC/C,MAAM,YAAY,GAAG,MAAM,CAAC,aAAkD,CAAC;IAC/E,IAAI,YAAY,IAAI,OAAO,YAAY,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC9D,OAAO,YAAY,CAAC,UAAU,CAAC;IACnC,CAAC;SAAM,CAAC;QACJ,yDAAyD;QACzD,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,sBAAsB,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC;YACpG,OAAO,KAAK,CAAC,CAAC,2GAA2G;QAC7H,CAAC;QACD,OAAO,yBAAyB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;AACL,CAAC;AAKD,KAAK,UAAU,iBAAiB,CAAC,OAAsB,EAAE,kBAA2B,KAAK;IACrF,MAAM,aAAa,GAAwB,EAAE,CAAC;IAE9C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;YAC5E,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAA4D,CAAC;YAEnG,aAAa,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,MAAM,kBAAkB,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;oBACtD,UAAU,EAAE,QAAQ;iBACvB;aACsB,CAAC,CAAC;QACjC,CAAC;aAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,SAAS,KAAK,iBAAiB,EAAE,CAAC;gBACvC,aAAa,CAAC,IAAI,CAAC;oBACf,KAAK,EAAE,IAAI,CAAC,IAAI;oBAChB,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,MAAM,kBAAkB,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;wBACtD,UAAU,EAAE,iBAAiB;qBAChC;iBACyB,CAAC,CAAC;YACpC,CAAC;iBAAM,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7C,aAAa,CAAC,IAAI,CAAC;oBACf,KAAK,EAAE,IAAI,CAAC,IAAI;oBAChB,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE;wBACJ,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,MAAM,kBAAkB,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;wBACtD,UAAU,EAAE,YAAY;qBAC3B;iBACyB,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC;AAED,MAAM,OAAO,qBAAqB;IAE9B,KAAK,CAAS;IAEd,YAAY,OAAe;QACvB,IAAI,CAAC,KAAK,GAAG;YACT,EAAE,EAAE,OAAO;YACX,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,UAAU,EAAE,IAAI;SACD,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAuB,EAAE,QAAyB,EAAE,OAAyB;QAC5F,8DAA8D;QAC9D,IAAI,MAAM,GAAiC,QAAQ;aAC9C,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,CAAC;aACrD,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,EAAE,OAAO,CAAC,OAAO;YACrB,IAAI,EAAE,MAAM;SACf,CAAC,CAAC,CAAC;QAER,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,UAAU,GAAW,EAAE,CAAC;YAC5B,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,UAAU,GAAG,6FAA6F,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACvJ,CAAC;iBAAM,CAAC;gBACJ,UAAU,GAAG,qEAAqE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC/H,CAAC;YAED,MAAM,cAAc,GAAmB;gBACnC,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,MAAM;aACf,CAAA;YACD,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,QAAQ,GAAmB,EAAE,CAAC;QAClC,MAAM,cAAc,GAAmB,EAAE,CAAC;QAC1C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;gBACrC,SAAS;YACb,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBACnE,CAAC;gBAED,2DAA2D;gBAC3D,MAAM,aAAa,GAA4C,EAAE,CAAC;gBAElE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBAClB,aAAa,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,OAAO,CAAC,OAAO;qBACC,CAAC,CAAC;gBAChC,CAAC;gBAED,uCAAuC;gBACvC,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC1D,aAAa,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;gBAElC,QAAQ,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,CAAC;4BACN,IAAI,EAAE,aAAa;4BACnB,WAAW,EAAE,OAAO,CAAC,WAAW;4BAChC,OAAO,EAAE,aAAa;yBACM,CAAC;iBACpC,CAAC,CAAC;YAEP,CAAC;iBAAM,CAAC;gBACJ,gEAAgE;gBAChE,MAAM,aAAa,GAAwB,EAAE,CAAC;gBAE9C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBAClB,aAAa,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,OAAO,CAAC,OAAO;qBACC,CAAC,CAAC;gBAChC,CAAC;gBAED,2CAA2C;gBAC3C,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC3D,aAAa,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;gBAElC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7B,SAAS,CAAC,sBAAsB;gBACpC,CAAC;gBAED,MAAM,YAAY,GAAiB;oBAC/B,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM;oBAClE,OAAO,EAAE,aAAa;iBACzB,CAAC;gBAEF,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;oBACrC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACJ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAChC,CAAC;YACL,CAAC;QACL,CAAC;QAED,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAE3C,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,GAAG,SAAS,CAAC,CAAC,uCAAuC;QAC/D,CAAC;QAED,OAAO;YACH,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,MAAM;SACjB,CAAA;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,MAAsB,EAAE,MAAoB,EAAE,OAAyB;QAC/F,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC3C,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,aAAsC,CAAC;QAEvE,IAAI,OAAO,CAAC,aAAa,EAAE,UAAU,KAAK,iBAAiB,EAAE,CAAC;YAC1D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,YAA4B,EAAE,MAAM,CAAC,CAAC;QAEpF,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC5E,gFAAgF;QAChF,MAAM,mBAAmB,GAAoC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAE3F,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAAmB,CAAC;QAEnG,8EAA8E;QAC9E,MAAM,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,gBAAgB,IAAI,KAAK,CAAC;QACzE,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE9C,YAAY,GAAG,kBAAkB,CAAC,YAAY,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;QAElF,OAAO;YACH,MAAM,EAAE,IAAI,IAAI,EAAE;YAClB,QAAQ;YACR,WAAW,EAAE;gBACT,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY;gBACjC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa;gBAClC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa;aAChE;YACD,kGAAkG;YAClG,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,IAAI,EAAE,CAAC;YACpF,YAAY;SACM,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,MAAsB,EAAE,MAAoB,EAAE,OAAyB;QACrG,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC3C,MAAM,aAAa,GAAG,OAAO,CAAC,aAAkD,CAAC;QAEjF,IAAI,aAAa,EAAE,UAAU,KAAK,iBAAiB,EAAE,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACtE,MAAM,gBAAgB,GAAwB,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAE3E,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAEvF,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,EAAE,KAAK,EAAE,WAAkC,EAAE,EAAE;YAClF,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;gBACvB,KAAK,eAAe;oBAChB,OAAO;wBACH,MAAM,EAAE,EAAE;wBACV,WAAW,EAAE;4BACT,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY;4BAC9C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa;yBAClD;qBAC4B,CAAC;gBACtC,KAAK,eAAe;oBAChB,OAAO;wBACH,MAAM,EAAE,EAAE;wBACV,WAAW,EAAE;4BACT,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,aAAa;yBAC1C;wBACD,aAAa,EAAE,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC;qBAChD,CAAC;gBACtC,KAAK,qBAAqB;oBACtB,kCAAkC;oBAClC,IAAI,WAAW,CAAC,aAAa,CAAC,IAAI,KAAK,mBAAmB,IAAI,aAAa,EAAE,gBAAgB,EAAE,CAAC;wBAC5F,OAAO;4BACH,MAAM,EAAE,uBAAuB,WAAW,CAAC,aAAa,CAAC,IAAI,GAAG;yBACnC,CAAC;oBACtC,CAAC;oBACD,MAAM;gBACV,KAAK,qBAAqB;oBACtB,+BAA+B;oBAC/B,QAAQ,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;wBAC7B,KAAK,YAAY;4BACb,OAAO;gCACH,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;6BACP,CAAC;wBACtC,KAAK,gBAAgB;4BACjB,IAAI,aAAa,EAAE,gBAAgB,EAAE,CAAC;gCAClC,OAAO;oCACH,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE;iCACX,CAAC;4BACtC,CAAC;4BACD,MAAM;wBACV,KAAK,iBAAiB;4BAClB,qDAAqD;4BACrD,IAAI,aAAa,EAAE,gBAAgB,EAAE,CAAC;gCAClC,OAAO;oCACH,MAAM,EAAE,MAAM,EAAE,kCAAkC;iCACrB,CAAC;4BACtC,CAAC;4BACD,MAAM;oBACd,CAAC;oBACD,MAAM;gBACV,KAAK,oBAAoB;oBACrB,iEAAiE;oBACjE,IAAI,aAAa,EAAE,gBAAgB,EAAE,CAAC;wBAClC,OAAO;4BACH,MAAM,EAAE,MAAM,CAAC,iCAAiC;yBACnB,CAAC;oBACtC,CAAC;oBACD,MAAM;YACd,CAAC;YAED,yCAAyC;YACzC,OAAO;gBACH,MAAM,EAAE,EAAE;aACmB,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAED,SAAS,wBAAwB,CAAC,QAAiB;IAC/C,OAAO;QACH,QAAQ,EAAE,CAAC;gBACP,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;aAC5B,CAAC;QACF,MAAM,EAAE,SAAS;KACpB,CAAA;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,YAA6C,EAAE,MAAoB;IAC3F,MAAM,kBAAkB,GAAG,YAAY,EAAE,MAAM,IAAI,EAAE,CAAC;IACtD,MAAM,YAAY,GAAG,YAAY,EAAE,QAAQ,IAAI,EAAE,CAAC;IAClD,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC9D,OAAO;QACH,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QACpD,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,uCAAuC;KACzF,CAAC;AACN,CAAC;AAKD,SAAS,gBAAgB,CAAC,OAAyB,EAAE,MAAoB;IACrE,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,OAAO,CAAC,aAAsC,CAAC;IAErE,qEAAqE;IACrE,IAAI,cAAc,GAA+B,SAAS,CAAC;IAC3D,IAAI,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACvC,CAAC,CAAC,aAAa,EAAE,UAAU,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,EAAE,sBAAsB,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;QACrG,cAAc,GAAG;YACb,OAAO,EAAE;gBACL,gBAAgB,EAAE,wBAAwB;aAC7C;SACJ,CAAC;IACN,CAAC;IAED,MAAM,OAAO,GAAG;QACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,kDAAkD;QACxE,WAAW,EAAE,aAAa,EAAE,WAAW;QACvC,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC;QAC7B,KAAK,EAAE,aAAa,EAAE,KAAK;QAC3B,KAAK,EAAE,aAAa,EAAE,KAAK;QAC3B,cAAc,EAAE,aAAa,EAAE,aAAa;QAC5C,QAAQ,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;YACpC;gBACI,aAAa,EAAE,aAAa,EAAE,sBAAsB,IAAI,IAAI;gBAC5D,IAAI,EAAE,SAAkB;aAC3B,CAAC,CAAC,CAAC;YACA,IAAI,EAAE,UAAmB;SAC5B;KACR,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AACvC,CAAC"}