@librechat/agents 3.1.64 → 3.1.65

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.
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","sources":["../../../../src/llm/anthropic/types.ts"],"sourcesContent":["import Anthropic from '@anthropic-ai/sdk';\nimport { BindToolsInput } from '@langchain/core/language_models/chat_models';\n\nexport type AnthropicStreamUsage = Anthropic.Usage;\nexport type AnthropicMessageDeltaEvent = Anthropic.MessageDeltaEvent;\nexport type AnthropicMessageStartEvent = Anthropic.MessageStartEvent;\n\nexport type AnthropicToolResponse = {\n type: 'tool_use';\n id: string;\n name: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n input: Record<string, any>;\n};\n\nexport type AnthropicMessageParam = Anthropic.MessageParam;\nexport type AnthropicMessageResponse =\n | Anthropic.ContentBlock\n | AnthropicToolResponse;\nexport type AnthropicMessageCreateParams =\n Anthropic.MessageCreateParamsNonStreaming;\nexport type AnthropicStreamingMessageCreateParams =\n Anthropic.MessageCreateParamsStreaming;\nexport type AnthropicThinkingConfigParam = Anthropic.ThinkingConfigParam;\nexport type AnthropicMessageStreamEvent = Anthropic.MessageStreamEvent;\nexport type AnthropicRequestOptions = Anthropic.RequestOptions;\nexport type AnthropicToolChoice =\n | {\n type: 'tool';\n name: string;\n }\n | 'any'\n | 'auto'\n | 'none'\n | string;\nexport type ChatAnthropicToolType = Anthropic.Messages.Tool | BindToolsInput;\nexport type AnthropicTextBlockParam = Anthropic.Messages.TextBlockParam;\nexport type AnthropicImageBlockParam = Anthropic.Messages.ImageBlockParam;\nexport type AnthropicToolUseBlockParam = Anthropic.Messages.ToolUseBlockParam;\nexport type AnthropicToolResultBlockParam =\n Anthropic.Messages.ToolResultBlockParam;\nexport type AnthropicDocumentBlockParam = Anthropic.Messages.DocumentBlockParam;\nexport type AnthropicThinkingBlockParam = Anthropic.Messages.ThinkingBlockParam;\nexport type AnthropicRedactedThinkingBlockParam =\n Anthropic.Messages.RedactedThinkingBlockParam;\nexport type AnthropicServerToolUseBlockParam =\n Anthropic.Messages.ServerToolUseBlockParam;\nexport type AnthropicWebSearchToolResultBlockParam =\n Anthropic.Messages.WebSearchToolResultBlockParam;\nexport type AnthropicWebSearchResultBlockParam =\n Anthropic.Messages.WebSearchResultBlockParam;\nexport type AnthropicSearchResultBlockParam =\n Anthropic.Beta.BetaSearchResultBlockParam;\nexport type AnthropicCompactionBlockParam =\n Anthropic.Beta.BetaCompactionBlockParam;\nexport type AnthropicOutputConfig = Anthropic.Messages.OutputConfig;\nexport type ChatAnthropicOutputFormat = Anthropic.Messages.JSONOutputFormat;\n\n// Union of all possible content block types including server tool use\nexport type AnthropicContentBlock =\n | AnthropicTextBlockParam\n | AnthropicImageBlockParam\n | AnthropicToolUseBlockParam\n | AnthropicToolResultBlockParam\n | AnthropicDocumentBlockParam\n | AnthropicThinkingBlockParam\n | AnthropicRedactedThinkingBlockParam\n | AnthropicServerToolUseBlockParam\n | AnthropicWebSearchToolResultBlockParam\n | AnthropicWebSearchResultBlockParam\n | AnthropicCompactionBlockParam;\n\n// Union of all possible content block types including server tool use\nexport type ChatAnthropicContentBlock =\n | AnthropicTextBlockParam\n | AnthropicImageBlockParam\n | AnthropicToolUseBlockParam\n | AnthropicToolResultBlockParam\n | AnthropicDocumentBlockParam\n | AnthropicThinkingBlockParam\n | AnthropicRedactedThinkingBlockParam\n | AnthropicServerToolUseBlockParam\n | AnthropicWebSearchToolResultBlockParam\n | AnthropicWebSearchResultBlockParam\n | AnthropicSearchResultBlockParam\n | AnthropicCompactionBlockParam;\n\nexport function isAnthropicImageBlockParam(\n block: unknown\n): block is AnthropicImageBlockParam {\n if (block == null) {\n return false;\n }\n if (typeof block !== 'object') {\n return false;\n }\n if (!('type' in block) || block.type !== 'image') {\n return false;\n }\n\n if (!('source' in block) || typeof block.source !== 'object') {\n return false;\n }\n\n if (block.source == null) {\n return false;\n }\n\n if (!('type' in block.source)) {\n return false;\n }\n\n if (block.source.type === 'base64') {\n if (!('media_type' in block.source)) {\n return false;\n }\n\n if (typeof block.source.media_type !== 'string') {\n return false;\n }\n\n if (!('data' in block.source)) {\n return false;\n }\n\n if (typeof block.source.data !== 'string') {\n return false;\n }\n\n return true;\n }\n\n if (block.source.type === 'url') {\n if (!('url' in block.source)) {\n return false;\n }\n\n if (typeof block.source.url !== 'string') {\n return false;\n }\n\n return true;\n }\n\n return false;\n}\n"],"names":[],"mappings":";;AAuFM,SAAU,0BAA0B,CACxC,KAAc,EAAA;AAEd,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAChD,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,EAAE,QAAQ,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC5D,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;AACxB,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC7B,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;QAClC,IAAI,EAAE,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACnC,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE;AAC/C,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC7B,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AACzC,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,IAAI;IACb;IAEA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;QAC/B,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC5B,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE;AACxC,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,KAAK;AACd;;;;"}
1
+ {"version":3,"file":"types.cjs","sources":["../../../../src/llm/anthropic/types.ts"],"sourcesContent":["import Anthropic from '@anthropic-ai/sdk';\nimport { BindToolsInput } from '@langchain/core/language_models/chat_models';\n\nexport type AnthropicStreamUsage = Anthropic.Usage;\nexport type AnthropicMessageDeltaEvent = Anthropic.MessageDeltaEvent;\nexport type AnthropicMessageStartEvent = Anthropic.MessageStartEvent;\n\nexport type AnthropicToolResponse = {\n type: 'tool_use' | 'server_tool_use';\n id: string;\n name: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n input: Record<string, any>;\n};\n\nexport type AnthropicMessageParam = Anthropic.MessageParam;\nexport type AnthropicMessageResponse =\n | Anthropic.ContentBlock\n | AnthropicToolResponse;\nexport type AnthropicMessageCreateParams =\n Anthropic.MessageCreateParamsNonStreaming;\nexport type AnthropicStreamingMessageCreateParams =\n Anthropic.MessageCreateParamsStreaming;\nexport type AnthropicThinkingConfigParam = Anthropic.ThinkingConfigParam;\nexport type AnthropicMessageStreamEvent = Anthropic.MessageStreamEvent;\nexport type AnthropicRequestOptions = Anthropic.RequestOptions;\nexport type AnthropicToolChoice =\n | {\n type: 'tool';\n name: string;\n }\n | 'any'\n | 'auto'\n | 'none'\n | string;\nexport type ChatAnthropicToolType = Anthropic.Messages.Tool | BindToolsInput;\nexport type AnthropicTextBlockParam = Anthropic.Messages.TextBlockParam;\nexport type AnthropicImageBlockParam = Anthropic.Messages.ImageBlockParam;\nexport type AnthropicToolUseBlockParam = Anthropic.Messages.ToolUseBlockParam;\nexport type AnthropicToolResultBlockParam =\n Anthropic.Messages.ToolResultBlockParam;\nexport type AnthropicDocumentBlockParam = Anthropic.Messages.DocumentBlockParam;\nexport type AnthropicThinkingBlockParam = Anthropic.Messages.ThinkingBlockParam;\nexport type AnthropicRedactedThinkingBlockParam =\n Anthropic.Messages.RedactedThinkingBlockParam;\nexport type AnthropicServerToolUseBlockParam =\n Anthropic.Messages.ServerToolUseBlockParam;\nexport type AnthropicWebSearchToolResultBlockParam =\n Anthropic.Messages.WebSearchToolResultBlockParam;\nexport type AnthropicWebSearchResultBlockParam =\n Anthropic.Messages.WebSearchResultBlockParam;\nexport type AnthropicSearchResultBlockParam =\n Anthropic.Beta.BetaSearchResultBlockParam;\nexport type AnthropicCompactionBlockParam =\n Anthropic.Beta.BetaCompactionBlockParam;\nexport type AnthropicOutputConfig = Anthropic.Messages.OutputConfig;\nexport type ChatAnthropicOutputFormat = Anthropic.Messages.JSONOutputFormat;\n\n// Union of all possible content block types including server tool use\nexport type AnthropicContentBlock =\n | AnthropicTextBlockParam\n | AnthropicImageBlockParam\n | AnthropicToolUseBlockParam\n | AnthropicToolResultBlockParam\n | AnthropicDocumentBlockParam\n | AnthropicThinkingBlockParam\n | AnthropicRedactedThinkingBlockParam\n | AnthropicServerToolUseBlockParam\n | AnthropicWebSearchToolResultBlockParam\n | AnthropicWebSearchResultBlockParam\n | AnthropicCompactionBlockParam;\n\n// Union of all possible content block types including server tool use\nexport type ChatAnthropicContentBlock =\n | AnthropicTextBlockParam\n | AnthropicImageBlockParam\n | AnthropicToolUseBlockParam\n | AnthropicToolResultBlockParam\n | AnthropicDocumentBlockParam\n | AnthropicThinkingBlockParam\n | AnthropicRedactedThinkingBlockParam\n | AnthropicServerToolUseBlockParam\n | AnthropicWebSearchToolResultBlockParam\n | AnthropicWebSearchResultBlockParam\n | AnthropicSearchResultBlockParam\n | AnthropicCompactionBlockParam;\n\nexport function isAnthropicImageBlockParam(\n block: unknown\n): block is AnthropicImageBlockParam {\n if (block == null) {\n return false;\n }\n if (typeof block !== 'object') {\n return false;\n }\n if (!('type' in block) || block.type !== 'image') {\n return false;\n }\n\n if (!('source' in block) || typeof block.source !== 'object') {\n return false;\n }\n\n if (block.source == null) {\n return false;\n }\n\n if (!('type' in block.source)) {\n return false;\n }\n\n if (block.source.type === 'base64') {\n if (!('media_type' in block.source)) {\n return false;\n }\n\n if (typeof block.source.media_type !== 'string') {\n return false;\n }\n\n if (!('data' in block.source)) {\n return false;\n }\n\n if (typeof block.source.data !== 'string') {\n return false;\n }\n\n return true;\n }\n\n if (block.source.type === 'url') {\n if (!('url' in block.source)) {\n return false;\n }\n\n if (typeof block.source.url !== 'string') {\n return false;\n }\n\n return true;\n }\n\n return false;\n}\n"],"names":[],"mappings":";;AAuFM,SAAU,0BAA0B,CACxC,KAAc,EAAA;AAEd,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAChD,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,EAAE,QAAQ,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC5D,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;AACxB,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC7B,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;QAClC,IAAI,EAAE,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACnC,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE;AAC/C,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC7B,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AACzC,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,IAAI;IACb;IAEA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;QAC/B,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC5B,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE;AACxC,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,KAAK;AACd;;;;"}
@@ -98,7 +98,9 @@ function _convertLangChainToolCallToAnthropic(toolCall) {
98
98
  throw new Error('Anthropic requires all tool calls to have an "id".');
99
99
  }
100
100
  return {
101
- type: 'tool_use',
101
+ type: toolCall.id.startsWith(_enum.Constants.ANTHROPIC_SERVER_TOOL_PREFIX)
102
+ ? 'server_tool_use'
103
+ : 'tool_use',
102
104
  id: toolCall.id,
103
105
  name: toolCall.name,
104
106
  input: toolCall.args,
@@ -303,71 +305,74 @@ function _formatContent(message) {
303
305
  else {
304
306
  const contentBlocks = content.map((contentPart) => {
305
307
  /**
306
- * Handle malformed blocks that have server tool fields mixed with text type.
307
- * These can occur when server_tool_use blocks get mislabeled during aggregation.
308
- * Correct their type ONLY if we can confirm it's a server tool by checking the ID prefix.
309
- * Anthropic needs both server_tool_use and web_search_tool_result blocks for citations to work.
308
+ * Normalize server_tool_use blocks into a clean shape the API accepts.
309
+ * These blocks may arrive with the correct type (server_tool_use) or mislabeled
310
+ * as text/tool_use after chunk concatenation or state serialization.
311
+ * Regardless of current type, if the id starts with 'srvtoolu_' we rebuild
312
+ * a clean block with only the properties the API expects.
310
313
  */
311
314
  if ('id' in contentPart &&
312
- 'name' in contentPart &&
313
- 'input' in contentPart &&
314
- contentPart.type === 'text') {
315
+ typeof contentPart.id === 'string' &&
316
+ contentPart.id.startsWith(_enum.Constants.ANTHROPIC_SERVER_TOOL_PREFIX) &&
317
+ 'name' in contentPart) {
315
318
  const rawPart = contentPart;
316
- const id = rawPart.id;
317
- if (id && id.startsWith(_enum.Constants.ANTHROPIC_SERVER_TOOL_PREFIX)) {
318
- let input = rawPart.input;
319
- // Ensure input is an object
320
- if (typeof input === 'string') {
321
- try {
322
- input = JSON.parse(input);
323
- }
324
- catch {
325
- input = {};
326
- }
319
+ let input = rawPart.input;
320
+ if (typeof input === 'string') {
321
+ try {
322
+ input = JSON.parse(input);
327
323
  }
324
+ catch {
325
+ input = {};
326
+ }
327
+ }
328
+ const corrected = {
329
+ type: 'server_tool_use',
330
+ id: rawPart.id,
331
+ name: (rawPart.name ?? 'web_search'),
332
+ input: (input ?? {}),
333
+ };
334
+ return corrected;
335
+ }
336
+ /**
337
+ * Normalize web_search_tool_result blocks into a clean shape.
338
+ * Same rationale as above — the block may carry extra properties from
339
+ * streaming (input, index, etc.) that the API rejects. Rebuild cleanly.
340
+ */
341
+ if ('tool_use_id' in contentPart &&
342
+ typeof contentPart.tool_use_id ===
343
+ 'string' &&
344
+ contentPart.tool_use_id.startsWith(_enum.Constants.ANTHROPIC_SERVER_TOOL_PREFIX) &&
345
+ 'content' in contentPart) {
346
+ const rawPart = contentPart;
347
+ const content = rawPart.content;
348
+ const isValidContent = Array.isArray(content) ||
349
+ (content != null &&
350
+ typeof content === 'object' &&
351
+ 'type' in content &&
352
+ content.type ===
353
+ 'web_search_tool_result_error');
354
+ if (isValidContent) {
328
355
  const corrected = {
329
- type: 'server_tool_use',
330
- id,
331
- name: 'web_search',
332
- input: input,
356
+ type: 'web_search_tool_result',
357
+ tool_use_id: rawPart.tool_use_id,
358
+ content: content,
333
359
  };
334
360
  return corrected;
335
361
  }
336
- // If it's not a server tool, skip it (return null to filter it out)
337
362
  return null;
338
363
  }
339
364
  /**
340
- * Handle malformed web_search_tool_result blocks marked as text.
341
- * These have tool_use_id and nested content - fix their type instead of filtering.
342
- * Only correct if we can confirm it's a web search result by checking the tool_use_id prefix.
343
- *
344
- * Handles both success results (array content) and error results (object with error_code).
365
+ * Skip non-server malformed blocks that have tool fields mixed with text type.
345
366
  */
367
+ if ('id' in contentPart &&
368
+ 'name' in contentPart &&
369
+ 'input' in contentPart &&
370
+ contentPart.type === 'text') {
371
+ return null;
372
+ }
346
373
  if ('tool_use_id' in contentPart &&
347
374
  'content' in contentPart &&
348
375
  contentPart.type === 'text') {
349
- const rawPart = contentPart;
350
- const toolUseId = rawPart.tool_use_id;
351
- const content = rawPart.content;
352
- if (toolUseId &&
353
- toolUseId.startsWith(_enum.Constants.ANTHROPIC_SERVER_TOOL_PREFIX)) {
354
- // Verify content is either an array (success) or error object
355
- const isValidContent = Array.isArray(content) ||
356
- (content != null &&
357
- typeof content === 'object' &&
358
- 'type' in content &&
359
- content.type ===
360
- 'web_search_tool_result_error');
361
- if (isValidContent) {
362
- const corrected = {
363
- type: 'web_search_tool_result',
364
- tool_use_id: toolUseId,
365
- content: content,
366
- };
367
- return corrected;
368
- }
369
- }
370
- // If it's not a recognized server tool result format, skip it (return null to filter it out)
371
376
  return null;
372
377
  }
373
378
  if (messages.isDataContentBlock(contentPart)) {
@@ -461,6 +466,12 @@ function _formatContent(message) {
461
466
  // and is not a valid type for Anthropic messages.
462
467
  contentPartCopy.type = 'tool_use';
463
468
  }
469
+ if (contentPartCopy.type === 'tool_use' &&
470
+ 'id' in contentPartCopy &&
471
+ typeof contentPartCopy.id === 'string' &&
472
+ contentPartCopy.id.startsWith(_enum.Constants.ANTHROPIC_SERVER_TOOL_PREFIX)) {
473
+ contentPartCopy.type = 'server_tool_use';
474
+ }
464
475
  if ('input' in contentPartCopy) {
465
476
  // Anthropic tool use inputs should be valid objects, when applicable.
466
477
  if (typeof contentPartCopy.input === 'string') {
@@ -507,7 +518,8 @@ function _formatContent(message) {
507
518
  throw new Error('Unsupported message content format');
508
519
  }
509
520
  });
510
- return contentBlocks.filter((block) => block !== null);
521
+ return contentBlocks.filter((block) => block !== null &&
522
+ !(block.type === 'text' && 'text' in block && block.text === ''));
511
523
  }
512
524
  }
513
525
  /**
@@ -542,10 +554,13 @@ function _convertMessagesToAnthropicPayload(messages$1) {
542
554
  }
543
555
  if (messages.isAIMessage(message) && !!message.tool_calls?.length) {
544
556
  if (typeof message.content === 'string') {
557
+ const clientToolCalls = message.tool_calls.filter((tc) => !(tc.id?.startsWith(_enum.Constants.ANTHROPIC_SERVER_TOOL_PREFIX) ?? false));
545
558
  if (message.content === '') {
546
559
  return {
547
560
  role,
548
- content: message.tool_calls.map(_convertLangChainToolCallToAnthropic),
561
+ content: clientToolCalls.length > 0
562
+ ? clientToolCalls.map(_convertLangChainToolCallToAnthropic)
563
+ : [{ type: 'text', text: ' ' }],
549
564
  };
550
565
  }
551
566
  else {
@@ -553,7 +568,7 @@ function _convertMessagesToAnthropicPayload(messages$1) {
553
568
  role,
554
569
  content: [
555
570
  { type: 'text', text: message.content },
556
- ...message.tool_calls.map(_convertLangChainToolCallToAnthropic),
571
+ ...clientToolCalls.map(_convertLangChainToolCallToAnthropic),
557
572
  ],
558
573
  };
559
574
  }
@@ -1 +1 @@
1
- {"version":3,"file":"message_inputs.cjs","sources":["../../../../../src/llm/anthropic/utils/message_inputs.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable no-console */\n/**\n * This util file contains functions for converting LangChain messages to Anthropic messages.\n */\nimport {\n type BaseMessage,\n type SystemMessage,\n HumanMessage,\n type AIMessage,\n type ToolMessage,\n isAIMessage,\n type StandardContentBlockConverter,\n type StandardTextBlock,\n type StandardImageBlock,\n type StandardFileBlock,\n MessageContentComplex,\n isDataContentBlock,\n convertToProviderContentBlock,\n parseBase64DataUrl,\n} from '@langchain/core/messages';\nimport { ToolCall } from '@langchain/core/messages/tool';\nimport {\n AnthropicImageBlockParam,\n AnthropicMessageCreateParams,\n AnthropicTextBlockParam,\n AnthropicDocumentBlockParam,\n AnthropicThinkingBlockParam,\n AnthropicRedactedThinkingBlockParam,\n AnthropicServerToolUseBlockParam,\n AnthropicWebSearchToolResultBlockParam,\n isAnthropicImageBlockParam,\n AnthropicSearchResultBlockParam,\n AnthropicCompactionBlockParam,\n AnthropicToolResponse,\n} from '../types';\nimport { Constants } from '@/common';\n\nfunction _formatImage(imageUrl: string) {\n const parsed = parseBase64DataUrl({ dataUrl: imageUrl });\n if (parsed) {\n return {\n type: 'base64',\n media_type: parsed.mime_type,\n data: parsed.data,\n };\n }\n let parsedUrl: URL;\n\n try {\n parsedUrl = new URL(imageUrl);\n } catch {\n throw new Error(\n [\n `Malformed image URL: ${JSON.stringify(\n imageUrl\n )}. Content blocks of type 'image_url' must be a valid http, https, or base64-encoded data URL.`,\n 'Example: data:image/png;base64,/9j/4AAQSk...',\n 'Example: https://example.com/image.jpg',\n ].join('\\n\\n')\n );\n }\n\n if (parsedUrl.protocol === 'http:' || parsedUrl.protocol === 'https:') {\n return {\n type: 'url',\n url: imageUrl,\n };\n }\n\n throw new Error(\n [\n `Invalid image URL protocol: ${JSON.stringify(\n parsedUrl.protocol\n )}. Anthropic only supports images as http, https, or base64-encoded data URLs on 'image_url' content blocks.`,\n 'Example: data:image/png;base64,/9j/4AAQSk...',\n 'Example: https://example.com/image.jpg',\n ].join('\\n\\n')\n );\n}\n\nfunction _ensureMessageContents(\n messages: BaseMessage[]\n): (SystemMessage | HumanMessage | AIMessage)[] {\n // Merge runs of human/tool messages into single human messages with content blocks.\n const updatedMsgs = [];\n for (const message of messages) {\n if (message._getType() === 'tool') {\n if (typeof message.content === 'string') {\n const previousMessage = updatedMsgs[updatedMsgs.length - 1];\n if (\n previousMessage._getType() === 'human' &&\n Array.isArray(previousMessage.content) &&\n 'type' in previousMessage.content[0] &&\n previousMessage.content[0].type === 'tool_result'\n ) {\n // If the previous message was a tool result, we merge this tool message into it.\n (previousMessage.content as MessageContentComplex[]).push({\n type: 'tool_result',\n content: message.content,\n tool_use_id: (message as ToolMessage).tool_call_id,\n });\n } else {\n // If not, we create a new human message with the tool result.\n updatedMsgs.push(\n new HumanMessage({\n content: [\n {\n type: 'tool_result',\n content: message.content,\n tool_use_id: (message as ToolMessage).tool_call_id,\n },\n ],\n })\n );\n }\n } else {\n updatedMsgs.push(\n new HumanMessage({\n content: [\n {\n type: 'tool_result',\n // rare case: message.content could be undefined\n ...(message.content != null\n ? { content: _formatContent(message) }\n : {}),\n tool_use_id: (message as ToolMessage).tool_call_id,\n },\n ],\n })\n );\n }\n } else {\n updatedMsgs.push(message);\n }\n }\n return updatedMsgs;\n}\n\nexport function _convertLangChainToolCallToAnthropic(\n toolCall: ToolCall\n): AnthropicToolResponse {\n if (toolCall.id === undefined) {\n throw new Error('Anthropic requires all tool calls to have an \"id\".');\n }\n return {\n type: 'tool_use',\n id: toolCall.id,\n name: toolCall.name,\n input: toolCall.args,\n };\n}\n\nconst standardContentBlockConverter: StandardContentBlockConverter<{\n text: AnthropicTextBlockParam;\n image: AnthropicImageBlockParam;\n file: AnthropicDocumentBlockParam;\n}> = {\n providerName: 'anthropic',\n\n fromStandardTextBlock(block: StandardTextBlock): AnthropicTextBlockParam {\n return {\n type: 'text',\n text: block.text,\n ...('citations' in (block.metadata ?? {})\n ? { citations: block.metadata!.citations }\n : {}),\n ...('cache_control' in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n } as AnthropicTextBlockParam;\n },\n\n fromStandardImageBlock(block: StandardImageBlock): AnthropicImageBlockParam {\n if (block.source_type === 'url') {\n const data = parseBase64DataUrl({\n dataUrl: block.url,\n asTypedArray: false,\n });\n if (data) {\n return {\n type: 'image',\n source: {\n type: 'base64',\n data: data.data,\n media_type: data.mime_type,\n },\n ...('cache_control' in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n } as AnthropicImageBlockParam;\n } else {\n return {\n type: 'image',\n source: {\n type: 'url',\n url: block.url,\n media_type: block.mime_type ?? '',\n },\n ...('cache_control' in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n } as AnthropicImageBlockParam;\n }\n } else {\n if (block.source_type === 'base64') {\n return {\n type: 'image',\n source: {\n type: 'base64',\n data: block.data,\n media_type: block.mime_type ?? '',\n },\n ...('cache_control' in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n } as AnthropicImageBlockParam;\n } else {\n throw new Error(`Unsupported image source type: ${block.source_type}`);\n }\n }\n },\n\n fromStandardFileBlock(block: StandardFileBlock): AnthropicDocumentBlockParam {\n const mime_type = (block.mime_type ?? '').split(';')[0];\n\n if (block.source_type === 'url') {\n if (mime_type === 'application/pdf' || mime_type === '') {\n return {\n type: 'document',\n source: {\n type: 'url',\n url: block.url,\n media_type: block.mime_type ?? '',\n },\n ...('cache_control' in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n ...('citations' in (block.metadata ?? {})\n ? { citations: block.metadata!.citations }\n : {}),\n ...('context' in (block.metadata ?? {})\n ? { context: block.metadata!.context }\n : {}),\n ...('title' in (block.metadata ?? {})\n ? { title: block.metadata!.title }\n : {}),\n } as AnthropicDocumentBlockParam;\n }\n throw new Error(\n `Unsupported file mime type for file url source: ${block.mime_type}`\n );\n } else if (block.source_type === 'text') {\n if (mime_type === 'text/plain' || mime_type === '') {\n return {\n type: 'document',\n source: {\n type: 'text',\n data: block.text,\n media_type: block.mime_type ?? '',\n },\n ...('cache_control' in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n ...('citations' in (block.metadata ?? {})\n ? { citations: block.metadata!.citations }\n : {}),\n ...('context' in (block.metadata ?? {})\n ? { context: block.metadata!.context }\n : {}),\n ...('title' in (block.metadata ?? {})\n ? { title: block.metadata!.title }\n : {}),\n } as AnthropicDocumentBlockParam;\n } else {\n throw new Error(\n `Unsupported file mime type for file text source: ${block.mime_type}`\n );\n }\n } else if (block.source_type === 'base64') {\n if (mime_type === 'application/pdf' || mime_type === '') {\n return {\n type: 'document',\n source: {\n type: 'base64',\n data: block.data,\n media_type: 'application/pdf',\n },\n ...('cache_control' in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n ...('citations' in (block.metadata ?? {})\n ? { citations: block.metadata!.citations }\n : {}),\n ...('context' in (block.metadata ?? {})\n ? { context: block.metadata!.context }\n : {}),\n ...('title' in (block.metadata ?? {})\n ? { title: block.metadata!.title }\n : {}),\n } as AnthropicDocumentBlockParam;\n } else if (\n ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].includes(\n mime_type\n )\n ) {\n return {\n type: 'document',\n source: {\n type: 'content',\n content: [\n {\n type: 'image',\n source: {\n type: 'base64',\n data: block.data,\n media_type: mime_type as\n | 'image/jpeg'\n | 'image/png'\n | 'image/gif'\n | 'image/webp',\n },\n },\n ],\n },\n ...('cache_control' in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n ...('citations' in (block.metadata ?? {})\n ? { citations: block.metadata!.citations }\n : {}),\n ...('context' in (block.metadata ?? {})\n ? { context: block.metadata!.context }\n : {}),\n ...('title' in (block.metadata ?? {})\n ? { title: block.metadata!.title }\n : {}),\n } as AnthropicDocumentBlockParam;\n } else {\n throw new Error(\n `Unsupported file mime type for file base64 source: ${block.mime_type}`\n );\n }\n } else {\n throw new Error(`Unsupported file source type: ${block.source_type}`);\n }\n },\n};\n\nfunction _formatContent(message: BaseMessage) {\n const toolTypes = [\n 'tool_use',\n 'tool_result',\n 'input_json_delta',\n 'server_tool_use',\n 'web_search_tool_result',\n 'web_search_result',\n ];\n const textTypes = ['text', 'text_delta'];\n const { content } = message;\n\n if (typeof content === 'string') {\n return content;\n } else {\n const contentBlocks = content.map((contentPart) => {\n /**\n * Handle malformed blocks that have server tool fields mixed with text type.\n * These can occur when server_tool_use blocks get mislabeled during aggregation.\n * Correct their type ONLY if we can confirm it's a server tool by checking the ID prefix.\n * Anthropic needs both server_tool_use and web_search_tool_result blocks for citations to work.\n */\n if (\n 'id' in contentPart &&\n 'name' in contentPart &&\n 'input' in contentPart &&\n contentPart.type === 'text'\n ) {\n const rawPart = contentPart as Record<string, unknown>;\n const id = rawPart.id as string;\n\n if (id && id.startsWith(Constants.ANTHROPIC_SERVER_TOOL_PREFIX)) {\n let input = rawPart.input;\n\n // Ensure input is an object\n if (typeof input === 'string') {\n try {\n input = JSON.parse(input);\n } catch {\n input = {};\n }\n }\n\n const corrected: AnthropicServerToolUseBlockParam = {\n type: 'server_tool_use',\n id,\n name: 'web_search',\n input: input as Record<string, unknown>,\n };\n\n return corrected;\n }\n\n // If it's not a server tool, skip it (return null to filter it out)\n return null;\n }\n\n /**\n * Handle malformed web_search_tool_result blocks marked as text.\n * These have tool_use_id and nested content - fix their type instead of filtering.\n * Only correct if we can confirm it's a web search result by checking the tool_use_id prefix.\n *\n * Handles both success results (array content) and error results (object with error_code).\n */\n if (\n 'tool_use_id' in contentPart &&\n 'content' in contentPart &&\n contentPart.type === 'text'\n ) {\n const rawPart = contentPart as Record<string, unknown>;\n const toolUseId = rawPart.tool_use_id as string;\n const content = rawPart.content;\n\n if (\n toolUseId &&\n toolUseId.startsWith(Constants.ANTHROPIC_SERVER_TOOL_PREFIX)\n ) {\n // Verify content is either an array (success) or error object\n const isValidContent =\n Array.isArray(content) ||\n (content != null &&\n typeof content === 'object' &&\n 'type' in content &&\n (content as Record<string, unknown>).type ===\n 'web_search_tool_result_error');\n\n if (isValidContent) {\n const corrected: AnthropicWebSearchToolResultBlockParam = {\n type: 'web_search_tool_result',\n tool_use_id: toolUseId,\n content:\n content as AnthropicWebSearchToolResultBlockParam['content'],\n };\n return corrected;\n }\n }\n\n // If it's not a recognized server tool result format, skip it (return null to filter it out)\n return null;\n }\n\n if (isDataContentBlock(contentPart)) {\n return convertToProviderContentBlock(\n contentPart,\n standardContentBlockConverter\n );\n }\n\n const cacheControl =\n 'cache_control' in contentPart ? contentPart.cache_control : undefined;\n\n if (contentPart.type === 'image_url') {\n let source;\n if (typeof contentPart.image_url === 'string') {\n source = _formatImage(contentPart.image_url);\n } else {\n source = _formatImage(contentPart.image_url.url);\n }\n return {\n type: 'image' as const, // Explicitly setting the type as \"image\"\n source,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n };\n } else if (isAnthropicImageBlockParam(contentPart)) {\n return contentPart;\n } else if (contentPart.type === 'document') {\n // PDF\n return {\n ...contentPart,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n };\n } else if (contentPart.type === 'thinking') {\n const block: AnthropicThinkingBlockParam = {\n type: 'thinking' as const, // Explicitly setting the type as \"thinking\"\n thinking: contentPart.thinking,\n signature: contentPart.signature,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n };\n return block;\n } else if (contentPart.type === 'redacted_thinking') {\n const block: AnthropicRedactedThinkingBlockParam = {\n type: 'redacted_thinking' as const, // Explicitly setting the type as \"redacted_thinking\"\n data: contentPart.data,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n };\n return block;\n } else if (contentPart.type === 'search_result') {\n const block: AnthropicSearchResultBlockParam = {\n type: 'search_result' as const,\n title: contentPart.title,\n source: contentPart.source,\n ...('cache_control' in contentPart && contentPart.cache_control\n ? { cache_control: contentPart.cache_control }\n : {}),\n ...('citations' in contentPart && contentPart.citations\n ? { citations: contentPart.citations }\n : {}),\n content: contentPart.content,\n };\n return block;\n } else if (contentPart.type === 'compaction') {\n const block: AnthropicCompactionBlockParam = {\n type: 'compaction' as const,\n content: contentPart.content,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n };\n return block;\n } else if (\n textTypes.find((t) => t === contentPart.type) &&\n 'text' in contentPart\n ) {\n // Assuming contentPart is of type MessageContentText here\n return {\n type: 'text' as const, // Explicitly setting the type as \"text\"\n text: contentPart.text,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n ...('citations' in contentPart && contentPart.citations\n ? { citations: contentPart.citations }\n : {}),\n };\n } else if (toolTypes.find((t) => t === contentPart.type)) {\n const contentPartCopy = { ...contentPart };\n if ('index' in contentPartCopy) {\n // Anthropic does not support passing the index field here, so we remove it.\n delete contentPartCopy.index;\n }\n\n if (contentPartCopy.type === 'input_json_delta') {\n // `input_json_delta` type only represents yielding partial tool inputs\n // and is not a valid type for Anthropic messages.\n contentPartCopy.type = 'tool_use';\n }\n\n if ('input' in contentPartCopy) {\n // Anthropic tool use inputs should be valid objects, when applicable.\n if (typeof contentPartCopy.input === 'string') {\n try {\n contentPartCopy.input = JSON.parse(contentPartCopy.input);\n } catch {\n contentPartCopy.input = {};\n }\n }\n }\n\n /**\n * For multi-turn conversations with citations, we must preserve ALL blocks\n * including server_tool_use, web_search_tool_result, and web_search_result.\n * Citations reference search results by index, so filtering changes indices and breaks references.\n *\n * The ToolNode already handles skipping server tool invocations via the srvtoolu_ prefix check.\n */\n\n // TODO: Fix when SDK types are fixed\n return {\n ...contentPartCopy,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any;\n } else if (\n 'functionCall' in contentPart &&\n contentPart.functionCall &&\n typeof contentPart.functionCall === 'object' &&\n isAIMessage(message)\n ) {\n const correspondingToolCall = message.tool_calls?.find(\n (toolCall) => toolCall.name === contentPart.functionCall.name\n );\n if (!correspondingToolCall) {\n throw new Error(\n `Could not find tool call for function call ${contentPart.functionCall.name}`\n );\n }\n // Google GenAI models include a `functionCall` object inside content. We should ignore it as Anthropic will not support it.\n return {\n id: correspondingToolCall.id,\n type: 'tool_use',\n name: correspondingToolCall.name,\n input: contentPart.functionCall.args,\n };\n } else {\n console.error(\n 'Unsupported content part:',\n JSON.stringify(contentPart, null, 2)\n );\n throw new Error('Unsupported message content format');\n }\n });\n return contentBlocks.filter((block) => block !== null);\n }\n}\n\n/**\n * Formats messages as a prompt for the model.\n * Used in LangSmith, export is important here.\n * @param messages The base messages to format as a prompt.\n * @returns The formatted prompt.\n */\nexport function _convertMessagesToAnthropicPayload(\n messages: BaseMessage[]\n): AnthropicMessageCreateParams {\n const mergedMessages = _ensureMessageContents(messages);\n let system;\n if (mergedMessages.length > 0 && mergedMessages[0]._getType() === 'system') {\n system = messages[0].content;\n }\n const conversationMessages =\n system !== undefined ? mergedMessages.slice(1) : mergedMessages;\n const formattedMessages = conversationMessages.map((message) => {\n let role;\n if (message._getType() === 'human') {\n role = 'user' as const;\n } else if (message._getType() === 'ai') {\n role = 'assistant' as const;\n } else if (message._getType() === 'tool') {\n role = 'user' as const;\n } else if (message._getType() === 'system') {\n throw new Error(\n 'System messages are only permitted as the first passed message.'\n );\n } else {\n throw new Error(`Message type \"${message._getType()}\" is not supported.`);\n }\n if (isAIMessage(message) && !!message.tool_calls?.length) {\n if (typeof message.content === 'string') {\n if (message.content === '') {\n return {\n role,\n content: message.tool_calls.map(\n _convertLangChainToolCallToAnthropic\n ),\n };\n } else {\n return {\n role,\n content: [\n { type: 'text', text: message.content },\n ...message.tool_calls.map(_convertLangChainToolCallToAnthropic),\n ],\n };\n }\n } else {\n const { content } = message;\n const hasMismatchedToolCalls = !message.tool_calls.every(\n (toolCall) =>\n !!content.find(\n (contentPart) =>\n (contentPart.type === 'tool_use' ||\n contentPart.type === 'input_json_delta' ||\n contentPart.type === 'server_tool_use') &&\n contentPart.id === toolCall.id\n )\n );\n if (hasMismatchedToolCalls) {\n console.warn(\n 'The \"tool_calls\" field on a message is only respected if content is a string.'\n );\n }\n return {\n role,\n content: _formatContent(message),\n };\n }\n } else {\n return {\n role,\n content: _formatContent(message),\n };\n }\n });\n return {\n messages: mergeMessages(formattedMessages),\n system,\n } as AnthropicMessageCreateParams;\n}\n\nfunction mergeMessages(messages: AnthropicMessageCreateParams['messages']) {\n if (!messages || messages.length <= 1) {\n return messages;\n }\n\n const result: AnthropicMessageCreateParams['messages'] = [];\n let currentMessage = messages[0];\n\n type ContentBlocks = Exclude<\n AnthropicMessageCreateParams['messages'][number]['content'],\n string\n >;\n const normalizeContent = (\n content: AnthropicMessageCreateParams['messages'][number]['content']\n ): ContentBlocks => {\n if (typeof content === 'string') {\n return [{ type: 'text', text: content }];\n }\n return content;\n };\n\n const isToolResultMessage = (msg: (typeof messages)[0]) => {\n if (msg.role !== 'user') return false;\n\n if (typeof msg.content === 'string') {\n return false;\n }\n\n return (\n Array.isArray(msg.content) &&\n msg.content.every((item) => item.type === 'tool_result')\n );\n };\n\n for (let i = 1; i < messages.length; i += 1) {\n const nextMessage = messages[i];\n\n if (\n isToolResultMessage(currentMessage) &&\n isToolResultMessage(nextMessage)\n ) {\n // Merge the messages by combining their content arrays\n currentMessage = {\n ...currentMessage,\n content: [\n ...normalizeContent(currentMessage.content),\n ...normalizeContent(nextMessage.content),\n ],\n };\n } else {\n result.push(currentMessage);\n currentMessage = nextMessage;\n }\n }\n\n result.push(currentMessage);\n return result;\n}\n"],"names":["parseBase64DataUrl","messages","HumanMessage","Constants","isDataContentBlock","convertToProviderContentBlock","isAnthropicImageBlockParam","isAIMessage"],"mappings":";;;;;;AAAA;AACA;AACA;;AAEG;AAkCH,SAAS,YAAY,CAAC,QAAgB,EAAA;IACpC,MAAM,MAAM,GAAGA,2BAAkB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACxD,IAAI,MAAM,EAAE;QACV,OAAO;AACL,YAAA,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB;IACH;AACA,IAAA,IAAI,SAAc;AAElB,IAAA,IAAI;AACF,QAAA,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC;IAC/B;AAAE,IAAA,MAAM;QACN,MAAM,IAAI,KAAK,CACb;AACE,YAAA,CAAA,qBAAA,EAAwB,IAAI,CAAC,SAAS,CACpC,QAAQ,CACT,CAAA,6FAAA,CAA+F;YAChG,8CAA8C;YAC9C,wCAAwC;AACzC,SAAA,CAAC,IAAI,CAAC,MAAM,CAAC,CACf;IACH;AAEA,IAAA,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE;QACrE,OAAO;AACL,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,GAAG,EAAE,QAAQ;SACd;IACH;IAEA,MAAM,IAAI,KAAK,CACb;QACE,CAAA,4BAAA,EAA+B,IAAI,CAAC,SAAS,CAC3C,SAAS,CAAC,QAAQ,CACnB,CAAA,2GAAA,CAA6G;QAC9G,8CAA8C;QAC9C,wCAAwC;AACzC,KAAA,CAAC,IAAI,CAAC,MAAM,CAAC,CACf;AACH;AAEA,SAAS,sBAAsB,CAC7BC,UAAuB,EAAA;;IAGvB,MAAM,WAAW,GAAG,EAAE;AACtB,IAAA,KAAK,MAAM,OAAO,IAAIA,UAAQ,EAAE;AAC9B,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE,KAAK,MAAM,EAAE;AACjC,YAAA,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE;gBACvC,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3D,gBAAA,IACE,eAAe,CAAC,QAAQ,EAAE,KAAK,OAAO;AACtC,oBAAA,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC;AACtC,oBAAA,MAAM,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;oBACpC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,EACjD;;AAEC,oBAAA,eAAe,CAAC,OAAmC,CAAC,IAAI,CAAC;AACxD,wBAAA,IAAI,EAAE,aAAa;wBACnB,OAAO,EAAE,OAAO,CAAC,OAAO;wBACxB,WAAW,EAAG,OAAuB,CAAC,YAAY;AACnD,qBAAA,CAAC;gBACJ;qBAAO;;AAEL,oBAAA,WAAW,CAAC,IAAI,CACd,IAAIC,qBAAY,CAAC;AACf,wBAAA,OAAO,EAAE;AACP,4BAAA;AACE,gCAAA,IAAI,EAAE,aAAa;gCACnB,OAAO,EAAE,OAAO,CAAC,OAAO;gCACxB,WAAW,EAAG,OAAuB,CAAC,YAAY;AACnD,6BAAA;AACF,yBAAA;AACF,qBAAA,CAAC,CACH;gBACH;YACF;iBAAO;AACL,gBAAA,WAAW,CAAC,IAAI,CACd,IAAIA,qBAAY,CAAC;AACf,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,IAAI,EAAE,aAAa;;AAEnB,4BAAA,IAAI,OAAO,CAAC,OAAO,IAAI;kCACnB,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;kCAClC,EAAE,CAAC;4BACP,WAAW,EAAG,OAAuB,CAAC,YAAY;AACnD,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAC,CACH;YACH;QACF;aAAO;AACL,YAAA,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;QAC3B;IACF;AACA,IAAA,OAAO,WAAW;AACpB;AAEM,SAAU,oCAAoC,CAClD,QAAkB,EAAA;AAElB,IAAA,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE;AAC7B,QAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC;IACvE;IACA,OAAO;AACL,QAAA,IAAI,EAAE,UAAU;QAChB,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK,EAAE,QAAQ,CAAC,IAAI;KACrB;AACH;AAEA,MAAM,6BAA6B,GAI9B;AACH,IAAA,YAAY,EAAE,WAAW;AAEzB,IAAA,qBAAqB,CAAC,KAAwB,EAAA;QAC5C,OAAO;AACL,YAAA,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,WAAW,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;kBACpC,EAAE,SAAS,EAAE,KAAK,CAAC,QAAS,CAAC,SAAS;kBACtC,EAAE,CAAC;YACP,IAAI,eAAe,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;kBACxC,EAAE,aAAa,EAAE,KAAK,CAAC,QAAS,CAAC,aAAa;kBAC9C,EAAE,CAAC;SACmB;IAC9B,CAAC;AAED,IAAA,sBAAsB,CAAC,KAAyB,EAAA;AAC9C,QAAA,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,EAAE;YAC/B,MAAM,IAAI,GAAGF,2BAAkB,CAAC;gBAC9B,OAAO,EAAE,KAAK,CAAC,GAAG;AAClB,gBAAA,YAAY,EAAE,KAAK;AACpB,aAAA,CAAC;YACF,IAAI,IAAI,EAAE;gBACR,OAAO;AACL,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,MAAM,EAAE;AACN,wBAAA,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,UAAU,EAAE,IAAI,CAAC,SAAS;AAC3B,qBAAA;oBACD,IAAI,eAAe,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BACxC,EAAE,aAAa,EAAE,KAAK,CAAC,QAAS,CAAC,aAAa;0BAC9C,EAAE,CAAC;iBACoB;YAC/B;iBAAO;gBACL,OAAO;AACL,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,MAAM,EAAE;AACN,wBAAA,IAAI,EAAE,KAAK;wBACX,GAAG,EAAE,KAAK,CAAC,GAAG;AACd,wBAAA,UAAU,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;AAClC,qBAAA;oBACD,IAAI,eAAe,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BACxC,EAAE,aAAa,EAAE,KAAK,CAAC,QAAS,CAAC,aAAa;0BAC9C,EAAE,CAAC;iBACoB;YAC/B;QACF;aAAO;AACL,YAAA,IAAI,KAAK,CAAC,WAAW,KAAK,QAAQ,EAAE;gBAClC,OAAO;AACL,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,MAAM,EAAE;AACN,wBAAA,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,wBAAA,UAAU,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;AAClC,qBAAA;oBACD,IAAI,eAAe,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BACxC,EAAE,aAAa,EAAE,KAAK,CAAC,QAAS,CAAC,aAAa;0BAC9C,EAAE,CAAC;iBACoB;YAC/B;iBAAO;gBACL,MAAM,IAAI,KAAK,CAAC,CAAA,+BAAA,EAAkC,KAAK,CAAC,WAAW,CAAA,CAAE,CAAC;YACxE;QACF;IACF,CAAC;AAED,IAAA,qBAAqB,CAAC,KAAwB,EAAA;AAC5C,QAAA,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEvD,QAAA,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,EAAE;YAC/B,IAAI,SAAS,KAAK,iBAAiB,IAAI,SAAS,KAAK,EAAE,EAAE;gBACvD,OAAO;AACL,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,MAAM,EAAE;AACN,wBAAA,IAAI,EAAE,KAAK;wBACX,GAAG,EAAE,KAAK,CAAC,GAAG;AACd,wBAAA,UAAU,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;AAClC,qBAAA;oBACD,IAAI,eAAe,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BACxC,EAAE,aAAa,EAAE,KAAK,CAAC,QAAS,CAAC,aAAa;0BAC9C,EAAE,CAAC;oBACP,IAAI,WAAW,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BACpC,EAAE,SAAS,EAAE,KAAK,CAAC,QAAS,CAAC,SAAS;0BACtC,EAAE,CAAC;oBACP,IAAI,SAAS,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BAClC,EAAE,OAAO,EAAE,KAAK,CAAC,QAAS,CAAC,OAAO;0BAClC,EAAE,CAAC;oBACP,IAAI,OAAO,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BAChC,EAAE,KAAK,EAAE,KAAK,CAAC,QAAS,CAAC,KAAK;0BAC9B,EAAE,CAAC;iBACuB;YAClC;YACA,MAAM,IAAI,KAAK,CACb,CAAA,gDAAA,EAAmD,KAAK,CAAC,SAAS,CAAA,CAAE,CACrE;QACH;AAAO,aAAA,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,EAAE;YACvC,IAAI,SAAS,KAAK,YAAY,IAAI,SAAS,KAAK,EAAE,EAAE;gBAClD,OAAO;AACL,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,MAAM,EAAE;AACN,wBAAA,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,wBAAA,UAAU,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;AAClC,qBAAA;oBACD,IAAI,eAAe,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BACxC,EAAE,aAAa,EAAE,KAAK,CAAC,QAAS,CAAC,aAAa;0BAC9C,EAAE,CAAC;oBACP,IAAI,WAAW,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BACpC,EAAE,SAAS,EAAE,KAAK,CAAC,QAAS,CAAC,SAAS;0BACtC,EAAE,CAAC;oBACP,IAAI,SAAS,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BAClC,EAAE,OAAO,EAAE,KAAK,CAAC,QAAS,CAAC,OAAO;0BAClC,EAAE,CAAC;oBACP,IAAI,OAAO,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BAChC,EAAE,KAAK,EAAE,KAAK,CAAC,QAAS,CAAC,KAAK;0BAC9B,EAAE,CAAC;iBACuB;YAClC;iBAAO;gBACL,MAAM,IAAI,KAAK,CACb,CAAA,iDAAA,EAAoD,KAAK,CAAC,SAAS,CAAA,CAAE,CACtE;YACH;QACF;AAAO,aAAA,IAAI,KAAK,CAAC,WAAW,KAAK,QAAQ,EAAE;YACzC,IAAI,SAAS,KAAK,iBAAiB,IAAI,SAAS,KAAK,EAAE,EAAE;gBACvD,OAAO;AACL,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,MAAM,EAAE;AACN,wBAAA,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,wBAAA,UAAU,EAAE,iBAAiB;AAC9B,qBAAA;oBACD,IAAI,eAAe,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BACxC,EAAE,aAAa,EAAE,KAAK,CAAC,QAAS,CAAC,aAAa;0BAC9C,EAAE,CAAC;oBACP,IAAI,WAAW,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BACpC,EAAE,SAAS,EAAE,KAAK,CAAC,QAAS,CAAC,SAAS;0BACtC,EAAE,CAAC;oBACP,IAAI,SAAS,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BAClC,EAAE,OAAO,EAAE,KAAK,CAAC,QAAS,CAAC,OAAO;0BAClC,EAAE,CAAC;oBACP,IAAI,OAAO,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BAChC,EAAE,KAAK,EAAE,KAAK,CAAC,QAAS,CAAC,KAAK;0BAC9B,EAAE,CAAC;iBACuB;YAClC;AAAO,iBAAA,IACL,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,QAAQ,CAC7D,SAAS,CACV,EACD;gBACA,OAAO;AACL,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,MAAM,EAAE;AACN,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,OAAO,EAAE;AACP,4BAAA;AACE,gCAAA,IAAI,EAAE,OAAO;AACb,gCAAA,MAAM,EAAE;AACN,oCAAA,IAAI,EAAE,QAAQ;oCACd,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,oCAAA,UAAU,EAAE,SAII;AACjB,iCAAA;AACF,6BAAA;AACF,yBAAA;AACF,qBAAA;oBACD,IAAI,eAAe,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BACxC,EAAE,aAAa,EAAE,KAAK,CAAC,QAAS,CAAC,aAAa;0BAC9C,EAAE,CAAC;oBACP,IAAI,WAAW,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BACpC,EAAE,SAAS,EAAE,KAAK,CAAC,QAAS,CAAC,SAAS;0BACtC,EAAE,CAAC;oBACP,IAAI,SAAS,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BAClC,EAAE,OAAO,EAAE,KAAK,CAAC,QAAS,CAAC,OAAO;0BAClC,EAAE,CAAC;oBACP,IAAI,OAAO,KAAK,KAAK,CAAC,QAAQ,IAAI,EAAE;0BAChC,EAAE,KAAK,EAAE,KAAK,CAAC,QAAS,CAAC,KAAK;0BAC9B,EAAE,CAAC;iBACuB;YAClC;iBAAO;gBACL,MAAM,IAAI,KAAK,CACb,CAAA,mDAAA,EAAsD,KAAK,CAAC,SAAS,CAAA,CAAE,CACxE;YACH;QACF;aAAO;YACL,MAAM,IAAI,KAAK,CAAC,CAAA,8BAAA,EAAiC,KAAK,CAAC,WAAW,CAAA,CAAE,CAAC;QACvE;IACF,CAAC;CACF;AAED,SAAS,cAAc,CAAC,OAAoB,EAAA;AAC1C,IAAA,MAAM,SAAS,GAAG;QAChB,UAAU;QACV,aAAa;QACb,kBAAkB;QAClB,iBAAiB;QACjB,wBAAwB;QACxB,mBAAmB;KACpB;AACD,IAAA,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;AACxC,IAAA,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO;AAE3B,IAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,QAAA,OAAO,OAAO;IAChB;SAAO;QACL,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,KAAI;AAChD;;;;;AAKG;YACH,IACE,IAAI,IAAI,WAAW;AACnB,gBAAA,MAAM,IAAI,WAAW;AACrB,gBAAA,OAAO,IAAI,WAAW;AACtB,gBAAA,WAAW,CAAC,IAAI,KAAK,MAAM,EAC3B;gBACA,MAAM,OAAO,GAAG,WAAsC;AACtD,gBAAA,MAAM,EAAE,GAAG,OAAO,CAAC,EAAY;gBAE/B,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,CAACG,eAAS,CAAC,4BAA4B,CAAC,EAAE;AAC/D,oBAAA,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK;;AAGzB,oBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,wBAAA,IAAI;AACF,4BAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;wBAC3B;AAAE,wBAAA,MAAM;4BACN,KAAK,GAAG,EAAE;wBACZ;oBACF;AAEA,oBAAA,MAAM,SAAS,GAAqC;AAClD,wBAAA,IAAI,EAAE,iBAAiB;wBACvB,EAAE;AACF,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,KAAK,EAAE,KAAgC;qBACxC;AAED,oBAAA,OAAO,SAAS;gBAClB;;AAGA,gBAAA,OAAO,IAAI;YACb;AAEA;;;;;;AAMG;YACH,IACE,aAAa,IAAI,WAAW;AAC5B,gBAAA,SAAS,IAAI,WAAW;AACxB,gBAAA,WAAW,CAAC,IAAI,KAAK,MAAM,EAC3B;gBACA,MAAM,OAAO,GAAG,WAAsC;AACtD,gBAAA,MAAM,SAAS,GAAG,OAAO,CAAC,WAAqB;AAC/C,gBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;AAE/B,gBAAA,IACE,SAAS;oBACT,SAAS,CAAC,UAAU,CAACA,eAAS,CAAC,4BAA4B,CAAC,EAC5D;;AAEA,oBAAA,MAAM,cAAc,GAClB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;yBACrB,OAAO,IAAI,IAAI;4BACd,OAAO,OAAO,KAAK,QAAQ;AAC3B,4BAAA,MAAM,IAAI,OAAO;AAChB,4BAAA,OAAmC,CAAC,IAAI;AACvC,gCAAA,8BAA8B,CAAC;oBAErC,IAAI,cAAc,EAAE;AAClB,wBAAA,MAAM,SAAS,GAA2C;AACxD,4BAAA,IAAI,EAAE,wBAAwB;AAC9B,4BAAA,WAAW,EAAE,SAAS;AACtB,4BAAA,OAAO,EACL,OAA4D;yBAC/D;AACD,wBAAA,OAAO,SAAS;oBAClB;gBACF;;AAGA,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,IAAIC,2BAAkB,CAAC,WAAW,CAAC,EAAE;AACnC,gBAAA,OAAOC,sCAA6B,CAClC,WAAW,EACX,6BAA6B,CAC9B;YACH;AAEA,YAAA,MAAM,YAAY,GAChB,eAAe,IAAI,WAAW,GAAG,WAAW,CAAC,aAAa,GAAG,SAAS;AAExE,YAAA,IAAI,WAAW,CAAC,IAAI,KAAK,WAAW,EAAE;AACpC,gBAAA,IAAI,MAAM;AACV,gBAAA,IAAI,OAAO,WAAW,CAAC,SAAS,KAAK,QAAQ,EAAE;AAC7C,oBAAA,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC;gBAC9C;qBAAO;oBACL,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC;gBAClD;gBACA,OAAO;oBACL,IAAI,EAAE,OAAgB;oBACtB,MAAM;AACN,oBAAA,IAAI,YAAY,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;iBACzD;YACH;AAAO,iBAAA,IAAIC,gCAA0B,CAAC,WAAW,CAAC,EAAE;AAClD,gBAAA,OAAO,WAAW;YACpB;AAAO,iBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,UAAU,EAAE;;gBAE1C,OAAO;AACL,oBAAA,GAAG,WAAW;AACd,oBAAA,IAAI,YAAY,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;iBACzD;YACH;AAAO,iBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,UAAU,EAAE;AAC1C,gBAAA,MAAM,KAAK,GAAgC;oBACzC,IAAI,EAAE,UAAmB;oBACzB,QAAQ,EAAE,WAAW,CAAC,QAAQ;oBAC9B,SAAS,EAAE,WAAW,CAAC,SAAS;AAChC,oBAAA,IAAI,YAAY,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;iBACzD;AACD,gBAAA,OAAO,KAAK;YACd;AAAO,iBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,mBAAmB,EAAE;AACnD,gBAAA,MAAM,KAAK,GAAwC;oBACjD,IAAI,EAAE,mBAA4B;oBAClC,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,oBAAA,IAAI,YAAY,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;iBACzD;AACD,gBAAA,OAAO,KAAK;YACd;AAAO,iBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,eAAe,EAAE;AAC/C,gBAAA,MAAM,KAAK,GAAoC;AAC7C,oBAAA,IAAI,EAAE,eAAwB;oBAC9B,KAAK,EAAE,WAAW,CAAC,KAAK;oBACxB,MAAM,EAAE,WAAW,CAAC,MAAM;AAC1B,oBAAA,IAAI,eAAe,IAAI,WAAW,IAAI,WAAW,CAAC;AAChD,0BAAE,EAAE,aAAa,EAAE,WAAW,CAAC,aAAa;0BAC1C,EAAE,CAAC;AACP,oBAAA,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,CAAC;AAC5C,0BAAE,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS;0BAClC,EAAE,CAAC;oBACP,OAAO,EAAE,WAAW,CAAC,OAAO;iBAC7B;AACD,gBAAA,OAAO,KAAK;YACd;AAAO,iBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,YAAY,EAAE;AAC5C,gBAAA,MAAM,KAAK,GAAkC;AAC3C,oBAAA,IAAI,EAAE,YAAqB;oBAC3B,OAAO,EAAE,WAAW,CAAC,OAAO;AAC5B,oBAAA,IAAI,YAAY,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;iBACzD;AACD,gBAAA,OAAO,KAAK;YACd;AAAO,iBAAA,IACL,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC;gBAC7C,MAAM,IAAI,WAAW,EACrB;;gBAEA,OAAO;oBACL,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,oBAAA,IAAI,YAAY,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;AACxD,oBAAA,IAAI,WAAW,IAAI,WAAW,IAAI,WAAW,CAAC;AAC5C,0BAAE,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS;0BAClC,EAAE,CAAC;iBACR;YACH;AAAO,iBAAA,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,EAAE;AACxD,gBAAA,MAAM,eAAe,GAAG,EAAE,GAAG,WAAW,EAAE;AAC1C,gBAAA,IAAI,OAAO,IAAI,eAAe,EAAE;;oBAE9B,OAAO,eAAe,CAAC,KAAK;gBAC9B;AAEA,gBAAA,IAAI,eAAe,CAAC,IAAI,KAAK,kBAAkB,EAAE;;;AAG/C,oBAAA,eAAe,CAAC,IAAI,GAAG,UAAU;gBACnC;AAEA,gBAAA,IAAI,OAAO,IAAI,eAAe,EAAE;;AAE9B,oBAAA,IAAI,OAAO,eAAe,CAAC,KAAK,KAAK,QAAQ,EAAE;AAC7C,wBAAA,IAAI;4BACF,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC;wBAC3D;AAAE,wBAAA,MAAM;AACN,4BAAA,eAAe,CAAC,KAAK,GAAG,EAAE;wBAC5B;oBACF;gBACF;AAEA;;;;;;AAMG;;gBAGH,OAAO;AACL,oBAAA,GAAG,eAAe;AAClB,oBAAA,IAAI,YAAY,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;;iBAElD;YACV;iBAAO,IACL,cAAc,IAAI,WAAW;AAC7B,gBAAA,WAAW,CAAC,YAAY;AACxB,gBAAA,OAAO,WAAW,CAAC,YAAY,KAAK,QAAQ;AAC5C,gBAAAC,oBAAW,CAAC,OAAO,CAAC,EACpB;gBACA,MAAM,qBAAqB,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CACpD,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC,YAAY,CAAC,IAAI,CAC9D;gBACD,IAAI,CAAC,qBAAqB,EAAE;oBAC1B,MAAM,IAAI,KAAK,CACb,CAAA,2CAAA,EAA8C,WAAW,CAAC,YAAY,CAAC,IAAI,CAAA,CAAE,CAC9E;gBACH;;gBAEA,OAAO;oBACL,EAAE,EAAE,qBAAqB,CAAC,EAAE;AAC5B,oBAAA,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,qBAAqB,CAAC,IAAI;AAChC,oBAAA,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,IAAI;iBACrC;YACH;iBAAO;AACL,gBAAA,OAAO,CAAC,KAAK,CACX,2BAA2B,EAC3B,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CACrC;AACD,gBAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;YACvD;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC;IACxD;AACF;AAEA;;;;;AAKG;AACG,SAAU,kCAAkC,CAChDN,UAAuB,EAAA;AAEvB,IAAA,MAAM,cAAc,GAAG,sBAAsB,CAACA,UAAQ,CAAC;AACvD,IAAA,IAAI,MAAM;AACV,IAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;AAC1E,QAAA,MAAM,GAAGA,UAAQ,CAAC,CAAC,CAAC,CAAC,OAAO;IAC9B;AACA,IAAA,MAAM,oBAAoB,GACxB,MAAM,KAAK,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc;IACjE,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;AAC7D,QAAA,IAAI,IAAI;AACR,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE;YAClC,IAAI,GAAG,MAAe;QACxB;AAAO,aAAA,IAAI,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YACtC,IAAI,GAAG,WAAoB;QAC7B;AAAO,aAAA,IAAI,OAAO,CAAC,QAAQ,EAAE,KAAK,MAAM,EAAE;YACxC,IAAI,GAAG,MAAe;QACxB;AAAO,aAAA,IAAI,OAAO,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;AAC1C,YAAA,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE;QACH;aAAO;YACL,MAAM,IAAI,KAAK,CAAC,CAAA,cAAA,EAAiB,OAAO,CAAC,QAAQ,EAAE,CAAA,mBAAA,CAAqB,CAAC;QAC3E;AACA,QAAA,IAAIM,oBAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE;AACxD,YAAA,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE;AACvC,gBAAA,IAAI,OAAO,CAAC,OAAO,KAAK,EAAE,EAAE;oBAC1B,OAAO;wBACL,IAAI;wBACJ,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAC7B,oCAAoC,CACrC;qBACF;gBACH;qBAAO;oBACL,OAAO;wBACL,IAAI;AACJ,wBAAA,OAAO,EAAE;4BACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE;AACvC,4BAAA,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,oCAAoC,CAAC;AAChE,yBAAA;qBACF;gBACH;YACF;iBAAO;AACL,gBAAA,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO;AAC3B,gBAAA,MAAM,sBAAsB,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CACtD,CAAC,QAAQ,KACP,CAAC,CAAC,OAAO,CAAC,IAAI,CACZ,CAAC,WAAW,KACV,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU;oBAC9B,WAAW,CAAC,IAAI,KAAK,kBAAkB;AACvC,oBAAA,WAAW,CAAC,IAAI,KAAK,iBAAiB;oBACxC,WAAW,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CACjC,CACJ;gBACD,IAAI,sBAAsB,EAAE;AAC1B,oBAAA,OAAO,CAAC,IAAI,CACV,+EAA+E,CAChF;gBACH;gBACA,OAAO;oBACL,IAAI;AACJ,oBAAA,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;iBACjC;YACH;QACF;aAAO;YACL,OAAO;gBACL,IAAI;AACJ,gBAAA,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;aACjC;QACH;AACF,IAAA,CAAC,CAAC;IACF,OAAO;AACL,QAAA,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC;QAC1C,MAAM;KACyB;AACnC;AAEA,SAAS,aAAa,CAAC,QAAkD,EAAA;IACvE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;AACrC,QAAA,OAAO,QAAQ;IACjB;IAEA,MAAM,MAAM,GAA6C,EAAE;AAC3D,IAAA,IAAI,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC;AAMhC,IAAA,MAAM,gBAAgB,GAAG,CACvB,OAAoE,KACnD;AACjB,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC/B,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1C;AACA,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC;AAED,IAAA,MAAM,mBAAmB,GAAG,CAAC,GAAyB,KAAI;AACxD,QAAA,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;AAAE,YAAA,OAAO,KAAK;AAErC,QAAA,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE;AACnC,YAAA,OAAO,KAAK;QACd;QAEA,QACE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AAC1B,YAAA,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC;AAE5D,IAAA,CAAC;AAED,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC3C,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC;QAE/B,IACE,mBAAmB,CAAC,cAAc,CAAC;AACnC,YAAA,mBAAmB,CAAC,WAAW,CAAC,EAChC;;AAEA,YAAA,cAAc,GAAG;AACf,gBAAA,GAAG,cAAc;AACjB,gBAAA,OAAO,EAAE;AACP,oBAAA,GAAG,gBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC;AAC3C,oBAAA,GAAG,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC;AACzC,iBAAA;aACF;QACH;aAAO;AACL,YAAA,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;YAC3B,cAAc,GAAG,WAAW;QAC9B;IACF;AAEA,IAAA,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;AAC3B,IAAA,OAAO,MAAM;AACf;;;;;"}
1
+ {"version":3,"file":"message_inputs.cjs","sources":["../../../../../src/llm/anthropic/utils/message_inputs.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable no-console */\n/**\n * This util file contains functions for converting LangChain messages to Anthropic messages.\n */\nimport {\n type BaseMessage,\n type SystemMessage,\n HumanMessage,\n type AIMessage,\n type ToolMessage,\n isAIMessage,\n type StandardContentBlockConverter,\n type StandardTextBlock,\n type StandardImageBlock,\n type StandardFileBlock,\n MessageContentComplex,\n isDataContentBlock,\n convertToProviderContentBlock,\n parseBase64DataUrl,\n} from '@langchain/core/messages';\nimport { ToolCall } from '@langchain/core/messages/tool';\nimport {\n AnthropicImageBlockParam,\n AnthropicMessageCreateParams,\n AnthropicTextBlockParam,\n AnthropicDocumentBlockParam,\n AnthropicThinkingBlockParam,\n AnthropicRedactedThinkingBlockParam,\n AnthropicServerToolUseBlockParam,\n AnthropicWebSearchToolResultBlockParam,\n isAnthropicImageBlockParam,\n AnthropicSearchResultBlockParam,\n AnthropicCompactionBlockParam,\n AnthropicToolResponse,\n} from '../types';\nimport { Constants } from '@/common';\n\nfunction _formatImage(imageUrl: string) {\n const parsed = parseBase64DataUrl({ dataUrl: imageUrl });\n if (parsed) {\n return {\n type: 'base64',\n media_type: parsed.mime_type,\n data: parsed.data,\n };\n }\n let parsedUrl: URL;\n\n try {\n parsedUrl = new URL(imageUrl);\n } catch {\n throw new Error(\n [\n `Malformed image URL: ${JSON.stringify(\n imageUrl\n )}. Content blocks of type 'image_url' must be a valid http, https, or base64-encoded data URL.`,\n 'Example: data:image/png;base64,/9j/4AAQSk...',\n 'Example: https://example.com/image.jpg',\n ].join('\\n\\n')\n );\n }\n\n if (parsedUrl.protocol === 'http:' || parsedUrl.protocol === 'https:') {\n return {\n type: 'url',\n url: imageUrl,\n };\n }\n\n throw new Error(\n [\n `Invalid image URL protocol: ${JSON.stringify(\n parsedUrl.protocol\n )}. Anthropic only supports images as http, https, or base64-encoded data URLs on 'image_url' content blocks.`,\n 'Example: data:image/png;base64,/9j/4AAQSk...',\n 'Example: https://example.com/image.jpg',\n ].join('\\n\\n')\n );\n}\n\nfunction _ensureMessageContents(\n messages: BaseMessage[]\n): (SystemMessage | HumanMessage | AIMessage)[] {\n // Merge runs of human/tool messages into single human messages with content blocks.\n const updatedMsgs = [];\n for (const message of messages) {\n if (message._getType() === 'tool') {\n if (typeof message.content === 'string') {\n const previousMessage = updatedMsgs[updatedMsgs.length - 1];\n if (\n previousMessage._getType() === 'human' &&\n Array.isArray(previousMessage.content) &&\n 'type' in previousMessage.content[0] &&\n previousMessage.content[0].type === 'tool_result'\n ) {\n // If the previous message was a tool result, we merge this tool message into it.\n (previousMessage.content as MessageContentComplex[]).push({\n type: 'tool_result',\n content: message.content,\n tool_use_id: (message as ToolMessage).tool_call_id,\n });\n } else {\n // If not, we create a new human message with the tool result.\n updatedMsgs.push(\n new HumanMessage({\n content: [\n {\n type: 'tool_result',\n content: message.content,\n tool_use_id: (message as ToolMessage).tool_call_id,\n },\n ],\n })\n );\n }\n } else {\n updatedMsgs.push(\n new HumanMessage({\n content: [\n {\n type: 'tool_result',\n // rare case: message.content could be undefined\n ...(message.content != null\n ? { content: _formatContent(message) }\n : {}),\n tool_use_id: (message as ToolMessage).tool_call_id,\n },\n ],\n })\n );\n }\n } else {\n updatedMsgs.push(message);\n }\n }\n return updatedMsgs;\n}\n\nexport function _convertLangChainToolCallToAnthropic(\n toolCall: ToolCall\n): AnthropicToolResponse {\n if (toolCall.id === undefined) {\n throw new Error('Anthropic requires all tool calls to have an \"id\".');\n }\n return {\n type: toolCall.id.startsWith(Constants.ANTHROPIC_SERVER_TOOL_PREFIX)\n ? 'server_tool_use'\n : 'tool_use',\n id: toolCall.id,\n name: toolCall.name,\n input: toolCall.args,\n };\n}\n\nconst standardContentBlockConverter: StandardContentBlockConverter<{\n text: AnthropicTextBlockParam;\n image: AnthropicImageBlockParam;\n file: AnthropicDocumentBlockParam;\n}> = {\n providerName: 'anthropic',\n\n fromStandardTextBlock(block: StandardTextBlock): AnthropicTextBlockParam {\n return {\n type: 'text',\n text: block.text,\n ...('citations' in (block.metadata ?? {})\n ? { citations: block.metadata!.citations }\n : {}),\n ...('cache_control' in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n } as AnthropicTextBlockParam;\n },\n\n fromStandardImageBlock(block: StandardImageBlock): AnthropicImageBlockParam {\n if (block.source_type === 'url') {\n const data = parseBase64DataUrl({\n dataUrl: block.url,\n asTypedArray: false,\n });\n if (data) {\n return {\n type: 'image',\n source: {\n type: 'base64',\n data: data.data,\n media_type: data.mime_type,\n },\n ...('cache_control' in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n } as AnthropicImageBlockParam;\n } else {\n return {\n type: 'image',\n source: {\n type: 'url',\n url: block.url,\n media_type: block.mime_type ?? '',\n },\n ...('cache_control' in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n } as AnthropicImageBlockParam;\n }\n } else {\n if (block.source_type === 'base64') {\n return {\n type: 'image',\n source: {\n type: 'base64',\n data: block.data,\n media_type: block.mime_type ?? '',\n },\n ...('cache_control' in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n } as AnthropicImageBlockParam;\n } else {\n throw new Error(`Unsupported image source type: ${block.source_type}`);\n }\n }\n },\n\n fromStandardFileBlock(block: StandardFileBlock): AnthropicDocumentBlockParam {\n const mime_type = (block.mime_type ?? '').split(';')[0];\n\n if (block.source_type === 'url') {\n if (mime_type === 'application/pdf' || mime_type === '') {\n return {\n type: 'document',\n source: {\n type: 'url',\n url: block.url,\n media_type: block.mime_type ?? '',\n },\n ...('cache_control' in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n ...('citations' in (block.metadata ?? {})\n ? { citations: block.metadata!.citations }\n : {}),\n ...('context' in (block.metadata ?? {})\n ? { context: block.metadata!.context }\n : {}),\n ...('title' in (block.metadata ?? {})\n ? { title: block.metadata!.title }\n : {}),\n } as AnthropicDocumentBlockParam;\n }\n throw new Error(\n `Unsupported file mime type for file url source: ${block.mime_type}`\n );\n } else if (block.source_type === 'text') {\n if (mime_type === 'text/plain' || mime_type === '') {\n return {\n type: 'document',\n source: {\n type: 'text',\n data: block.text,\n media_type: block.mime_type ?? '',\n },\n ...('cache_control' in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n ...('citations' in (block.metadata ?? {})\n ? { citations: block.metadata!.citations }\n : {}),\n ...('context' in (block.metadata ?? {})\n ? { context: block.metadata!.context }\n : {}),\n ...('title' in (block.metadata ?? {})\n ? { title: block.metadata!.title }\n : {}),\n } as AnthropicDocumentBlockParam;\n } else {\n throw new Error(\n `Unsupported file mime type for file text source: ${block.mime_type}`\n );\n }\n } else if (block.source_type === 'base64') {\n if (mime_type === 'application/pdf' || mime_type === '') {\n return {\n type: 'document',\n source: {\n type: 'base64',\n data: block.data,\n media_type: 'application/pdf',\n },\n ...('cache_control' in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n ...('citations' in (block.metadata ?? {})\n ? { citations: block.metadata!.citations }\n : {}),\n ...('context' in (block.metadata ?? {})\n ? { context: block.metadata!.context }\n : {}),\n ...('title' in (block.metadata ?? {})\n ? { title: block.metadata!.title }\n : {}),\n } as AnthropicDocumentBlockParam;\n } else if (\n ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].includes(\n mime_type\n )\n ) {\n return {\n type: 'document',\n source: {\n type: 'content',\n content: [\n {\n type: 'image',\n source: {\n type: 'base64',\n data: block.data,\n media_type: mime_type as\n | 'image/jpeg'\n | 'image/png'\n | 'image/gif'\n | 'image/webp',\n },\n },\n ],\n },\n ...('cache_control' in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n ...('citations' in (block.metadata ?? {})\n ? { citations: block.metadata!.citations }\n : {}),\n ...('context' in (block.metadata ?? {})\n ? { context: block.metadata!.context }\n : {}),\n ...('title' in (block.metadata ?? {})\n ? { title: block.metadata!.title }\n : {}),\n } as AnthropicDocumentBlockParam;\n } else {\n throw new Error(\n `Unsupported file mime type for file base64 source: ${block.mime_type}`\n );\n }\n } else {\n throw new Error(`Unsupported file source type: ${block.source_type}`);\n }\n },\n};\n\nfunction _formatContent(message: BaseMessage) {\n const toolTypes = [\n 'tool_use',\n 'tool_result',\n 'input_json_delta',\n 'server_tool_use',\n 'web_search_tool_result',\n 'web_search_result',\n ];\n const textTypes = ['text', 'text_delta'];\n const { content } = message;\n\n if (typeof content === 'string') {\n return content;\n } else {\n const contentBlocks = content.map((contentPart) => {\n /**\n * Normalize server_tool_use blocks into a clean shape the API accepts.\n * These blocks may arrive with the correct type (server_tool_use) or mislabeled\n * as text/tool_use after chunk concatenation or state serialization.\n * Regardless of current type, if the id starts with 'srvtoolu_' we rebuild\n * a clean block with only the properties the API expects.\n */\n if (\n 'id' in contentPart &&\n typeof (contentPart as Record<string, unknown>).id === 'string' &&\n ((contentPart as Record<string, unknown>).id as string).startsWith(\n Constants.ANTHROPIC_SERVER_TOOL_PREFIX\n ) &&\n 'name' in contentPart\n ) {\n const rawPart = contentPart as Record<string, unknown>;\n let input = rawPart.input;\n if (typeof input === 'string') {\n try {\n input = JSON.parse(input);\n } catch {\n input = {};\n }\n }\n const corrected: AnthropicServerToolUseBlockParam = {\n type: 'server_tool_use',\n id: rawPart.id as string,\n name: (rawPart.name ?? 'web_search') as 'web_search',\n input: (input ?? {}) as Record<string, unknown>,\n };\n return corrected;\n }\n\n /**\n * Normalize web_search_tool_result blocks into a clean shape.\n * Same rationale as above — the block may carry extra properties from\n * streaming (input, index, etc.) that the API rejects. Rebuild cleanly.\n */\n if (\n 'tool_use_id' in contentPart &&\n typeof (contentPart as Record<string, unknown>).tool_use_id ===\n 'string' &&\n (\n (contentPart as Record<string, unknown>).tool_use_id as string\n ).startsWith(Constants.ANTHROPIC_SERVER_TOOL_PREFIX) &&\n 'content' in contentPart\n ) {\n const rawPart = contentPart as Record<string, unknown>;\n const content = rawPart.content;\n const isValidContent =\n Array.isArray(content) ||\n (content != null &&\n typeof content === 'object' &&\n 'type' in content &&\n (content as Record<string, unknown>).type ===\n 'web_search_tool_result_error');\n\n if (isValidContent) {\n const corrected: AnthropicWebSearchToolResultBlockParam = {\n type: 'web_search_tool_result',\n tool_use_id: rawPart.tool_use_id as string,\n content:\n content as AnthropicWebSearchToolResultBlockParam['content'],\n };\n return corrected;\n }\n return null;\n }\n\n /**\n * Skip non-server malformed blocks that have tool fields mixed with text type.\n */\n if (\n 'id' in contentPart &&\n 'name' in contentPart &&\n 'input' in contentPart &&\n contentPart.type === 'text'\n ) {\n return null;\n }\n if (\n 'tool_use_id' in contentPart &&\n 'content' in contentPart &&\n contentPart.type === 'text'\n ) {\n return null;\n }\n\n if (isDataContentBlock(contentPart)) {\n return convertToProviderContentBlock(\n contentPart,\n standardContentBlockConverter\n );\n }\n\n const cacheControl =\n 'cache_control' in contentPart ? contentPart.cache_control : undefined;\n\n if (contentPart.type === 'image_url') {\n let source;\n if (typeof contentPart.image_url === 'string') {\n source = _formatImage(contentPart.image_url);\n } else {\n source = _formatImage(contentPart.image_url.url);\n }\n return {\n type: 'image' as const, // Explicitly setting the type as \"image\"\n source,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n };\n } else if (isAnthropicImageBlockParam(contentPart)) {\n return contentPart;\n } else if (contentPart.type === 'document') {\n // PDF\n return {\n ...contentPart,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n };\n } else if (contentPart.type === 'thinking') {\n const block: AnthropicThinkingBlockParam = {\n type: 'thinking' as const, // Explicitly setting the type as \"thinking\"\n thinking: contentPart.thinking,\n signature: contentPart.signature,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n };\n return block;\n } else if (contentPart.type === 'redacted_thinking') {\n const block: AnthropicRedactedThinkingBlockParam = {\n type: 'redacted_thinking' as const, // Explicitly setting the type as \"redacted_thinking\"\n data: contentPart.data,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n };\n return block;\n } else if (contentPart.type === 'search_result') {\n const block: AnthropicSearchResultBlockParam = {\n type: 'search_result' as const,\n title: contentPart.title,\n source: contentPart.source,\n ...('cache_control' in contentPart && contentPart.cache_control\n ? { cache_control: contentPart.cache_control }\n : {}),\n ...('citations' in contentPart && contentPart.citations\n ? { citations: contentPart.citations }\n : {}),\n content: contentPart.content,\n };\n return block;\n } else if (contentPart.type === 'compaction') {\n const block: AnthropicCompactionBlockParam = {\n type: 'compaction' as const,\n content: contentPart.content,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n };\n return block;\n } else if (\n textTypes.find((t) => t === contentPart.type) &&\n 'text' in contentPart\n ) {\n // Assuming contentPart is of type MessageContentText here\n return {\n type: 'text' as const, // Explicitly setting the type as \"text\"\n text: contentPart.text,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n ...('citations' in contentPart && contentPart.citations\n ? { citations: contentPart.citations }\n : {}),\n };\n } else if (toolTypes.find((t) => t === contentPart.type)) {\n const contentPartCopy = { ...contentPart };\n if ('index' in contentPartCopy) {\n // Anthropic does not support passing the index field here, so we remove it.\n delete contentPartCopy.index;\n }\n\n if (contentPartCopy.type === 'input_json_delta') {\n // `input_json_delta` type only represents yielding partial tool inputs\n // and is not a valid type for Anthropic messages.\n contentPartCopy.type = 'tool_use';\n }\n\n if (\n contentPartCopy.type === 'tool_use' &&\n 'id' in contentPartCopy &&\n typeof contentPartCopy.id === 'string' &&\n contentPartCopy.id.startsWith(Constants.ANTHROPIC_SERVER_TOOL_PREFIX)\n ) {\n contentPartCopy.type = 'server_tool_use';\n }\n\n if ('input' in contentPartCopy) {\n // Anthropic tool use inputs should be valid objects, when applicable.\n if (typeof contentPartCopy.input === 'string') {\n try {\n contentPartCopy.input = JSON.parse(contentPartCopy.input);\n } catch {\n contentPartCopy.input = {};\n }\n }\n }\n\n /**\n * For multi-turn conversations with citations, we must preserve ALL blocks\n * including server_tool_use, web_search_tool_result, and web_search_result.\n * Citations reference search results by index, so filtering changes indices and breaks references.\n *\n * The ToolNode already handles skipping server tool invocations via the srvtoolu_ prefix check.\n */\n\n // TODO: Fix when SDK types are fixed\n return {\n ...contentPartCopy,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any;\n } else if (\n 'functionCall' in contentPart &&\n contentPart.functionCall &&\n typeof contentPart.functionCall === 'object' &&\n isAIMessage(message)\n ) {\n const correspondingToolCall = message.tool_calls?.find(\n (toolCall) => toolCall.name === contentPart.functionCall.name\n );\n if (!correspondingToolCall) {\n throw new Error(\n `Could not find tool call for function call ${contentPart.functionCall.name}`\n );\n }\n // Google GenAI models include a `functionCall` object inside content. We should ignore it as Anthropic will not support it.\n return {\n id: correspondingToolCall.id,\n type: 'tool_use',\n name: correspondingToolCall.name,\n input: contentPart.functionCall.args,\n };\n } else {\n console.error(\n 'Unsupported content part:',\n JSON.stringify(contentPart, null, 2)\n );\n throw new Error('Unsupported message content format');\n }\n });\n return contentBlocks.filter(\n (block) =>\n block !== null &&\n !(block.type === 'text' && 'text' in block && block.text === '')\n );\n }\n}\n\n/**\n * Formats messages as a prompt for the model.\n * Used in LangSmith, export is important here.\n * @param messages The base messages to format as a prompt.\n * @returns The formatted prompt.\n */\nexport function _convertMessagesToAnthropicPayload(\n messages: BaseMessage[]\n): AnthropicMessageCreateParams {\n const mergedMessages = _ensureMessageContents(messages);\n let system;\n if (mergedMessages.length > 0 && mergedMessages[0]._getType() === 'system') {\n system = messages[0].content;\n }\n const conversationMessages =\n system !== undefined ? mergedMessages.slice(1) : mergedMessages;\n const formattedMessages = conversationMessages.map((message) => {\n let role;\n if (message._getType() === 'human') {\n role = 'user' as const;\n } else if (message._getType() === 'ai') {\n role = 'assistant' as const;\n } else if (message._getType() === 'tool') {\n role = 'user' as const;\n } else if (message._getType() === 'system') {\n throw new Error(\n 'System messages are only permitted as the first passed message.'\n );\n } else {\n throw new Error(`Message type \"${message._getType()}\" is not supported.`);\n }\n if (isAIMessage(message) && !!message.tool_calls?.length) {\n if (typeof message.content === 'string') {\n const clientToolCalls = message.tool_calls.filter(\n (tc) =>\n !(\n tc.id?.startsWith(Constants.ANTHROPIC_SERVER_TOOL_PREFIX) ?? false\n )\n );\n if (message.content === '') {\n return {\n role,\n content:\n clientToolCalls.length > 0\n ? clientToolCalls.map(_convertLangChainToolCallToAnthropic)\n : [{ type: 'text' as const, text: ' ' }],\n };\n } else {\n return {\n role,\n content: [\n { type: 'text' as const, text: message.content },\n ...clientToolCalls.map(_convertLangChainToolCallToAnthropic),\n ],\n };\n }\n } else {\n const { content } = message;\n const hasMismatchedToolCalls = !message.tool_calls.every(\n (toolCall) =>\n !!content.find(\n (contentPart) =>\n (contentPart.type === 'tool_use' ||\n contentPart.type === 'input_json_delta' ||\n contentPart.type === 'server_tool_use') &&\n contentPart.id === toolCall.id\n )\n );\n if (hasMismatchedToolCalls) {\n console.warn(\n 'The \"tool_calls\" field on a message is only respected if content is a string.'\n );\n }\n return {\n role,\n content: _formatContent(message),\n };\n }\n } else {\n return {\n role,\n content: _formatContent(message),\n };\n }\n });\n return {\n messages: mergeMessages(formattedMessages),\n system,\n } as AnthropicMessageCreateParams;\n}\n\nfunction mergeMessages(messages: AnthropicMessageCreateParams['messages']) {\n if (!messages || messages.length <= 1) {\n return messages;\n }\n\n const result: AnthropicMessageCreateParams['messages'] = [];\n let currentMessage = messages[0];\n\n type ContentBlocks = Exclude<\n AnthropicMessageCreateParams['messages'][number]['content'],\n string\n >;\n const normalizeContent = (\n content: AnthropicMessageCreateParams['messages'][number]['content']\n ): ContentBlocks => {\n if (typeof content === 'string') {\n return [{ type: 'text', text: content }];\n }\n return content;\n };\n\n const isToolResultMessage = (msg: (typeof messages)[0]) => {\n if (msg.role !== 'user') return false;\n\n if (typeof msg.content === 'string') {\n return false;\n }\n\n return (\n Array.isArray(msg.content) &&\n msg.content.every((item) => item.type === 'tool_result')\n );\n };\n\n for (let i = 1; i < messages.length; i += 1) {\n const nextMessage = messages[i];\n\n if (\n isToolResultMessage(currentMessage) &&\n isToolResultMessage(nextMessage)\n ) {\n // Merge the messages by combining their content arrays\n currentMessage = {\n ...currentMessage,\n content: [\n ...normalizeContent(currentMessage.content),\n ...normalizeContent(nextMessage.content),\n ],\n };\n } else {\n result.push(currentMessage);\n currentMessage = nextMessage;\n }\n }\n\n result.push(currentMessage);\n return result;\n}\n"],"names":["parseBase64DataUrl","messages","HumanMessage","Constants","isDataContentBlock","convertToProviderContentBlock","isAnthropicImageBlockParam","isAIMessage"],"mappings":"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"}
@@ -25,7 +25,14 @@ User: ${userMessage[1]}
25
25
  const _allowedTypes = ['image_url', 'text', 'tool_use', 'tool_result'];
26
26
  const allowedTypesByProvider = {
27
27
  default: _allowedTypes,
28
- [_enum.Providers.ANTHROPIC]: [..._allowedTypes, 'thinking', 'redacted_thinking'],
28
+ [_enum.Providers.ANTHROPIC]: [
29
+ ..._allowedTypes,
30
+ 'thinking',
31
+ 'redacted_thinking',
32
+ 'server_tool_use',
33
+ 'web_search_tool_result',
34
+ 'web_search_result',
35
+ ],
29
36
  [_enum.Providers.BEDROCK]: [..._allowedTypes, 'reasoning_content'],
30
37
  [_enum.Providers.OPENAI]: _allowedTypes,
31
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"core.cjs","sources":["../../../src/messages/core.ts"],"sourcesContent":["// src/messages.ts\nimport {\n AIMessage,\n BaseMessage,\n ToolMessage,\n HumanMessage,\n AIMessageChunk,\n} from '@langchain/core/messages';\nimport type { ToolCall } from '@langchain/core/messages/tool';\nimport type * as t from '@/types';\nimport { Providers } from '@/common';\n\nexport function getConverseOverrideMessage({\n userMessage,\n lastMessageX,\n lastMessageY,\n}: {\n userMessage: string[];\n lastMessageX: AIMessageChunk | null;\n lastMessageY: ToolMessage;\n}): HumanMessage {\n const content = `\nUser: ${userMessage[1]}\n\n---\n# YOU HAVE ALREADY RESPONDED TO THE LATEST USER MESSAGE:\n\n# Observations:\n- ${lastMessageX?.content}\n\n# Tool Calls:\n- ${lastMessageX?.tool_calls?.join('\\n- ')}\n\n# Tool Responses:\n- ${lastMessageY.content}\n`;\n\n return new HumanMessage(content);\n}\n\nconst _allowedTypes = ['image_url', 'text', 'tool_use', 'tool_result'];\nconst allowedTypesByProvider: Record<string, string[]> = {\n default: _allowedTypes,\n [Providers.ANTHROPIC]: [..._allowedTypes, 'thinking', 'redacted_thinking'],\n [Providers.BEDROCK]: [..._allowedTypes, 'reasoning_content'],\n [Providers.OPENAI]: _allowedTypes,\n};\n\nconst modifyContent = ({\n provider,\n messageType,\n content,\n}: {\n provider: Providers;\n messageType: string;\n content: t.ExtendedMessageContent[];\n}): (t.ExtendedMessageContent | null)[] => {\n const allowedTypes =\n allowedTypesByProvider[provider] ?? allowedTypesByProvider.default;\n return content.map((item: t.ExtendedMessageContent | null) => {\n if (\n item &&\n typeof item === 'object' &&\n 'type' in item &&\n item.type != null &&\n item.type\n ) {\n let newType = item.type;\n if (newType.endsWith('_delta')) {\n newType = newType.replace('_delta', '');\n }\n if (!allowedTypes.includes(newType)) {\n newType = 'text';\n }\n\n /* Handle the edge case for empty object 'tool_use' input in AI messages */\n if (\n messageType === 'ai' &&\n newType === 'tool_use' &&\n 'input' in item &&\n item.input === ''\n ) {\n return { ...item, type: newType, input: '{}' };\n }\n\n return { ...item, type: newType };\n }\n return item;\n });\n};\n\ntype ContentBlock =\n | Partial<t.BedrockReasoningContentText>\n | t.MessageDeltaUpdate;\n\nfunction reduceBlocks(blocks: ContentBlock[]): ContentBlock[] {\n const reduced: ContentBlock[] = [];\n\n for (const block of blocks) {\n const lastBlock = reduced[reduced.length - 1] as ContentBlock | undefined;\n\n // Merge consecutive 'reasoning_content'\n if (\n block.type === 'reasoning_content' &&\n lastBlock?.type === 'reasoning_content'\n ) {\n // append text if exists\n if (block.reasoningText?.text != null && block.reasoningText.text) {\n (\n lastBlock.reasoningText as t.BedrockReasoningContentText['reasoningText']\n ).text =\n (lastBlock.reasoningText?.text ?? '') + block.reasoningText.text;\n }\n // preserve the signature if exists\n if (\n block.reasoningText?.signature != null &&\n block.reasoningText.signature\n ) {\n (\n lastBlock.reasoningText as t.BedrockReasoningContentText['reasoningText']\n ).signature = block.reasoningText.signature;\n }\n }\n // Merge consecutive 'text'\n else if (block.type === 'text' && lastBlock?.type === 'text') {\n lastBlock.text += block.text;\n }\n // add a new block as it's a different type or first element\n else {\n // deep copy to avoid mutation of original\n reduced.push(JSON.parse(JSON.stringify(block)));\n }\n }\n\n return reduced;\n}\n\nexport function modifyDeltaProperties(\n provider: Providers,\n obj?: AIMessageChunk\n): AIMessageChunk | undefined {\n if (!obj || typeof obj !== 'object') return obj;\n\n const messageType = (obj as Partial<AIMessageChunk>)._getType\n ? obj._getType()\n : '';\n\n if (provider === Providers.BEDROCK && Array.isArray(obj.content)) {\n obj.content = reduceBlocks(obj.content as ContentBlock[]);\n }\n if (Array.isArray(obj.content)) {\n obj.content = modifyContent({\n provider,\n messageType,\n content: obj.content,\n }) as t.MessageContentComplex[];\n }\n if (\n (obj as Partial<AIMessageChunk>).lc_kwargs &&\n Array.isArray(obj.lc_kwargs.content)\n ) {\n if (provider === Providers.BEDROCK) {\n obj.lc_kwargs.content = reduceBlocks(\n obj.lc_kwargs.content as ContentBlock[]\n );\n }\n obj.lc_kwargs.content = modifyContent({\n provider,\n messageType,\n content: obj.lc_kwargs.content,\n });\n }\n return obj;\n}\n\nexport function formatAnthropicMessage(message: AIMessageChunk): AIMessage {\n if (!message.tool_calls || message.tool_calls.length === 0) {\n return new AIMessage({ content: message.content });\n }\n\n const toolCallMap = new Map(message.tool_calls.map((tc) => [tc.id, tc]));\n let formattedContent: string | t.ExtendedMessageContent[];\n\n if (Array.isArray(message.content)) {\n formattedContent = message.content.reduce<t.ExtendedMessageContent[]>(\n (acc, item) => {\n if (typeof item === 'object') {\n const extendedItem = item as t.ExtendedMessageContent;\n if (\n extendedItem.type === 'text' &&\n extendedItem.text != null &&\n extendedItem.text\n ) {\n acc.push({ type: 'text', text: extendedItem.text });\n } else if (\n extendedItem.type === 'tool_use' &&\n extendedItem.id != null &&\n extendedItem.id\n ) {\n const toolCall = toolCallMap.get(extendedItem.id);\n if (toolCall) {\n acc.push({\n type: 'tool_use',\n id: extendedItem.id,\n name: toolCall.name,\n input: toolCall.args as unknown as string,\n });\n }\n } else if (\n 'input' in extendedItem &&\n extendedItem.input != null &&\n extendedItem.input\n ) {\n try {\n const parsedInput = JSON.parse(extendedItem.input);\n const toolCall = message.tool_calls?.find(\n (tc) => tc.args.input === parsedInput.input\n );\n if (toolCall) {\n acc.push({\n type: 'tool_use',\n id: toolCall.id,\n name: toolCall.name,\n input: toolCall.args as unknown as string,\n });\n }\n } catch {\n if (extendedItem.input) {\n acc.push({ type: 'text', text: extendedItem.input });\n }\n }\n }\n } else if (typeof item === 'string') {\n acc.push({ type: 'text', text: item });\n }\n return acc;\n },\n []\n );\n } else if (typeof message.content === 'string') {\n formattedContent = message.content;\n } else {\n formattedContent = [];\n }\n\n // const formattedToolCalls: ToolCall[] = message.tool_calls.map(toolCall => ({\n // id: toolCall.id ?? '',\n // name: toolCall.name,\n // args: toolCall.args,\n // type: 'tool_call',\n // }));\n\n const formattedToolCalls: t.AgentToolCall[] = message.tool_calls.map(\n (toolCall) => ({\n id: toolCall.id ?? '',\n type: 'function',\n function: {\n name: toolCall.name,\n arguments: toolCall.args,\n },\n })\n );\n\n return new AIMessage({\n content: formattedContent,\n tool_calls: formattedToolCalls as ToolCall[],\n additional_kwargs: {\n ...message.additional_kwargs,\n },\n });\n}\n\nexport function convertMessagesToContent(\n messages: BaseMessage[]\n): t.MessageContentComplex[] {\n const processedContent: t.MessageContentComplex[] = [];\n\n const addContentPart = (message: BaseMessage | null): void => {\n const content =\n message?.lc_kwargs.content != null\n ? message.lc_kwargs.content\n : message?.content;\n if (content === undefined) {\n return;\n }\n if (typeof content === 'string') {\n processedContent.push({\n type: 'text',\n text: content,\n });\n } else if (Array.isArray(content)) {\n const filteredContent = content.filter(\n (item) => item != null && item.type !== 'tool_use'\n );\n processedContent.push(...filteredContent);\n }\n };\n\n let currentAIMessageIndex = -1;\n const toolCallMap = new Map<string, t.CustomToolCall>();\n\n for (let i = 0; i < messages.length; i++) {\n const message = messages[i] as BaseMessage | null;\n const messageType = message?._getType();\n\n if (\n messageType === 'ai' &&\n ((message as AIMessage).tool_calls?.length ?? 0) > 0\n ) {\n const tool_calls = (message as AIMessage).tool_calls || [];\n for (const tool_call of tool_calls) {\n if (tool_call.id == null || !tool_call.id) {\n continue;\n }\n\n toolCallMap.set(tool_call.id, tool_call);\n }\n\n addContentPart(message);\n currentAIMessageIndex = processedContent.length - 1;\n continue;\n } else if (\n messageType === 'tool' &&\n (message as ToolMessage).tool_call_id\n ) {\n const id = (message as ToolMessage).tool_call_id;\n const output = (message as ToolMessage).content;\n const tool_call = toolCallMap.get(id);\n if (currentAIMessageIndex === -1) {\n processedContent.push({ type: 'text', text: '' });\n currentAIMessageIndex = processedContent.length - 1;\n }\n const contentPart = processedContent[currentAIMessageIndex];\n processedContent.push({\n type: 'tool_call',\n tool_call: Object.assign({}, tool_call, { output }),\n });\n const tool_call_ids = contentPart.tool_call_ids || [];\n tool_call_ids.push(id);\n contentPart.tool_call_ids = tool_call_ids;\n continue;\n } else if (messageType !== 'ai') {\n continue;\n }\n\n addContentPart(message);\n }\n\n return processedContent;\n}\n\nexport function formatAnthropicArtifactContent(messages: BaseMessage[]): void {\n const lastMessage = messages[messages.length - 1];\n if (!(lastMessage instanceof ToolMessage)) return;\n\n // Find the latest AIMessage with tool_calls that this tool message belongs to\n const latestAIParentIndex = findLastIndex(\n messages,\n (msg) =>\n (msg instanceof AIMessageChunk &&\n (msg.tool_calls?.length ?? 0) > 0 &&\n msg.tool_calls?.some((tc) => tc.id === lastMessage.tool_call_id)) ??\n false\n );\n\n if (latestAIParentIndex === -1) return;\n\n // Build tool call ID set and merge artifact content in a single forward pass.\n const message = messages[latestAIParentIndex] as AIMessageChunk;\n const toolCallIdSet = new Set<string>();\n if (message.tool_calls) {\n for (const tc of message.tool_calls) {\n if (tc.id != null) {\n toolCallIdSet.add(tc.id);\n }\n }\n }\n\n for (let j = latestAIParentIndex + 1; j < messages.length; j++) {\n const msg = messages[j];\n if (\n msg instanceof ToolMessage &&\n toolCallIdSet.has(msg.tool_call_id) &&\n msg.artifact != null &&\n Array.isArray(msg.artifact?.content)\n ) {\n const base = Array.isArray(msg.content)\n ? msg.content\n : [{ type: 'text' as const, text: String(msg.content ?? '') }];\n msg.content = base.concat(msg.artifact.content);\n }\n }\n}\n\nexport function formatArtifactPayload(messages: BaseMessage[]): void {\n const lastMessageY = messages[messages.length - 1];\n if (!(lastMessageY instanceof ToolMessage)) return;\n\n // Find the latest AIMessage with tool_calls that this tool message belongs to\n const latestAIParentIndex = findLastIndex(\n messages,\n (msg) =>\n (msg instanceof AIMessageChunk &&\n (msg.tool_calls?.length ?? 0) > 0 &&\n msg.tool_calls?.some((tc) => tc.id === lastMessageY.tool_call_id)) ??\n false\n );\n\n if (latestAIParentIndex === -1) return;\n\n // Single pass: collect relevant tool messages with artifacts and aggregate\n const aggregatedContent: t.MessageContentComplex[] = [];\n\n for (let i = latestAIParentIndex + 1; i < messages.length; i++) {\n const msg = messages[i];\n if (\n !(msg instanceof ToolMessage) ||\n !Array.isArray(msg.artifact?.content)\n ) {\n continue;\n }\n let currentContent = msg.content;\n if (!Array.isArray(currentContent)) {\n currentContent = [{ type: 'text', text: msg.content }];\n }\n aggregatedContent.push(...(currentContent as t.MessageContentComplex[]));\n msg.content =\n 'Tool response is included in the next message as a Human message';\n aggregatedContent.push(...msg.artifact.content);\n }\n\n if (aggregatedContent.length > 0) {\n messages.push(new HumanMessage({ content: aggregatedContent }));\n }\n}\n\nexport function findLastIndex<T>(\n array: T[],\n predicate: (value: T) => boolean\n): number {\n for (let i = array.length - 1; i >= 0; i--) {\n if (predicate(array[i])) {\n return i;\n }\n }\n return -1;\n}\n"],"names":["HumanMessage","Providers","AIMessage","messages","ToolMessage","AIMessageChunk"],"mappings":"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"}
1
+ {"version":3,"file":"core.cjs","sources":["../../../src/messages/core.ts"],"sourcesContent":["// src/messages.ts\nimport {\n AIMessage,\n BaseMessage,\n ToolMessage,\n HumanMessage,\n AIMessageChunk,\n} from '@langchain/core/messages';\nimport type { ToolCall } from '@langchain/core/messages/tool';\nimport type * as t from '@/types';\nimport { Providers } from '@/common';\n\nexport function getConverseOverrideMessage({\n userMessage,\n lastMessageX,\n lastMessageY,\n}: {\n userMessage: string[];\n lastMessageX: AIMessageChunk | null;\n lastMessageY: ToolMessage;\n}): HumanMessage {\n const content = `\nUser: ${userMessage[1]}\n\n---\n# YOU HAVE ALREADY RESPONDED TO THE LATEST USER MESSAGE:\n\n# Observations:\n- ${lastMessageX?.content}\n\n# Tool Calls:\n- ${lastMessageX?.tool_calls?.join('\\n- ')}\n\n# Tool Responses:\n- ${lastMessageY.content}\n`;\n\n return new HumanMessage(content);\n}\n\nconst _allowedTypes = ['image_url', 'text', 'tool_use', 'tool_result'];\nconst allowedTypesByProvider: Record<string, string[]> = {\n default: _allowedTypes,\n [Providers.ANTHROPIC]: [\n ..._allowedTypes,\n 'thinking',\n 'redacted_thinking',\n 'server_tool_use',\n 'web_search_tool_result',\n 'web_search_result',\n ],\n [Providers.BEDROCK]: [..._allowedTypes, 'reasoning_content'],\n [Providers.OPENAI]: _allowedTypes,\n};\n\nconst modifyContent = ({\n provider,\n messageType,\n content,\n}: {\n provider: Providers;\n messageType: string;\n content: t.ExtendedMessageContent[];\n}): (t.ExtendedMessageContent | null)[] => {\n const allowedTypes =\n allowedTypesByProvider[provider] ?? allowedTypesByProvider.default;\n return content.map((item: t.ExtendedMessageContent | null) => {\n if (\n item &&\n typeof item === 'object' &&\n 'type' in item &&\n item.type != null &&\n item.type\n ) {\n let newType = item.type;\n if (newType.endsWith('_delta')) {\n newType = newType.replace('_delta', '');\n }\n if (!allowedTypes.includes(newType)) {\n newType = 'text';\n }\n\n /* Handle the edge case for empty object 'tool_use' input in AI messages */\n if (\n messageType === 'ai' &&\n newType === 'tool_use' &&\n 'input' in item &&\n item.input === ''\n ) {\n return { ...item, type: newType, input: '{}' };\n }\n\n return { ...item, type: newType };\n }\n return item;\n });\n};\n\ntype ContentBlock =\n | Partial<t.BedrockReasoningContentText>\n | t.MessageDeltaUpdate;\n\nfunction reduceBlocks(blocks: ContentBlock[]): ContentBlock[] {\n const reduced: ContentBlock[] = [];\n\n for (const block of blocks) {\n const lastBlock = reduced[reduced.length - 1] as ContentBlock | undefined;\n\n // Merge consecutive 'reasoning_content'\n if (\n block.type === 'reasoning_content' &&\n lastBlock?.type === 'reasoning_content'\n ) {\n // append text if exists\n if (block.reasoningText?.text != null && block.reasoningText.text) {\n (\n lastBlock.reasoningText as t.BedrockReasoningContentText['reasoningText']\n ).text =\n (lastBlock.reasoningText?.text ?? '') + block.reasoningText.text;\n }\n // preserve the signature if exists\n if (\n block.reasoningText?.signature != null &&\n block.reasoningText.signature\n ) {\n (\n lastBlock.reasoningText as t.BedrockReasoningContentText['reasoningText']\n ).signature = block.reasoningText.signature;\n }\n }\n // Merge consecutive 'text'\n else if (block.type === 'text' && lastBlock?.type === 'text') {\n lastBlock.text += block.text;\n }\n // add a new block as it's a different type or first element\n else {\n // deep copy to avoid mutation of original\n reduced.push(JSON.parse(JSON.stringify(block)));\n }\n }\n\n return reduced;\n}\n\nexport function modifyDeltaProperties(\n provider: Providers,\n obj?: AIMessageChunk\n): AIMessageChunk | undefined {\n if (!obj || typeof obj !== 'object') return obj;\n\n const messageType = (obj as Partial<AIMessageChunk>)._getType\n ? obj._getType()\n : '';\n\n if (provider === Providers.BEDROCK && Array.isArray(obj.content)) {\n obj.content = reduceBlocks(obj.content as ContentBlock[]);\n }\n if (Array.isArray(obj.content)) {\n obj.content = modifyContent({\n provider,\n messageType,\n content: obj.content,\n }) as t.MessageContentComplex[];\n }\n if (\n (obj as Partial<AIMessageChunk>).lc_kwargs &&\n Array.isArray(obj.lc_kwargs.content)\n ) {\n if (provider === Providers.BEDROCK) {\n obj.lc_kwargs.content = reduceBlocks(\n obj.lc_kwargs.content as ContentBlock[]\n );\n }\n obj.lc_kwargs.content = modifyContent({\n provider,\n messageType,\n content: obj.lc_kwargs.content,\n });\n }\n return obj;\n}\n\nexport function formatAnthropicMessage(message: AIMessageChunk): AIMessage {\n if (!message.tool_calls || message.tool_calls.length === 0) {\n return new AIMessage({ content: message.content });\n }\n\n const toolCallMap = new Map(message.tool_calls.map((tc) => [tc.id, tc]));\n let formattedContent: string | t.ExtendedMessageContent[];\n\n if (Array.isArray(message.content)) {\n formattedContent = message.content.reduce<t.ExtendedMessageContent[]>(\n (acc, item) => {\n if (typeof item === 'object') {\n const extendedItem = item as t.ExtendedMessageContent;\n if (\n extendedItem.type === 'text' &&\n extendedItem.text != null &&\n extendedItem.text\n ) {\n acc.push({ type: 'text', text: extendedItem.text });\n } else if (\n extendedItem.type === 'tool_use' &&\n extendedItem.id != null &&\n extendedItem.id\n ) {\n const toolCall = toolCallMap.get(extendedItem.id);\n if (toolCall) {\n acc.push({\n type: 'tool_use',\n id: extendedItem.id,\n name: toolCall.name,\n input: toolCall.args as unknown as string,\n });\n }\n } else if (\n 'input' in extendedItem &&\n extendedItem.input != null &&\n extendedItem.input\n ) {\n try {\n const parsedInput = JSON.parse(extendedItem.input);\n const toolCall = message.tool_calls?.find(\n (tc) => tc.args.input === parsedInput.input\n );\n if (toolCall) {\n acc.push({\n type: 'tool_use',\n id: toolCall.id,\n name: toolCall.name,\n input: toolCall.args as unknown as string,\n });\n }\n } catch {\n if (extendedItem.input) {\n acc.push({ type: 'text', text: extendedItem.input });\n }\n }\n }\n } else if (typeof item === 'string') {\n acc.push({ type: 'text', text: item });\n }\n return acc;\n },\n []\n );\n } else if (typeof message.content === 'string') {\n formattedContent = message.content;\n } else {\n formattedContent = [];\n }\n\n // const formattedToolCalls: ToolCall[] = message.tool_calls.map(toolCall => ({\n // id: toolCall.id ?? '',\n // name: toolCall.name,\n // args: toolCall.args,\n // type: 'tool_call',\n // }));\n\n const formattedToolCalls: t.AgentToolCall[] = message.tool_calls.map(\n (toolCall) => ({\n id: toolCall.id ?? '',\n type: 'function',\n function: {\n name: toolCall.name,\n arguments: toolCall.args,\n },\n })\n );\n\n return new AIMessage({\n content: formattedContent,\n tool_calls: formattedToolCalls as ToolCall[],\n additional_kwargs: {\n ...message.additional_kwargs,\n },\n });\n}\n\nexport function convertMessagesToContent(\n messages: BaseMessage[]\n): t.MessageContentComplex[] {\n const processedContent: t.MessageContentComplex[] = [];\n\n const addContentPart = (message: BaseMessage | null): void => {\n const content =\n message?.lc_kwargs.content != null\n ? message.lc_kwargs.content\n : message?.content;\n if (content === undefined) {\n return;\n }\n if (typeof content === 'string') {\n processedContent.push({\n type: 'text',\n text: content,\n });\n } else if (Array.isArray(content)) {\n const filteredContent = content.filter(\n (item) => item != null && item.type !== 'tool_use'\n );\n processedContent.push(...filteredContent);\n }\n };\n\n let currentAIMessageIndex = -1;\n const toolCallMap = new Map<string, t.CustomToolCall>();\n\n for (let i = 0; i < messages.length; i++) {\n const message = messages[i] as BaseMessage | null;\n const messageType = message?._getType();\n\n if (\n messageType === 'ai' &&\n ((message as AIMessage).tool_calls?.length ?? 0) > 0\n ) {\n const tool_calls = (message as AIMessage).tool_calls || [];\n for (const tool_call of tool_calls) {\n if (tool_call.id == null || !tool_call.id) {\n continue;\n }\n\n toolCallMap.set(tool_call.id, tool_call);\n }\n\n addContentPart(message);\n currentAIMessageIndex = processedContent.length - 1;\n continue;\n } else if (\n messageType === 'tool' &&\n (message as ToolMessage).tool_call_id\n ) {\n const id = (message as ToolMessage).tool_call_id;\n const output = (message as ToolMessage).content;\n const tool_call = toolCallMap.get(id);\n if (currentAIMessageIndex === -1) {\n processedContent.push({ type: 'text', text: '' });\n currentAIMessageIndex = processedContent.length - 1;\n }\n const contentPart = processedContent[currentAIMessageIndex];\n processedContent.push({\n type: 'tool_call',\n tool_call: Object.assign({}, tool_call, { output }),\n });\n const tool_call_ids = contentPart.tool_call_ids || [];\n tool_call_ids.push(id);\n contentPart.tool_call_ids = tool_call_ids;\n continue;\n } else if (messageType !== 'ai') {\n continue;\n }\n\n addContentPart(message);\n }\n\n return processedContent;\n}\n\nexport function formatAnthropicArtifactContent(messages: BaseMessage[]): void {\n const lastMessage = messages[messages.length - 1];\n if (!(lastMessage instanceof ToolMessage)) return;\n\n // Find the latest AIMessage with tool_calls that this tool message belongs to\n const latestAIParentIndex = findLastIndex(\n messages,\n (msg) =>\n (msg instanceof AIMessageChunk &&\n (msg.tool_calls?.length ?? 0) > 0 &&\n msg.tool_calls?.some((tc) => tc.id === lastMessage.tool_call_id)) ??\n false\n );\n\n if (latestAIParentIndex === -1) return;\n\n // Build tool call ID set and merge artifact content in a single forward pass.\n const message = messages[latestAIParentIndex] as AIMessageChunk;\n const toolCallIdSet = new Set<string>();\n if (message.tool_calls) {\n for (const tc of message.tool_calls) {\n if (tc.id != null) {\n toolCallIdSet.add(tc.id);\n }\n }\n }\n\n for (let j = latestAIParentIndex + 1; j < messages.length; j++) {\n const msg = messages[j];\n if (\n msg instanceof ToolMessage &&\n toolCallIdSet.has(msg.tool_call_id) &&\n msg.artifact != null &&\n Array.isArray(msg.artifact?.content)\n ) {\n const base = Array.isArray(msg.content)\n ? msg.content\n : [{ type: 'text' as const, text: String(msg.content ?? '') }];\n msg.content = base.concat(msg.artifact.content);\n }\n }\n}\n\nexport function formatArtifactPayload(messages: BaseMessage[]): void {\n const lastMessageY = messages[messages.length - 1];\n if (!(lastMessageY instanceof ToolMessage)) return;\n\n // Find the latest AIMessage with tool_calls that this tool message belongs to\n const latestAIParentIndex = findLastIndex(\n messages,\n (msg) =>\n (msg instanceof AIMessageChunk &&\n (msg.tool_calls?.length ?? 0) > 0 &&\n msg.tool_calls?.some((tc) => tc.id === lastMessageY.tool_call_id)) ??\n false\n );\n\n if (latestAIParentIndex === -1) return;\n\n // Single pass: collect relevant tool messages with artifacts and aggregate\n const aggregatedContent: t.MessageContentComplex[] = [];\n\n for (let i = latestAIParentIndex + 1; i < messages.length; i++) {\n const msg = messages[i];\n if (\n !(msg instanceof ToolMessage) ||\n !Array.isArray(msg.artifact?.content)\n ) {\n continue;\n }\n let currentContent = msg.content;\n if (!Array.isArray(currentContent)) {\n currentContent = [{ type: 'text', text: msg.content }];\n }\n aggregatedContent.push(...(currentContent as t.MessageContentComplex[]));\n msg.content =\n 'Tool response is included in the next message as a Human message';\n aggregatedContent.push(...msg.artifact.content);\n }\n\n if (aggregatedContent.length > 0) {\n messages.push(new HumanMessage({ content: aggregatedContent }));\n }\n}\n\nexport function findLastIndex<T>(\n array: T[],\n predicate: (value: T) => boolean\n): number {\n for (let i = array.length - 1; i >= 0; i--) {\n if (predicate(array[i])) {\n return i;\n }\n }\n return -1;\n}\n"],"names":["HumanMessage","Providers","AIMessage","messages","ToolMessage","AIMessageChunk"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sources":["../../../../src/llm/anthropic/types.ts"],"sourcesContent":["import Anthropic from '@anthropic-ai/sdk';\nimport { BindToolsInput } from '@langchain/core/language_models/chat_models';\n\nexport type AnthropicStreamUsage = Anthropic.Usage;\nexport type AnthropicMessageDeltaEvent = Anthropic.MessageDeltaEvent;\nexport type AnthropicMessageStartEvent = Anthropic.MessageStartEvent;\n\nexport type AnthropicToolResponse = {\n type: 'tool_use';\n id: string;\n name: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n input: Record<string, any>;\n};\n\nexport type AnthropicMessageParam = Anthropic.MessageParam;\nexport type AnthropicMessageResponse =\n | Anthropic.ContentBlock\n | AnthropicToolResponse;\nexport type AnthropicMessageCreateParams =\n Anthropic.MessageCreateParamsNonStreaming;\nexport type AnthropicStreamingMessageCreateParams =\n Anthropic.MessageCreateParamsStreaming;\nexport type AnthropicThinkingConfigParam = Anthropic.ThinkingConfigParam;\nexport type AnthropicMessageStreamEvent = Anthropic.MessageStreamEvent;\nexport type AnthropicRequestOptions = Anthropic.RequestOptions;\nexport type AnthropicToolChoice =\n | {\n type: 'tool';\n name: string;\n }\n | 'any'\n | 'auto'\n | 'none'\n | string;\nexport type ChatAnthropicToolType = Anthropic.Messages.Tool | BindToolsInput;\nexport type AnthropicTextBlockParam = Anthropic.Messages.TextBlockParam;\nexport type AnthropicImageBlockParam = Anthropic.Messages.ImageBlockParam;\nexport type AnthropicToolUseBlockParam = Anthropic.Messages.ToolUseBlockParam;\nexport type AnthropicToolResultBlockParam =\n Anthropic.Messages.ToolResultBlockParam;\nexport type AnthropicDocumentBlockParam = Anthropic.Messages.DocumentBlockParam;\nexport type AnthropicThinkingBlockParam = Anthropic.Messages.ThinkingBlockParam;\nexport type AnthropicRedactedThinkingBlockParam =\n Anthropic.Messages.RedactedThinkingBlockParam;\nexport type AnthropicServerToolUseBlockParam =\n Anthropic.Messages.ServerToolUseBlockParam;\nexport type AnthropicWebSearchToolResultBlockParam =\n Anthropic.Messages.WebSearchToolResultBlockParam;\nexport type AnthropicWebSearchResultBlockParam =\n Anthropic.Messages.WebSearchResultBlockParam;\nexport type AnthropicSearchResultBlockParam =\n Anthropic.Beta.BetaSearchResultBlockParam;\nexport type AnthropicCompactionBlockParam =\n Anthropic.Beta.BetaCompactionBlockParam;\nexport type AnthropicOutputConfig = Anthropic.Messages.OutputConfig;\nexport type ChatAnthropicOutputFormat = Anthropic.Messages.JSONOutputFormat;\n\n// Union of all possible content block types including server tool use\nexport type AnthropicContentBlock =\n | AnthropicTextBlockParam\n | AnthropicImageBlockParam\n | AnthropicToolUseBlockParam\n | AnthropicToolResultBlockParam\n | AnthropicDocumentBlockParam\n | AnthropicThinkingBlockParam\n | AnthropicRedactedThinkingBlockParam\n | AnthropicServerToolUseBlockParam\n | AnthropicWebSearchToolResultBlockParam\n | AnthropicWebSearchResultBlockParam\n | AnthropicCompactionBlockParam;\n\n// Union of all possible content block types including server tool use\nexport type ChatAnthropicContentBlock =\n | AnthropicTextBlockParam\n | AnthropicImageBlockParam\n | AnthropicToolUseBlockParam\n | AnthropicToolResultBlockParam\n | AnthropicDocumentBlockParam\n | AnthropicThinkingBlockParam\n | AnthropicRedactedThinkingBlockParam\n | AnthropicServerToolUseBlockParam\n | AnthropicWebSearchToolResultBlockParam\n | AnthropicWebSearchResultBlockParam\n | AnthropicSearchResultBlockParam\n | AnthropicCompactionBlockParam;\n\nexport function isAnthropicImageBlockParam(\n block: unknown\n): block is AnthropicImageBlockParam {\n if (block == null) {\n return false;\n }\n if (typeof block !== 'object') {\n return false;\n }\n if (!('type' in block) || block.type !== 'image') {\n return false;\n }\n\n if (!('source' in block) || typeof block.source !== 'object') {\n return false;\n }\n\n if (block.source == null) {\n return false;\n }\n\n if (!('type' in block.source)) {\n return false;\n }\n\n if (block.source.type === 'base64') {\n if (!('media_type' in block.source)) {\n return false;\n }\n\n if (typeof block.source.media_type !== 'string') {\n return false;\n }\n\n if (!('data' in block.source)) {\n return false;\n }\n\n if (typeof block.source.data !== 'string') {\n return false;\n }\n\n return true;\n }\n\n if (block.source.type === 'url') {\n if (!('url' in block.source)) {\n return false;\n }\n\n if (typeof block.source.url !== 'string') {\n return false;\n }\n\n return true;\n }\n\n return false;\n}\n"],"names":[],"mappings":"AAuFM,SAAU,0BAA0B,CACxC,KAAc,EAAA;AAEd,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAChD,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,EAAE,QAAQ,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC5D,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;AACxB,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC7B,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;QAClC,IAAI,EAAE,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACnC,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE;AAC/C,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC7B,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AACzC,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,IAAI;IACb;IAEA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;QAC/B,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC5B,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE;AACxC,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,KAAK;AACd;;;;"}
1
+ {"version":3,"file":"types.mjs","sources":["../../../../src/llm/anthropic/types.ts"],"sourcesContent":["import Anthropic from '@anthropic-ai/sdk';\nimport { BindToolsInput } from '@langchain/core/language_models/chat_models';\n\nexport type AnthropicStreamUsage = Anthropic.Usage;\nexport type AnthropicMessageDeltaEvent = Anthropic.MessageDeltaEvent;\nexport type AnthropicMessageStartEvent = Anthropic.MessageStartEvent;\n\nexport type AnthropicToolResponse = {\n type: 'tool_use' | 'server_tool_use';\n id: string;\n name: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n input: Record<string, any>;\n};\n\nexport type AnthropicMessageParam = Anthropic.MessageParam;\nexport type AnthropicMessageResponse =\n | Anthropic.ContentBlock\n | AnthropicToolResponse;\nexport type AnthropicMessageCreateParams =\n Anthropic.MessageCreateParamsNonStreaming;\nexport type AnthropicStreamingMessageCreateParams =\n Anthropic.MessageCreateParamsStreaming;\nexport type AnthropicThinkingConfigParam = Anthropic.ThinkingConfigParam;\nexport type AnthropicMessageStreamEvent = Anthropic.MessageStreamEvent;\nexport type AnthropicRequestOptions = Anthropic.RequestOptions;\nexport type AnthropicToolChoice =\n | {\n type: 'tool';\n name: string;\n }\n | 'any'\n | 'auto'\n | 'none'\n | string;\nexport type ChatAnthropicToolType = Anthropic.Messages.Tool | BindToolsInput;\nexport type AnthropicTextBlockParam = Anthropic.Messages.TextBlockParam;\nexport type AnthropicImageBlockParam = Anthropic.Messages.ImageBlockParam;\nexport type AnthropicToolUseBlockParam = Anthropic.Messages.ToolUseBlockParam;\nexport type AnthropicToolResultBlockParam =\n Anthropic.Messages.ToolResultBlockParam;\nexport type AnthropicDocumentBlockParam = Anthropic.Messages.DocumentBlockParam;\nexport type AnthropicThinkingBlockParam = Anthropic.Messages.ThinkingBlockParam;\nexport type AnthropicRedactedThinkingBlockParam =\n Anthropic.Messages.RedactedThinkingBlockParam;\nexport type AnthropicServerToolUseBlockParam =\n Anthropic.Messages.ServerToolUseBlockParam;\nexport type AnthropicWebSearchToolResultBlockParam =\n Anthropic.Messages.WebSearchToolResultBlockParam;\nexport type AnthropicWebSearchResultBlockParam =\n Anthropic.Messages.WebSearchResultBlockParam;\nexport type AnthropicSearchResultBlockParam =\n Anthropic.Beta.BetaSearchResultBlockParam;\nexport type AnthropicCompactionBlockParam =\n Anthropic.Beta.BetaCompactionBlockParam;\nexport type AnthropicOutputConfig = Anthropic.Messages.OutputConfig;\nexport type ChatAnthropicOutputFormat = Anthropic.Messages.JSONOutputFormat;\n\n// Union of all possible content block types including server tool use\nexport type AnthropicContentBlock =\n | AnthropicTextBlockParam\n | AnthropicImageBlockParam\n | AnthropicToolUseBlockParam\n | AnthropicToolResultBlockParam\n | AnthropicDocumentBlockParam\n | AnthropicThinkingBlockParam\n | AnthropicRedactedThinkingBlockParam\n | AnthropicServerToolUseBlockParam\n | AnthropicWebSearchToolResultBlockParam\n | AnthropicWebSearchResultBlockParam\n | AnthropicCompactionBlockParam;\n\n// Union of all possible content block types including server tool use\nexport type ChatAnthropicContentBlock =\n | AnthropicTextBlockParam\n | AnthropicImageBlockParam\n | AnthropicToolUseBlockParam\n | AnthropicToolResultBlockParam\n | AnthropicDocumentBlockParam\n | AnthropicThinkingBlockParam\n | AnthropicRedactedThinkingBlockParam\n | AnthropicServerToolUseBlockParam\n | AnthropicWebSearchToolResultBlockParam\n | AnthropicWebSearchResultBlockParam\n | AnthropicSearchResultBlockParam\n | AnthropicCompactionBlockParam;\n\nexport function isAnthropicImageBlockParam(\n block: unknown\n): block is AnthropicImageBlockParam {\n if (block == null) {\n return false;\n }\n if (typeof block !== 'object') {\n return false;\n }\n if (!('type' in block) || block.type !== 'image') {\n return false;\n }\n\n if (!('source' in block) || typeof block.source !== 'object') {\n return false;\n }\n\n if (block.source == null) {\n return false;\n }\n\n if (!('type' in block.source)) {\n return false;\n }\n\n if (block.source.type === 'base64') {\n if (!('media_type' in block.source)) {\n return false;\n }\n\n if (typeof block.source.media_type !== 'string') {\n return false;\n }\n\n if (!('data' in block.source)) {\n return false;\n }\n\n if (typeof block.source.data !== 'string') {\n return false;\n }\n\n return true;\n }\n\n if (block.source.type === 'url') {\n if (!('url' in block.source)) {\n return false;\n }\n\n if (typeof block.source.url !== 'string') {\n return false;\n }\n\n return true;\n }\n\n return false;\n}\n"],"names":[],"mappings":"AAuFM,SAAU,0BAA0B,CACxC,KAAc,EAAA;AAEd,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AAChD,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,EAAE,QAAQ,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC5D,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;AACxB,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC7B,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;QAClC,IAAI,EAAE,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACnC,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE;AAC/C,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC7B,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AACzC,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,IAAI;IACb;IAEA,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;QAC/B,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC5B,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE;AACxC,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,KAAK;AACd;;;;"}