@langchain/anthropic 1.5.2 → 1.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/chat_models.cjs +30 -3
  3. package/dist/chat_models.cjs.map +1 -1
  4. package/dist/chat_models.d.cts +4 -4
  5. package/dist/chat_models.d.cts.map +1 -1
  6. package/dist/chat_models.d.ts +3 -3
  7. package/dist/chat_models.d.ts.map +1 -1
  8. package/dist/chat_models.js +30 -2
  9. package/dist/chat_models.js.map +1 -1
  10. package/dist/index.d.cts +1 -1
  11. package/dist/index.d.ts +1 -1
  12. package/dist/output_parsers.cjs +0 -1
  13. package/dist/output_parsers.cjs.map +1 -1
  14. package/dist/output_parsers.js.map +1 -1
  15. package/dist/profiles.cjs.map +1 -1
  16. package/dist/profiles.js.map +1 -1
  17. package/dist/tools/bash.cjs +0 -1
  18. package/dist/tools/bash.cjs.map +1 -1
  19. package/dist/tools/bash.d.cts +0 -1
  20. package/dist/tools/bash.d.cts.map +1 -1
  21. package/dist/tools/bash.d.ts +0 -1
  22. package/dist/tools/bash.d.ts.map +1 -1
  23. package/dist/tools/bash.js.map +1 -1
  24. package/dist/tools/codeExecution.cjs.map +1 -1
  25. package/dist/tools/codeExecution.d.cts +0 -1
  26. package/dist/tools/codeExecution.d.cts.map +1 -1
  27. package/dist/tools/codeExecution.d.ts +0 -1
  28. package/dist/tools/codeExecution.d.ts.map +1 -1
  29. package/dist/tools/codeExecution.js.map +1 -1
  30. package/dist/tools/computer.cjs +0 -1
  31. package/dist/tools/computer.cjs.map +1 -1
  32. package/dist/tools/computer.d.cts +0 -1
  33. package/dist/tools/computer.d.cts.map +1 -1
  34. package/dist/tools/computer.d.ts +0 -1
  35. package/dist/tools/computer.d.ts.map +1 -1
  36. package/dist/tools/computer.js.map +1 -1
  37. package/dist/tools/index.cjs.map +1 -1
  38. package/dist/tools/index.d.cts +1 -2
  39. package/dist/tools/index.d.cts.map +1 -1
  40. package/dist/tools/index.d.ts +1 -2
  41. package/dist/tools/index.d.ts.map +1 -1
  42. package/dist/tools/index.js.map +1 -1
  43. package/dist/tools/mcpToolset.cjs.map +1 -1
  44. package/dist/tools/mcpToolset.d.cts +1 -2
  45. package/dist/tools/mcpToolset.d.cts.map +1 -1
  46. package/dist/tools/mcpToolset.d.ts +1 -2
  47. package/dist/tools/mcpToolset.d.ts.map +1 -1
  48. package/dist/tools/mcpToolset.js.map +1 -1
  49. package/dist/tools/memory.cjs +0 -1
  50. package/dist/tools/memory.cjs.map +1 -1
  51. package/dist/tools/memory.d.cts +0 -1
  52. package/dist/tools/memory.d.cts.map +1 -1
  53. package/dist/tools/memory.d.ts +0 -1
  54. package/dist/tools/memory.d.ts.map +1 -1
  55. package/dist/tools/memory.js.map +1 -1
  56. package/dist/tools/textEditor.cjs +0 -1
  57. package/dist/tools/textEditor.cjs.map +1 -1
  58. package/dist/tools/textEditor.d.cts +0 -1
  59. package/dist/tools/textEditor.d.cts.map +1 -1
  60. package/dist/tools/textEditor.d.ts +0 -1
  61. package/dist/tools/textEditor.d.ts.map +1 -1
  62. package/dist/tools/textEditor.js.map +1 -1
  63. package/dist/tools/toolSearch.cjs.map +1 -1
  64. package/dist/tools/toolSearch.d.cts +0 -1
  65. package/dist/tools/toolSearch.d.cts.map +1 -1
  66. package/dist/tools/toolSearch.d.ts +0 -1
  67. package/dist/tools/toolSearch.d.ts.map +1 -1
  68. package/dist/tools/toolSearch.js.map +1 -1
  69. package/dist/tools/types.cjs +28 -1
  70. package/dist/tools/types.cjs.map +1 -1
  71. package/dist/tools/types.d.cts +0 -1
  72. package/dist/tools/types.d.cts.map +1 -1
  73. package/dist/tools/types.d.ts +0 -1
  74. package/dist/tools/types.d.ts.map +1 -1
  75. package/dist/tools/types.js +1 -1
  76. package/dist/tools/types.js.map +1 -1
  77. package/dist/tools/webFetch.cjs.map +1 -1
  78. package/dist/tools/webFetch.d.cts +0 -1
  79. package/dist/tools/webFetch.d.cts.map +1 -1
  80. package/dist/tools/webFetch.d.ts +0 -1
  81. package/dist/tools/webFetch.d.ts.map +1 -1
  82. package/dist/tools/webFetch.js.map +1 -1
  83. package/dist/tools/webSearch.cjs.map +1 -1
  84. package/dist/tools/webSearch.d.cts +0 -1
  85. package/dist/tools/webSearch.d.cts.map +1 -1
  86. package/dist/tools/webSearch.d.ts +0 -1
  87. package/dist/tools/webSearch.d.ts.map +1 -1
  88. package/dist/tools/webSearch.js.map +1 -1
  89. package/dist/types.d.cts +1 -2
  90. package/dist/types.d.cts.map +1 -1
  91. package/dist/types.d.ts +1 -2
  92. package/dist/types.d.ts.map +1 -1
  93. package/dist/utils/content.cjs +0 -1
  94. package/dist/utils/content.cjs.map +1 -1
  95. package/dist/utils/content.js.map +1 -1
  96. package/dist/utils/errors.cjs +1 -1
  97. package/dist/utils/errors.cjs.map +1 -1
  98. package/dist/utils/errors.js +1 -1
  99. package/dist/utils/errors.js.map +1 -1
  100. package/dist/utils/index.cjs.map +1 -1
  101. package/dist/utils/index.js.map +1 -1
  102. package/dist/utils/message_inputs.cjs +1 -1
  103. package/dist/utils/message_inputs.cjs.map +1 -1
  104. package/dist/utils/message_inputs.js +1 -1
  105. package/dist/utils/message_inputs.js.map +1 -1
  106. package/dist/utils/message_outputs.cjs +5 -2
  107. package/dist/utils/message_outputs.cjs.map +1 -1
  108. package/dist/utils/message_outputs.js +5 -1
  109. package/dist/utils/message_outputs.js.map +1 -1
  110. package/dist/utils/params.cjs +2 -0
  111. package/dist/utils/params.cjs.map +1 -1
  112. package/dist/utils/params.js +1 -1
  113. package/dist/utils/params.js.map +1 -1
  114. package/dist/utils/prompts.cjs.map +1 -1
  115. package/dist/utils/prompts.d.cts +0 -1
  116. package/dist/utils/prompts.d.cts.map +1 -1
  117. package/dist/utils/prompts.d.ts +0 -1
  118. package/dist/utils/prompts.d.ts.map +1 -1
  119. package/dist/utils/prompts.js.map +1 -1
  120. package/dist/utils/standard.cjs +2 -2
  121. package/dist/utils/standard.cjs.map +1 -1
  122. package/dist/utils/standard.js +2 -2
  123. package/dist/utils/standard.js.map +1 -1
  124. package/dist/utils/stream_events.cjs.map +1 -1
  125. package/dist/utils/stream_events.js.map +1 -1
  126. package/dist/utils/tools.cjs.map +1 -1
  127. package/dist/utils/tools.js.map +1 -1
  128. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"webSearch.d.cts","names":[],"sources":["../../src/tools/webSearch.ts"],"mappings":";;;;;;AAMA;UAAiB,wBAAA;;;;EAIf,OAAA;EAUA;;;;EALA,cAAA;EAcA;;;;EATA,cAAA;EAcA;;;EAVA,YAAA,GAAe,WAAA,CAAU,IAAA,CAAK,yBAAA;EAuDhB;;;;EAlDd,YAAA,GAAe,WAAA,CAAU,IAAA,CAAK,yBAAA,CAA0B,YAAA;EAmDxD;;;;EA9CA,YAAA;;;;EAIA,MAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyCc,kBAAA,CACd,OAAA,GAAU,wBAAA,GACT,UAAA"}
1
+ {"version":3,"file":"webSearch.d.cts","names":[],"sources":["../../src/tools/webSearch.ts"],"mappings":";;;;;;UAMiB;;;;EAIf;;;;;EAKA;;;;;EAKA;;;;EAIA,eAAe,YAAU,KAAK;;;;;EAK9B,eAAe,YAAU,KAAK,0BAA0B;;;;;EAKxD;;;;EAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyCc,mBACd,UAAU,2BACT"}
@@ -1,6 +1,5 @@
1
1
  import Anthropic$1 from "@anthropic-ai/sdk";
2
2
  import { ServerTool } from "@langchain/core/tools";
3
-
4
3
  //#region src/tools/webSearch.d.ts
5
4
  /**
6
5
  * Options for the web search tool.
@@ -1 +1 @@
1
- {"version":3,"file":"webSearch.d.ts","names":[],"sources":["../../src/tools/webSearch.ts"],"mappings":";;;;;;AAMA;UAAiB,wBAAA;;;;EAIf,OAAA;EAUA;;;;EALA,cAAA;EAcA;;;;EATA,cAAA;EAcA;;;EAVA,YAAA,GAAe,WAAA,CAAU,IAAA,CAAK,yBAAA;EAuDhB;;;;EAlDd,YAAA,GAAe,WAAA,CAAU,IAAA,CAAK,yBAAA,CAA0B,YAAA;EAmDxD;;;;EA9CA,YAAA;;;;EAIA,MAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyCc,kBAAA,CACd,OAAA,GAAU,wBAAA,GACT,UAAA"}
1
+ {"version":3,"file":"webSearch.d.ts","names":[],"sources":["../../src/tools/webSearch.ts"],"mappings":";;;;;;UAMiB;;;;EAIf;;;;;EAKA;;;;;EAKA;;;;EAIA,eAAe,YAAU,KAAK;;;;;EAK9B,eAAe,YAAU,KAAK,0BAA0B;;;;;EAKxD;;;;EAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyCc,mBACd,UAAU,2BACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"webSearch.js","names":[],"sources":["../../src/tools/webSearch.ts"],"sourcesContent":["import Anthropic from \"@anthropic-ai/sdk\";\nimport { type ServerTool } from \"@langchain/core/tools\";\n\n/**\n * Options for the web search tool.\n */\nexport interface WebSearch20250305Options {\n /**\n * Maximum number of times the tool can be used in the API request.\n */\n maxUses?: number;\n /**\n * If provided, only these domains will be included in results. Cannot be used\n * alongside `blocked_domains`.\n */\n allowedDomains?: string[];\n /**\n * If provided, these domains will never appear in results. Cannot be used\n * alongside `allowed_domains`.\n */\n blockedDomains?: string[];\n /**\n * Create a cache control breakpoint at this content block.\n */\n cacheControl?: Anthropic.Beta.BetaCacheControlEphemeral;\n /**\n * Parameters for the user's location. Used to provide more relevant search\n * results.\n */\n userLocation?: Anthropic.Beta.BetaWebSearchTool20250305.UserLocation;\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n deferLoading?: boolean;\n /**\n * If true, tool will only return results from the allowed domains.\n */\n strict?: boolean;\n}\n\n/**\n * Creates a web search tool that gives Claude direct access to real-time web content,\n * allowing it to answer questions with up-to-date information beyond its knowledge cutoff.\n * Claude automatically cites sources from search results as part of its answer.\n *\n * @see {@link https://docs.anthropic.com/en/docs/build-with-claude/tool-use/web-search-tool | Anthropic Web Search Documentation}\n * @param options - Configuration options for the web search tool\n * @returns A web search tool definition to be passed to the Anthropic API\n *\n * @example\n * ```typescript\n * import { ChatAnthropic, tools } from \"@langchain/anthropic\";\n *\n * const model = new ChatAnthropic({\n * model: \"claude-sonnet-4-5-20250929\",\n * });\n *\n * // Basic usage\n * const response = await model.invoke(\"What is the weather in NYC?\", {\n * tools: [tools.webSearch_20250305()],\n * });\n *\n * // With options\n * const responseWithOptions = await model.invoke(\"Latest news about AI?\", {\n * tools: [tools.webSearch_20250305({\n * maxUses: 5,\n * allowedDomains: [\"reuters.com\", \"bbc.com\"],\n * userLocation: {\n * type: \"approximate\",\n * city: \"San Francisco\",\n * region: \"California\",\n * country: \"US\",\n * timezone: \"America/Los_Angeles\",\n * },\n * })],\n * });\n * ```\n */\nexport function webSearch_20250305(\n options?: WebSearch20250305Options\n): ServerTool {\n return {\n type: \"web_search_20250305\",\n name: \"web_search\",\n max_uses: options?.maxUses,\n allowed_domains: options?.allowedDomains,\n blocked_domains: options?.blockedDomains,\n cache_control: options?.cacheControl,\n defer_loading: options?.deferLoading,\n strict: options?.strict,\n user_location: options?.userLocation,\n } satisfies Anthropic.Beta.BetaWebSearchTool20250305;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+EA,SAAgB,mBACd,SACY;AACZ,QAAO;EACL,MAAM;EACN,MAAM;EACN,UAAU,SAAS;EACnB,iBAAiB,SAAS;EAC1B,iBAAiB,SAAS;EAC1B,eAAe,SAAS;EACxB,eAAe,SAAS;EACxB,QAAQ,SAAS;EACjB,eAAe,SAAS;EACzB"}
1
+ {"version":3,"file":"webSearch.js","names":[],"sources":["../../src/tools/webSearch.ts"],"sourcesContent":["import Anthropic from \"@anthropic-ai/sdk\";\nimport { type ServerTool } from \"@langchain/core/tools\";\n\n/**\n * Options for the web search tool.\n */\nexport interface WebSearch20250305Options {\n /**\n * Maximum number of times the tool can be used in the API request.\n */\n maxUses?: number;\n /**\n * If provided, only these domains will be included in results. Cannot be used\n * alongside `blocked_domains`.\n */\n allowedDomains?: string[];\n /**\n * If provided, these domains will never appear in results. Cannot be used\n * alongside `allowed_domains`.\n */\n blockedDomains?: string[];\n /**\n * Create a cache control breakpoint at this content block.\n */\n cacheControl?: Anthropic.Beta.BetaCacheControlEphemeral;\n /**\n * Parameters for the user's location. Used to provide more relevant search\n * results.\n */\n userLocation?: Anthropic.Beta.BetaWebSearchTool20250305.UserLocation;\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n deferLoading?: boolean;\n /**\n * If true, tool will only return results from the allowed domains.\n */\n strict?: boolean;\n}\n\n/**\n * Creates a web search tool that gives Claude direct access to real-time web content,\n * allowing it to answer questions with up-to-date information beyond its knowledge cutoff.\n * Claude automatically cites sources from search results as part of its answer.\n *\n * @see {@link https://docs.anthropic.com/en/docs/build-with-claude/tool-use/web-search-tool | Anthropic Web Search Documentation}\n * @param options - Configuration options for the web search tool\n * @returns A web search tool definition to be passed to the Anthropic API\n *\n * @example\n * ```typescript\n * import { ChatAnthropic, tools } from \"@langchain/anthropic\";\n *\n * const model = new ChatAnthropic({\n * model: \"claude-sonnet-4-5-20250929\",\n * });\n *\n * // Basic usage\n * const response = await model.invoke(\"What is the weather in NYC?\", {\n * tools: [tools.webSearch_20250305()],\n * });\n *\n * // With options\n * const responseWithOptions = await model.invoke(\"Latest news about AI?\", {\n * tools: [tools.webSearch_20250305({\n * maxUses: 5,\n * allowedDomains: [\"reuters.com\", \"bbc.com\"],\n * userLocation: {\n * type: \"approximate\",\n * city: \"San Francisco\",\n * region: \"California\",\n * country: \"US\",\n * timezone: \"America/Los_Angeles\",\n * },\n * })],\n * });\n * ```\n */\nexport function webSearch_20250305(\n options?: WebSearch20250305Options\n): ServerTool {\n return {\n type: \"web_search_20250305\",\n name: \"web_search\",\n max_uses: options?.maxUses,\n allowed_domains: options?.allowedDomains,\n blocked_domains: options?.blockedDomains,\n cache_control: options?.cacheControl,\n defer_loading: options?.deferLoading,\n strict: options?.strict,\n user_location: options?.userLocation,\n } satisfies Anthropic.Beta.BetaWebSearchTool20250305;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+EA,SAAgB,mBACd,SACY;CACZ,OAAO;EACL,MAAM;EACN,MAAM;EACN,UAAU,SAAS;EACnB,iBAAiB,SAAS;EAC1B,iBAAiB,SAAS;EAC1B,eAAe,SAAS;EACxB,eAAe,SAAS;EACxB,QAAQ,SAAS;EACjB,eAAe,SAAS;CAC1B;AACF"}
package/dist/types.d.cts CHANGED
@@ -1,6 +1,5 @@
1
1
  import Anthropic$1 from "@anthropic-ai/sdk";
2
2
  import { BindToolsInput } from "@langchain/core/language_models/chat_models";
3
-
4
3
  //#region src/types.d.ts
5
4
  type AnthropicMessageCreateParams = Anthropic$1.MessageCreateParamsNonStreaming;
6
5
  type AnthropicStreamingMessageCreateParams = Anthropic$1.MessageCreateParamsStreaming;
@@ -37,5 +36,5 @@ type ChatAnthropicContentBlock = AnthropicTextBlockParam | AnthropicImageBlockPa
37
36
  type Kwargs = Record<string, any>;
38
37
  type AnthropicInvocationParams = Omit<AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams, "messages"> & Kwargs;
39
38
  //#endregion
40
- export { AnthropicContextManagementConfigParam, AnthropicInvocationParams, AnthropicMCPServerURLDefinition, AnthropicMessageCreateParams, AnthropicMessageStreamEvent, AnthropicOutputConfig, AnthropicRequestOptions, AnthropicStreamingMessageCreateParams, AnthropicThinkingConfigParam, AnthropicToolChoice, ChatAnthropicContentBlock, ChatAnthropicOutputFormat, ChatAnthropicToolType, Kwargs };
39
+ export { AnthropicCompactionBlockParam, AnthropicContainerUploadBlockParam, AnthropicContextManagementConfigParam, AnthropicDocumentBlockParam, AnthropicImageBlockParam, AnthropicInvocationParams, AnthropicMCPServerURLDefinition, AnthropicMessageCreateParams, AnthropicMessageStreamEvent, AnthropicOutputConfig, AnthropicRedactedThinkingBlockParam, AnthropicRequestOptions, AnthropicSearchResultBlockParam, AnthropicServerToolUseBlockParam, AnthropicStreamingMessageCreateParams, AnthropicTextBlockParam, AnthropicThinkingBlockParam, AnthropicThinkingConfigParam, AnthropicToolChoice, AnthropicToolResultBlockParam, AnthropicToolUseBlockParam, AnthropicWebSearchResultBlockParam, AnthropicWebSearchToolResultBlockParam, ChatAnthropicContentBlock, ChatAnthropicOutputFormat, ChatAnthropicToolType, Kwargs };
41
40
  //# sourceMappingURL=types.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.cts","names":[],"sources":["../src/types.ts"],"mappings":";;;;KAcY,4BAAA,GACV,WAAA,CAAU,+BAAA;AAAA,KACA,qCAAA,GACV,WAAA,CAAU,4BAAA;AAAA,KACA,4BAAA,GAA+B,WAAA,CAAU,mBAAA;AAAA,KACzC,qCAAA,GACV,WAAA,CAAU,IAAA,CAAK,2BAAA;AAAA,KACL,2BAAA,GAA8B,WAAA,CAAU,kBAAA;AAAA,KACxC,uBAAA,GAA0B,WAAA,CAAU,cAAA;AAAA,KACpC,mBAAA;EAEN,IAAA;EACA,IAAA;AAAA;AAAA,KAMM,qBAAA,GAAwB,WAAA,CAAU,QAAA,CAAS,IAAA,GAAO,cAAA;AAAA,KAClD,yBAAA,GAA4B,WAAA,CAAU,QAAA,CAAS,gBAAA;AAAA,KAC/C,qBAAA,GAAwB,WAAA,CAAU,QAAA,CAAS,YAAA;AAAA,KAE3C,uBAAA,GAA0B,WAAA,CAAU,QAAA,CAAS,cAAA;AAAA,KAC7C,wBAAA,GAA2B,WAAA,CAAU,QAAA,CAAS,eAAA;AAAA,KAC9C,0BAAA,GAA6B,WAAA,CAAU,QAAA,CAAS,iBAAA;AAAA,KAChD,6BAAA,GACV,WAAA,CAAU,QAAA,CAAS,oBAAA;AAAA,KACT,2BAAA,GAA8B,WAAA,CAAU,QAAA,CAAS,kBAAA;AAAA,KACjD,2BAAA,GAA8B,WAAA,CAAU,QAAA,CAAS,kBAAA;AAAA,KACjD,mCAAA,GACV,WAAA,CAAU,QAAA,CAAS,0BAAA;AAAA,KACT,gCAAA,GACV,WAAA,CAAU,QAAA,CAAS,uBAAA;AAAA,KACT,sCAAA,GACV,WAAA,CAAU,QAAA,CAAS,6BAAA;AAAA,KACT,kCAAA,GACV,WAAA,CAAU,QAAA,CAAS,yBAAA;AAAA,KACT,+BAAA,GAAkC,WAAA,CAAU,sBAAA;AAAA,KAC5C,kCAAA,GACV,WAAA,CAAU,IAAA,CAAK,6BAAA;AAAA,KACL,6BAAA,GACV,WAAA,CAAU,IAAA,CAAK,wBAAA;AAAA,KACL,+BAAA,GACV,WAAA,CAAU,IAAA,CAAK,QAAA,CAAS,iCAAA;AAAA,KAGd,yBAAA,GACR,uBAAA,GACA,wBAAA,GACA,0BAAA,GACA,6BAAA,GACA,2BAAA,GACA,2BAAA,GACA,mCAAA,GACA,gCAAA,GACA,sCAAA,GACA,kCAAA,GACA,+BAAA,GACA,kCAAA,GACA,6BAAA;;;;AAzCJ;KAkHY,MAAA,GAAS,MAAA;AAAA,KAET,yBAAA,GAA4B,IAAA,CACtC,4BAAA,GAA+B,qCAAA,gBAG/B,MAAA"}
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../src/types.ts"],"mappings":";;;KAcY,+BACV,YAAU;KACA,wCACV,YAAU;KACA,+BAA+B,YAAU;KACzC,wCACV,YAAU,KAAK;KACL,8BAA8B,YAAU;KACxC,0BAA0B,YAAU;KACpC;EAEN;EACA;;KAMM,wBAAwB,YAAU,SAAS,OAAO;KAClD,4BAA4B,YAAU,SAAS;KAC/C,wBAAwB,YAAU,SAAS;KAE3C,0BAA0B,YAAU,SAAS;KAC7C,2BAA2B,YAAU,SAAS;KAC9C,6BAA6B,YAAU,SAAS;KAChD,gCACV,YAAU,SAAS;KACT,8BAA8B,YAAU,SAAS;KACjD,8BAA8B,YAAU,SAAS;KACjD,sCACV,YAAU,SAAS;KACT,mCACV,YAAU,SAAS;KACT,yCACV,YAAU,SAAS;KACT,qCACV,YAAU,SAAS;KACT,kCAAkC,YAAU;KAC5C,qCACV,YAAU,KAAK;KACL,gCACV,YAAU,KAAK;KACL,kCACV,YAAU,KAAK,SAAS;KAGd,4BACR,0BACA,2BACA,6BACA,gCACA,8BACA,8BACA,sCACA,mCACA,yCACA,qCACA,kCACA,qCACA;;;;;KAyEQ,SAAS;KAET,4BAA4B,KACtC,+BAA+B,qDAG/B"}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import Anthropic$1 from "@anthropic-ai/sdk";
2
2
  import { BindToolsInput } from "@langchain/core/language_models/chat_models";
3
-
4
3
  //#region src/types.d.ts
5
4
  type AnthropicMessageCreateParams = Anthropic$1.MessageCreateParamsNonStreaming;
6
5
  type AnthropicStreamingMessageCreateParams = Anthropic$1.MessageCreateParamsStreaming;
@@ -37,5 +36,5 @@ type ChatAnthropicContentBlock = AnthropicTextBlockParam | AnthropicImageBlockPa
37
36
  type Kwargs = Record<string, any>;
38
37
  type AnthropicInvocationParams = Omit<AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams, "messages"> & Kwargs;
39
38
  //#endregion
40
- export { AnthropicContextManagementConfigParam, AnthropicInvocationParams, AnthropicMCPServerURLDefinition, AnthropicMessageCreateParams, AnthropicMessageStreamEvent, AnthropicOutputConfig, AnthropicRequestOptions, AnthropicStreamingMessageCreateParams, AnthropicThinkingConfigParam, AnthropicToolChoice, ChatAnthropicContentBlock, ChatAnthropicOutputFormat, ChatAnthropicToolType, Kwargs };
39
+ export { AnthropicCompactionBlockParam, AnthropicContainerUploadBlockParam, AnthropicContextManagementConfigParam, AnthropicDocumentBlockParam, AnthropicImageBlockParam, AnthropicInvocationParams, AnthropicMCPServerURLDefinition, AnthropicMessageCreateParams, AnthropicMessageStreamEvent, AnthropicOutputConfig, AnthropicRedactedThinkingBlockParam, AnthropicRequestOptions, AnthropicSearchResultBlockParam, AnthropicServerToolUseBlockParam, AnthropicStreamingMessageCreateParams, AnthropicTextBlockParam, AnthropicThinkingBlockParam, AnthropicThinkingConfigParam, AnthropicToolChoice, AnthropicToolResultBlockParam, AnthropicToolUseBlockParam, AnthropicWebSearchResultBlockParam, AnthropicWebSearchToolResultBlockParam, ChatAnthropicContentBlock, ChatAnthropicOutputFormat, ChatAnthropicToolType, Kwargs };
41
40
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"mappings":";;;;KAcY,4BAAA,GACV,WAAA,CAAU,+BAAA;AAAA,KACA,qCAAA,GACV,WAAA,CAAU,4BAAA;AAAA,KACA,4BAAA,GAA+B,WAAA,CAAU,mBAAA;AAAA,KACzC,qCAAA,GACV,WAAA,CAAU,IAAA,CAAK,2BAAA;AAAA,KACL,2BAAA,GAA8B,WAAA,CAAU,kBAAA;AAAA,KACxC,uBAAA,GAA0B,WAAA,CAAU,cAAA;AAAA,KACpC,mBAAA;EAEN,IAAA;EACA,IAAA;AAAA;AAAA,KAMM,qBAAA,GAAwB,WAAA,CAAU,QAAA,CAAS,IAAA,GAAO,cAAA;AAAA,KAClD,yBAAA,GAA4B,WAAA,CAAU,QAAA,CAAS,gBAAA;AAAA,KAC/C,qBAAA,GAAwB,WAAA,CAAU,QAAA,CAAS,YAAA;AAAA,KAE3C,uBAAA,GAA0B,WAAA,CAAU,QAAA,CAAS,cAAA;AAAA,KAC7C,wBAAA,GAA2B,WAAA,CAAU,QAAA,CAAS,eAAA;AAAA,KAC9C,0BAAA,GAA6B,WAAA,CAAU,QAAA,CAAS,iBAAA;AAAA,KAChD,6BAAA,GACV,WAAA,CAAU,QAAA,CAAS,oBAAA;AAAA,KACT,2BAAA,GAA8B,WAAA,CAAU,QAAA,CAAS,kBAAA;AAAA,KACjD,2BAAA,GAA8B,WAAA,CAAU,QAAA,CAAS,kBAAA;AAAA,KACjD,mCAAA,GACV,WAAA,CAAU,QAAA,CAAS,0BAAA;AAAA,KACT,gCAAA,GACV,WAAA,CAAU,QAAA,CAAS,uBAAA;AAAA,KACT,sCAAA,GACV,WAAA,CAAU,QAAA,CAAS,6BAAA;AAAA,KACT,kCAAA,GACV,WAAA,CAAU,QAAA,CAAS,yBAAA;AAAA,KACT,+BAAA,GAAkC,WAAA,CAAU,sBAAA;AAAA,KAC5C,kCAAA,GACV,WAAA,CAAU,IAAA,CAAK,6BAAA;AAAA,KACL,6BAAA,GACV,WAAA,CAAU,IAAA,CAAK,wBAAA;AAAA,KACL,+BAAA,GACV,WAAA,CAAU,IAAA,CAAK,QAAA,CAAS,iCAAA;AAAA,KAGd,yBAAA,GACR,uBAAA,GACA,wBAAA,GACA,0BAAA,GACA,6BAAA,GACA,2BAAA,GACA,2BAAA,GACA,mCAAA,GACA,gCAAA,GACA,sCAAA,GACA,kCAAA,GACA,+BAAA,GACA,kCAAA,GACA,6BAAA;;;;AAzCJ;KAkHY,MAAA,GAAS,MAAA;AAAA,KAET,yBAAA,GAA4B,IAAA,CACtC,4BAAA,GAA+B,qCAAA,gBAG/B,MAAA"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"mappings":";;;KAcY,+BACV,YAAU;KACA,wCACV,YAAU;KACA,+BAA+B,YAAU;KACzC,wCACV,YAAU,KAAK;KACL,8BAA8B,YAAU;KACxC,0BAA0B,YAAU;KACpC;EAEN;EACA;;KAMM,wBAAwB,YAAU,SAAS,OAAO;KAClD,4BAA4B,YAAU,SAAS;KAC/C,wBAAwB,YAAU,SAAS;KAE3C,0BAA0B,YAAU,SAAS;KAC7C,2BAA2B,YAAU,SAAS;KAC9C,6BAA6B,YAAU,SAAS;KAChD,gCACV,YAAU,SAAS;KACT,8BAA8B,YAAU,SAAS;KACjD,8BAA8B,YAAU,SAAS;KACjD,sCACV,YAAU,SAAS;KACT,mCACV,YAAU,SAAS;KACT,yCACV,YAAU,SAAS;KACT,qCACV,YAAU,SAAS;KACT,kCAAkC,YAAU;KAC5C,qCACV,YAAU,KAAK;KACL,gCACV,YAAU,KAAK;KACL,kCACV,YAAU,KAAK,SAAS;KAGd,4BACR,0BACA,2BACA,6BACA,gCACA,8BACA,8BACA,sCACA,mCACA,yCACA,qCACA,kCACA,qCACA;;;;;KAyEQ,SAAS;KAET,4BAA4B,KACtC,+BAA+B,qDAG/B"}
@@ -1,4 +1,3 @@
1
- require("../_virtual/_rolldown/runtime.cjs");
2
1
  let _langchain_core_messages = require("@langchain/core/messages");
3
2
  //#region src/utils/content.ts
4
3
  function _isAnthropicThinkingBlock(block) {
@@ -1 +1 @@
1
- {"version":3,"file":"content.cjs","names":[],"sources":["../../src/utils/content.ts"],"sourcesContent":["import type Anthropic from \"@anthropic-ai/sdk\";\nimport {\n parseBase64DataUrl,\n type StandardContentBlockConverter,\n} from \"@langchain/core/messages\";\n\nexport function _isAnthropicThinkingBlock(\n block: unknown\n): block is Anthropic.Messages.ThinkingBlockParam {\n return (\n typeof block === \"object\" &&\n block !== null &&\n \"type\" in block &&\n block.type === \"thinking\"\n );\n}\n\nexport function _isAnthropicRedactedThinkingBlock(\n block: unknown\n): block is Anthropic.Messages.RedactedThinkingBlockParam {\n return (\n typeof block === \"object\" &&\n block !== null &&\n \"type\" in block &&\n block.type === \"redacted_thinking\"\n );\n}\n\nexport function _isAnthropicCompactionBlock(\n block: unknown\n): block is Anthropic.Beta.BetaCompactionBlockParam {\n return (\n typeof block === \"object\" &&\n block !== null &&\n \"type\" in block &&\n block.type === \"compaction\"\n );\n}\n\nexport function _isAnthropicSearchResultBlock(\n block: unknown\n): block is Anthropic.Beta.BetaSearchResultBlockParam {\n return (\n typeof block === \"object\" &&\n block !== null &&\n \"type\" in block &&\n block.type === \"search_result\"\n );\n}\n\nexport function _isAnthropicImageBlockParam(\n block: unknown\n): block is Anthropic.Messages.ImageBlockParam {\n if (typeof block !== \"object\" || block == null) {\n return false;\n }\n if (!(\"type\" in block) || block.type !== \"image\") {\n return false;\n }\n\n if (\n !(\"source\" in block) ||\n typeof block.source !== \"object\" ||\n block.source == null\n ) {\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\nexport const standardContentBlockConverter: StandardContentBlockConverter<{\n text: Anthropic.Messages.TextBlockParam;\n image: Anthropic.Messages.ImageBlockParam;\n file: Anthropic.Messages.DocumentBlockParam;\n}> = {\n providerName: \"anthropic\",\n\n fromStandardTextBlock(block): Anthropic.Messages.TextBlockParam {\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 Anthropic.Messages.TextBlockParam;\n },\n\n fromStandardImageBlock(block): Anthropic.Messages.ImageBlockParam {\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 Anthropic.Messages.ImageBlockParam;\n } else {\n return {\n type: \"image\",\n source: {\n type: \"url\",\n url: block.url,\n },\n ...(\"cache_control\" in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n } as Anthropic.Messages.ImageBlockParam;\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 Anthropic.Messages.ImageBlockParam;\n } else {\n throw new Error(`Unsupported image source type: ${block.source_type}`);\n }\n }\n },\n\n fromStandardFileBlock(block): Anthropic.Messages.DocumentBlockParam {\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 },\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 Anthropic.Messages.DocumentBlockParam;\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 Anthropic.Messages.DocumentBlockParam;\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 Anthropic.Messages.DocumentBlockParam;\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 Anthropic.Messages.DocumentBlockParam;\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"],"mappings":"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"}
1
+ {"version":3,"file":"content.cjs","names":[],"sources":["../../src/utils/content.ts"],"sourcesContent":["import type Anthropic from \"@anthropic-ai/sdk\";\nimport {\n parseBase64DataUrl,\n type StandardContentBlockConverter,\n} from \"@langchain/core/messages\";\n\nexport function _isAnthropicThinkingBlock(\n block: unknown\n): block is Anthropic.Messages.ThinkingBlockParam {\n return (\n typeof block === \"object\" &&\n block !== null &&\n \"type\" in block &&\n block.type === \"thinking\"\n );\n}\n\nexport function _isAnthropicRedactedThinkingBlock(\n block: unknown\n): block is Anthropic.Messages.RedactedThinkingBlockParam {\n return (\n typeof block === \"object\" &&\n block !== null &&\n \"type\" in block &&\n block.type === \"redacted_thinking\"\n );\n}\n\nexport function _isAnthropicCompactionBlock(\n block: unknown\n): block is Anthropic.Beta.BetaCompactionBlockParam {\n return (\n typeof block === \"object\" &&\n block !== null &&\n \"type\" in block &&\n block.type === \"compaction\"\n );\n}\n\nexport function _isAnthropicSearchResultBlock(\n block: unknown\n): block is Anthropic.Beta.BetaSearchResultBlockParam {\n return (\n typeof block === \"object\" &&\n block !== null &&\n \"type\" in block &&\n block.type === \"search_result\"\n );\n}\n\nexport function _isAnthropicImageBlockParam(\n block: unknown\n): block is Anthropic.Messages.ImageBlockParam {\n if (typeof block !== \"object\" || block == null) {\n return false;\n }\n if (!(\"type\" in block) || block.type !== \"image\") {\n return false;\n }\n\n if (\n !(\"source\" in block) ||\n typeof block.source !== \"object\" ||\n block.source == null\n ) {\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\nexport const standardContentBlockConverter: StandardContentBlockConverter<{\n text: Anthropic.Messages.TextBlockParam;\n image: Anthropic.Messages.ImageBlockParam;\n file: Anthropic.Messages.DocumentBlockParam;\n}> = {\n providerName: \"anthropic\",\n\n fromStandardTextBlock(block): Anthropic.Messages.TextBlockParam {\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 Anthropic.Messages.TextBlockParam;\n },\n\n fromStandardImageBlock(block): Anthropic.Messages.ImageBlockParam {\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 Anthropic.Messages.ImageBlockParam;\n } else {\n return {\n type: \"image\",\n source: {\n type: \"url\",\n url: block.url,\n },\n ...(\"cache_control\" in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n } as Anthropic.Messages.ImageBlockParam;\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 Anthropic.Messages.ImageBlockParam;\n } else {\n throw new Error(`Unsupported image source type: ${block.source_type}`);\n }\n }\n },\n\n fromStandardFileBlock(block): Anthropic.Messages.DocumentBlockParam {\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 },\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 Anthropic.Messages.DocumentBlockParam;\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 Anthropic.Messages.DocumentBlockParam;\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 Anthropic.Messages.DocumentBlockParam;\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 Anthropic.Messages.DocumentBlockParam;\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"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","names":[],"sources":["../../src/utils/content.ts"],"sourcesContent":["import type Anthropic from \"@anthropic-ai/sdk\";\nimport {\n parseBase64DataUrl,\n type StandardContentBlockConverter,\n} from \"@langchain/core/messages\";\n\nexport function _isAnthropicThinkingBlock(\n block: unknown\n): block is Anthropic.Messages.ThinkingBlockParam {\n return (\n typeof block === \"object\" &&\n block !== null &&\n \"type\" in block &&\n block.type === \"thinking\"\n );\n}\n\nexport function _isAnthropicRedactedThinkingBlock(\n block: unknown\n): block is Anthropic.Messages.RedactedThinkingBlockParam {\n return (\n typeof block === \"object\" &&\n block !== null &&\n \"type\" in block &&\n block.type === \"redacted_thinking\"\n );\n}\n\nexport function _isAnthropicCompactionBlock(\n block: unknown\n): block is Anthropic.Beta.BetaCompactionBlockParam {\n return (\n typeof block === \"object\" &&\n block !== null &&\n \"type\" in block &&\n block.type === \"compaction\"\n );\n}\n\nexport function _isAnthropicSearchResultBlock(\n block: unknown\n): block is Anthropic.Beta.BetaSearchResultBlockParam {\n return (\n typeof block === \"object\" &&\n block !== null &&\n \"type\" in block &&\n block.type === \"search_result\"\n );\n}\n\nexport function _isAnthropicImageBlockParam(\n block: unknown\n): block is Anthropic.Messages.ImageBlockParam {\n if (typeof block !== \"object\" || block == null) {\n return false;\n }\n if (!(\"type\" in block) || block.type !== \"image\") {\n return false;\n }\n\n if (\n !(\"source\" in block) ||\n typeof block.source !== \"object\" ||\n block.source == null\n ) {\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\nexport const standardContentBlockConverter: StandardContentBlockConverter<{\n text: Anthropic.Messages.TextBlockParam;\n image: Anthropic.Messages.ImageBlockParam;\n file: Anthropic.Messages.DocumentBlockParam;\n}> = {\n providerName: \"anthropic\",\n\n fromStandardTextBlock(block): Anthropic.Messages.TextBlockParam {\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 Anthropic.Messages.TextBlockParam;\n },\n\n fromStandardImageBlock(block): Anthropic.Messages.ImageBlockParam {\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 Anthropic.Messages.ImageBlockParam;\n } else {\n return {\n type: \"image\",\n source: {\n type: \"url\",\n url: block.url,\n },\n ...(\"cache_control\" in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n } as Anthropic.Messages.ImageBlockParam;\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 Anthropic.Messages.ImageBlockParam;\n } else {\n throw new Error(`Unsupported image source type: ${block.source_type}`);\n }\n }\n },\n\n fromStandardFileBlock(block): Anthropic.Messages.DocumentBlockParam {\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 },\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 Anthropic.Messages.DocumentBlockParam;\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 Anthropic.Messages.DocumentBlockParam;\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 Anthropic.Messages.DocumentBlockParam;\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 Anthropic.Messages.DocumentBlockParam;\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"],"mappings":"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"}
1
+ {"version":3,"file":"content.js","names":[],"sources":["../../src/utils/content.ts"],"sourcesContent":["import type Anthropic from \"@anthropic-ai/sdk\";\nimport {\n parseBase64DataUrl,\n type StandardContentBlockConverter,\n} from \"@langchain/core/messages\";\n\nexport function _isAnthropicThinkingBlock(\n block: unknown\n): block is Anthropic.Messages.ThinkingBlockParam {\n return (\n typeof block === \"object\" &&\n block !== null &&\n \"type\" in block &&\n block.type === \"thinking\"\n );\n}\n\nexport function _isAnthropicRedactedThinkingBlock(\n block: unknown\n): block is Anthropic.Messages.RedactedThinkingBlockParam {\n return (\n typeof block === \"object\" &&\n block !== null &&\n \"type\" in block &&\n block.type === \"redacted_thinking\"\n );\n}\n\nexport function _isAnthropicCompactionBlock(\n block: unknown\n): block is Anthropic.Beta.BetaCompactionBlockParam {\n return (\n typeof block === \"object\" &&\n block !== null &&\n \"type\" in block &&\n block.type === \"compaction\"\n );\n}\n\nexport function _isAnthropicSearchResultBlock(\n block: unknown\n): block is Anthropic.Beta.BetaSearchResultBlockParam {\n return (\n typeof block === \"object\" &&\n block !== null &&\n \"type\" in block &&\n block.type === \"search_result\"\n );\n}\n\nexport function _isAnthropicImageBlockParam(\n block: unknown\n): block is Anthropic.Messages.ImageBlockParam {\n if (typeof block !== \"object\" || block == null) {\n return false;\n }\n if (!(\"type\" in block) || block.type !== \"image\") {\n return false;\n }\n\n if (\n !(\"source\" in block) ||\n typeof block.source !== \"object\" ||\n block.source == null\n ) {\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\nexport const standardContentBlockConverter: StandardContentBlockConverter<{\n text: Anthropic.Messages.TextBlockParam;\n image: Anthropic.Messages.ImageBlockParam;\n file: Anthropic.Messages.DocumentBlockParam;\n}> = {\n providerName: \"anthropic\",\n\n fromStandardTextBlock(block): Anthropic.Messages.TextBlockParam {\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 Anthropic.Messages.TextBlockParam;\n },\n\n fromStandardImageBlock(block): Anthropic.Messages.ImageBlockParam {\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 Anthropic.Messages.ImageBlockParam;\n } else {\n return {\n type: \"image\",\n source: {\n type: \"url\",\n url: block.url,\n },\n ...(\"cache_control\" in (block.metadata ?? {})\n ? { cache_control: block.metadata!.cache_control }\n : {}),\n } as Anthropic.Messages.ImageBlockParam;\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 Anthropic.Messages.ImageBlockParam;\n } else {\n throw new Error(`Unsupported image source type: ${block.source_type}`);\n }\n }\n },\n\n fromStandardFileBlock(block): Anthropic.Messages.DocumentBlockParam {\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 },\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 Anthropic.Messages.DocumentBlockParam;\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 Anthropic.Messages.DocumentBlockParam;\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 Anthropic.Messages.DocumentBlockParam;\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 Anthropic.Messages.DocumentBlockParam;\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"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- require("../_virtual/_rolldown/runtime.cjs");
2
1
  let _langchain_core_errors = require("@langchain/core/errors");
3
2
  //#region src/utils/errors.ts
4
3
  function addLangChainErrorFields(error, lc_error_code) {
@@ -17,6 +16,7 @@ function wrapAnthropicClientError(e) {
17
16
  return error;
18
17
  }
19
18
  //#endregion
19
+ exports.addLangChainErrorFields = addLangChainErrorFields;
20
20
  exports.wrapAnthropicClientError = wrapAnthropicClientError;
21
21
 
22
22
  //# sourceMappingURL=errors.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.cjs","names":["ContextOverflowError"],"sources":["../../src/utils/errors.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\n/* oxlint-disable no-param-reassign */\n\nimport { ContextOverflowError } from \"@langchain/core/errors\";\n\n// Duplicate of core\n// TODO: Remove once we stop supporting 0.2.x core versions\nexport type LangChainErrorCodes =\n | \"CONTEXT_OVERFLOW\"\n | \"INVALID_PROMPT_INPUT\"\n | \"INVALID_TOOL_RESULTS\"\n | \"MESSAGE_COERCION_FAILURE\"\n | \"MODEL_AUTHENTICATION\"\n | \"MODEL_NOT_FOUND\"\n | \"MODEL_RATE_LIMIT\"\n | \"OUTPUT_PARSING_FAILURE\";\n\nexport function addLangChainErrorFields(\n error: any,\n lc_error_code: LangChainErrorCodes\n) {\n (error as any).lc_error_code = lc_error_code;\n error.message = `${error.message}\\n\\nTroubleshooting URL: https://docs.langchain.com/oss/javascript/langchain/errors/${lc_error_code}/\\n`;\n return error;\n}\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapAnthropicClientError(e: any) {\n let error;\n if (\n e.status === 400 &&\n typeof e.message === \"string\" &&\n e.message.includes(\"prompt is too long\")\n ) {\n error = addLangChainErrorFields(\n ContextOverflowError.fromError(e),\n \"CONTEXT_OVERFLOW\"\n );\n } else if (e.status === 400 && e.message.includes(\"tool\")) {\n error = addLangChainErrorFields(e, \"INVALID_TOOL_RESULTS\");\n } else if (e.status === 401) {\n error = addLangChainErrorFields(e, \"MODEL_AUTHENTICATION\");\n } else if (e.status === 404) {\n error = addLangChainErrorFields(e, \"MODEL_NOT_FOUND\");\n } else if (e.status === 429) {\n error = addLangChainErrorFields(e, \"MODEL_RATE_LIMIT\");\n } else {\n error = e;\n }\n return error;\n}\n"],"mappings":";;;AAiBA,SAAgB,wBACd,OACA,eACA;AACC,OAAc,gBAAgB;AAC/B,OAAM,UAAU,GAAG,MAAM,QAAQ,sFAAsF,cAAc;AACrI,QAAO;;AAIT,SAAgB,yBAAyB,GAAQ;CAC/C,IAAI;AACJ,KACE,EAAE,WAAW,OACb,OAAO,EAAE,YAAY,YACrB,EAAE,QAAQ,SAAS,qBAAqB,CAExC,SAAQ,wBACNA,uBAAAA,qBAAqB,UAAU,EAAE,EACjC,mBACD;UACQ,EAAE,WAAW,OAAO,EAAE,QAAQ,SAAS,OAAO,CACvD,SAAQ,wBAAwB,GAAG,uBAAuB;UACjD,EAAE,WAAW,IACtB,SAAQ,wBAAwB,GAAG,uBAAuB;UACjD,EAAE,WAAW,IACtB,SAAQ,wBAAwB,GAAG,kBAAkB;UAC5C,EAAE,WAAW,IACtB,SAAQ,wBAAwB,GAAG,mBAAmB;KAEtD,SAAQ;AAEV,QAAO"}
1
+ {"version":3,"file":"errors.cjs","names":["ContextOverflowError"],"sources":["../../src/utils/errors.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\n/* oxlint-disable no-param-reassign */\n\nimport { ContextOverflowError } from \"@langchain/core/errors\";\n\n// Duplicate of core\n// TODO: Remove once we stop supporting 0.2.x core versions\nexport type LangChainErrorCodes =\n | \"CONTEXT_OVERFLOW\"\n | \"INVALID_PROMPT_INPUT\"\n | \"INVALID_TOOL_RESULTS\"\n | \"MESSAGE_COERCION_FAILURE\"\n | \"MODEL_AUTHENTICATION\"\n | \"MODEL_NOT_FOUND\"\n | \"MODEL_RATE_LIMIT\"\n | \"OUTPUT_PARSING_FAILURE\";\n\nexport function addLangChainErrorFields(\n error: any,\n lc_error_code: LangChainErrorCodes\n) {\n (error as any).lc_error_code = lc_error_code;\n error.message = `${error.message}\\n\\nTroubleshooting URL: https://docs.langchain.com/oss/javascript/langchain/errors/${lc_error_code}/\\n`;\n return error;\n}\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapAnthropicClientError(e: any) {\n let error;\n if (\n e.status === 400 &&\n typeof e.message === \"string\" &&\n e.message.includes(\"prompt is too long\")\n ) {\n error = addLangChainErrorFields(\n ContextOverflowError.fromError(e),\n \"CONTEXT_OVERFLOW\"\n );\n } else if (e.status === 400 && e.message.includes(\"tool\")) {\n error = addLangChainErrorFields(e, \"INVALID_TOOL_RESULTS\");\n } else if (e.status === 401) {\n error = addLangChainErrorFields(e, \"MODEL_AUTHENTICATION\");\n } else if (e.status === 404) {\n error = addLangChainErrorFields(e, \"MODEL_NOT_FOUND\");\n } else if (e.status === 429) {\n error = addLangChainErrorFields(e, \"MODEL_RATE_LIMIT\");\n } else {\n error = e;\n }\n return error;\n}\n"],"mappings":";;AAiBA,SAAgB,wBACd,OACA,eACA;CACA,MAAe,gBAAgB;CAC/B,MAAM,UAAU,GAAG,MAAM,QAAQ,sFAAsF,cAAc;CACrI,OAAO;AACT;AAGA,SAAgB,yBAAyB,GAAQ;CAC/C,IAAI;CACJ,IACE,EAAE,WAAW,OACb,OAAO,EAAE,YAAY,YACrB,EAAE,QAAQ,SAAS,oBAAoB,GAEvC,QAAQ,wBACNA,uBAAAA,qBAAqB,UAAU,CAAC,GAChC,kBACF;MACK,IAAI,EAAE,WAAW,OAAO,EAAE,QAAQ,SAAS,MAAM,GACtD,QAAQ,wBAAwB,GAAG,sBAAsB;MACpD,IAAI,EAAE,WAAW,KACtB,QAAQ,wBAAwB,GAAG,sBAAsB;MACpD,IAAI,EAAE,WAAW,KACtB,QAAQ,wBAAwB,GAAG,iBAAiB;MAC/C,IAAI,EAAE,WAAW,KACtB,QAAQ,wBAAwB,GAAG,kBAAkB;MAErD,QAAQ;CAEV,OAAO;AACT"}
@@ -16,6 +16,6 @@ function wrapAnthropicClientError(e) {
16
16
  return error;
17
17
  }
18
18
  //#endregion
19
- export { wrapAnthropicClientError };
19
+ export { addLangChainErrorFields, wrapAnthropicClientError };
20
20
 
21
21
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","names":[],"sources":["../../src/utils/errors.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\n/* oxlint-disable no-param-reassign */\n\nimport { ContextOverflowError } from \"@langchain/core/errors\";\n\n// Duplicate of core\n// TODO: Remove once we stop supporting 0.2.x core versions\nexport type LangChainErrorCodes =\n | \"CONTEXT_OVERFLOW\"\n | \"INVALID_PROMPT_INPUT\"\n | \"INVALID_TOOL_RESULTS\"\n | \"MESSAGE_COERCION_FAILURE\"\n | \"MODEL_AUTHENTICATION\"\n | \"MODEL_NOT_FOUND\"\n | \"MODEL_RATE_LIMIT\"\n | \"OUTPUT_PARSING_FAILURE\";\n\nexport function addLangChainErrorFields(\n error: any,\n lc_error_code: LangChainErrorCodes\n) {\n (error as any).lc_error_code = lc_error_code;\n error.message = `${error.message}\\n\\nTroubleshooting URL: https://docs.langchain.com/oss/javascript/langchain/errors/${lc_error_code}/\\n`;\n return error;\n}\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapAnthropicClientError(e: any) {\n let error;\n if (\n e.status === 400 &&\n typeof e.message === \"string\" &&\n e.message.includes(\"prompt is too long\")\n ) {\n error = addLangChainErrorFields(\n ContextOverflowError.fromError(e),\n \"CONTEXT_OVERFLOW\"\n );\n } else if (e.status === 400 && e.message.includes(\"tool\")) {\n error = addLangChainErrorFields(e, \"INVALID_TOOL_RESULTS\");\n } else if (e.status === 401) {\n error = addLangChainErrorFields(e, \"MODEL_AUTHENTICATION\");\n } else if (e.status === 404) {\n error = addLangChainErrorFields(e, \"MODEL_NOT_FOUND\");\n } else if (e.status === 429) {\n error = addLangChainErrorFields(e, \"MODEL_RATE_LIMIT\");\n } else {\n error = e;\n }\n return error;\n}\n"],"mappings":";;AAiBA,SAAgB,wBACd,OACA,eACA;AACC,OAAc,gBAAgB;AAC/B,OAAM,UAAU,GAAG,MAAM,QAAQ,sFAAsF,cAAc;AACrI,QAAO;;AAIT,SAAgB,yBAAyB,GAAQ;CAC/C,IAAI;AACJ,KACE,EAAE,WAAW,OACb,OAAO,EAAE,YAAY,YACrB,EAAE,QAAQ,SAAS,qBAAqB,CAExC,SAAQ,wBACN,qBAAqB,UAAU,EAAE,EACjC,mBACD;UACQ,EAAE,WAAW,OAAO,EAAE,QAAQ,SAAS,OAAO,CACvD,SAAQ,wBAAwB,GAAG,uBAAuB;UACjD,EAAE,WAAW,IACtB,SAAQ,wBAAwB,GAAG,uBAAuB;UACjD,EAAE,WAAW,IACtB,SAAQ,wBAAwB,GAAG,kBAAkB;UAC5C,EAAE,WAAW,IACtB,SAAQ,wBAAwB,GAAG,mBAAmB;KAEtD,SAAQ;AAEV,QAAO"}
1
+ {"version":3,"file":"errors.js","names":[],"sources":["../../src/utils/errors.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\n/* oxlint-disable no-param-reassign */\n\nimport { ContextOverflowError } from \"@langchain/core/errors\";\n\n// Duplicate of core\n// TODO: Remove once we stop supporting 0.2.x core versions\nexport type LangChainErrorCodes =\n | \"CONTEXT_OVERFLOW\"\n | \"INVALID_PROMPT_INPUT\"\n | \"INVALID_TOOL_RESULTS\"\n | \"MESSAGE_COERCION_FAILURE\"\n | \"MODEL_AUTHENTICATION\"\n | \"MODEL_NOT_FOUND\"\n | \"MODEL_RATE_LIMIT\"\n | \"OUTPUT_PARSING_FAILURE\";\n\nexport function addLangChainErrorFields(\n error: any,\n lc_error_code: LangChainErrorCodes\n) {\n (error as any).lc_error_code = lc_error_code;\n error.message = `${error.message}\\n\\nTroubleshooting URL: https://docs.langchain.com/oss/javascript/langchain/errors/${lc_error_code}/\\n`;\n return error;\n}\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrapAnthropicClientError(e: any) {\n let error;\n if (\n e.status === 400 &&\n typeof e.message === \"string\" &&\n e.message.includes(\"prompt is too long\")\n ) {\n error = addLangChainErrorFields(\n ContextOverflowError.fromError(e),\n \"CONTEXT_OVERFLOW\"\n );\n } else if (e.status === 400 && e.message.includes(\"tool\")) {\n error = addLangChainErrorFields(e, \"INVALID_TOOL_RESULTS\");\n } else if (e.status === 401) {\n error = addLangChainErrorFields(e, \"MODEL_AUTHENTICATION\");\n } else if (e.status === 404) {\n error = addLangChainErrorFields(e, \"MODEL_NOT_FOUND\");\n } else if (e.status === 429) {\n error = addLangChainErrorFields(e, \"MODEL_RATE_LIMIT\");\n } else {\n error = e;\n }\n return error;\n}\n"],"mappings":";;AAiBA,SAAgB,wBACd,OACA,eACA;CACA,MAAe,gBAAgB;CAC/B,MAAM,UAAU,GAAG,MAAM,QAAQ,sFAAsF,cAAc;CACrI,OAAO;AACT;AAGA,SAAgB,yBAAyB,GAAQ;CAC/C,IAAI;CACJ,IACE,EAAE,WAAW,OACb,OAAO,EAAE,YAAY,YACrB,EAAE,QAAQ,SAAS,oBAAoB,GAEvC,QAAQ,wBACN,qBAAqB,UAAU,CAAC,GAChC,kBACF;MACK,IAAI,EAAE,WAAW,OAAO,EAAE,QAAQ,SAAS,MAAM,GACtD,QAAQ,wBAAwB,GAAG,sBAAsB;MACpD,IAAI,EAAE,WAAW,KACtB,QAAQ,wBAAwB,GAAG,sBAAsB;MACpD,IAAI,EAAE,WAAW,KACtB,QAAQ,wBAAwB,GAAG,iBAAiB;MAC/C,IAAI,EAAE,WAAW,KACtB,QAAQ,wBAAwB,GAAG,kBAAkB;MAErD,QAAQ;CAEV,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../src/utils/index.ts"],"sourcesContent":["export const iife = <T>(fn: () => T) => fn();\n\nexport const safeParseJson = <T>(json: string): T | object => {\n try {\n return JSON.parse(json);\n } catch {\n return {};\n }\n};\n"],"mappings":";AAAA,MAAa,QAAW,OAAgB,IAAI"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../src/utils/index.ts"],"sourcesContent":["export const iife = <T>(fn: () => T) => fn();\n\nexport const safeParseJson = <T>(json: string): T | object => {\n try {\n return JSON.parse(json);\n } catch {\n return {};\n }\n};\n"],"mappings":";AAAA,MAAa,QAAW,OAAgB,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/utils/index.ts"],"sourcesContent":["export const iife = <T>(fn: () => T) => fn();\n\nexport const safeParseJson = <T>(json: string): T | object => {\n try {\n return JSON.parse(json);\n } catch {\n return {};\n }\n};\n"],"mappings":";AAAA,MAAa,QAAW,OAAgB,IAAI"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/utils/index.ts"],"sourcesContent":["export const iife = <T>(fn: () => T) => fn();\n\nexport const safeParseJson = <T>(json: string): T | object => {\n try {\n return JSON.parse(json);\n } catch {\n return {};\n }\n};\n"],"mappings":";AAAA,MAAa,QAAW,OAAgB,GAAG"}
@@ -1,4 +1,3 @@
1
- require("../_virtual/_rolldown/runtime.cjs");
2
1
  const require_content = require("./content.cjs");
3
2
  const require_standard = require("./standard.cjs");
4
3
  let _langchain_core_messages = require("@langchain/core/messages");
@@ -273,6 +272,7 @@ function mergeMessages(messages) {
273
272
  return result;
274
273
  }
275
274
  //#endregion
275
+ exports._convertLangChainToolCallToAnthropic = _convertLangChainToolCallToAnthropic;
276
276
  exports._convertMessagesToAnthropicPayload = _convertMessagesToAnthropicPayload;
277
277
 
278
278
  //# sourceMappingURL=message_inputs.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"message_inputs.cjs","names":["HumanMessage","standardContentBlockConverter","_isAnthropicImageBlockParam","_isAnthropicThinkingBlock","_isAnthropicRedactedThinkingBlock","_isAnthropicCompactionBlock","_isAnthropicSearchResultBlock","AIMessage","_formatStandardContent"],"sources":["../../src/utils/message_inputs.ts"],"sourcesContent":["/**\n * This util file contains functions for converting LangChain messages to Anthropic messages.\n */\nimport type Anthropic from \"@anthropic-ai/sdk\";\nimport {\n type BaseMessage,\n HumanMessage,\n ToolMessage,\n MessageContentComplex,\n isDataContentBlock,\n convertToProviderContentBlock,\n parseBase64DataUrl,\n ContentBlock,\n AIMessage,\n} from \"@langchain/core/messages\";\nimport { ToolCall } from \"@langchain/core/messages/tool\";\nimport {\n AnthropicImageBlockParam,\n AnthropicMessageCreateParams,\n AnthropicTextBlockParam,\n AnthropicToolResultBlockParam,\n AnthropicToolUseBlockParam,\n AnthropicDocumentBlockParam,\n AnthropicThinkingBlockParam,\n AnthropicRedactedThinkingBlockParam,\n AnthropicServerToolUseBlockParam,\n AnthropicWebSearchToolResultBlockParam,\n AnthropicSearchResultBlockParam,\n AnthropicToolResponse,\n AnthropicContainerUploadBlockParam,\n AnthropicCompactionBlockParam,\n} from \"../types.js\";\nimport {\n _isAnthropicImageBlockParam,\n _isAnthropicRedactedThinkingBlock,\n _isAnthropicSearchResultBlock,\n _isAnthropicThinkingBlock,\n _isAnthropicCompactionBlock,\n standardContentBlockConverter,\n} from \"./content.js\";\nimport { _formatStandardContent } from \"./standard.js\";\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(messages: BaseMessage[]): BaseMessage[] {\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\nfunction* _formatContentBlocks(\n content: ContentBlock[],\n toolCalls?: ToolCall[]\n): Generator<Anthropic.Beta.BetaContentBlockParam> {\n const toolTypes = [\n \"bash_code_execution_tool_result\",\n \"input_json_delta\",\n \"server_tool_use\",\n \"text_editor_code_execution_tool_result\",\n \"tool_result\",\n \"tool_use\",\n \"web_search_result\",\n \"web_search_tool_result\",\n ];\n const textTypes = [\"text\", \"text_delta\"];\n for (const contentPart of content) {\n if (isDataContentBlock(contentPart)) {\n yield convertToProviderContentBlock(\n contentPart,\n standardContentBlockConverter\n );\n }\n\n const cacheControl =\n \"cache_control\" in contentPart\n ? (contentPart.cache_control as Anthropic.Beta.BetaCacheControlEphemeral)\n : 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 if (\n typeof contentPart.image_url === \"object\" &&\n contentPart.image_url !== null &&\n \"url\" in contentPart.image_url &&\n typeof contentPart.image_url.url === \"string\"\n ) {\n source = _formatImage(contentPart.image_url.url);\n }\n if (source) {\n yield {\n type: \"image\" as const, // Explicitly setting the type as \"image\"\n source,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n } as Anthropic.Messages.ImageBlockParam;\n }\n } else if (_isAnthropicImageBlockParam(contentPart)) {\n yield contentPart;\n } else if (contentPart.type === \"image\") {\n // Handle new ContentBlock.Multimodal.Image format\n let source;\n\n if (\"url\" in contentPart && typeof contentPart.url === \"string\") {\n // URL-based image\n source = _formatImage(contentPart.url);\n } else if (\n \"data\" in contentPart &&\n (typeof contentPart.data === \"string\" ||\n // oxlint-disable-next-line no-instanceof/no-instanceof\n contentPart.data instanceof Uint8Array)\n ) {\n // Base64-based image\n const mimeType =\n \"mimeType\" in contentPart && typeof contentPart.mimeType === \"string\"\n ? contentPart.mimeType\n : \"image/jpeg\";\n const data =\n typeof contentPart.data === \"string\"\n ? contentPart.data\n : Buffer.from(contentPart.data).toString(\"base64\");\n source = {\n type: \"base64\" as const,\n media_type: mimeType as\n | \"image/jpeg\"\n | \"image/png\"\n | \"image/gif\"\n | \"image/webp\",\n data,\n };\n } else if (\n \"fileId\" in contentPart &&\n typeof contentPart.fileId === \"string\"\n ) {\n // File ID-based image\n // Note: Anthropic supports file IDs for images that have been uploaded\n // to their servers via the Files API\n source = {\n type: \"file\" as const,\n file_id: contentPart.fileId,\n };\n }\n\n if (source) {\n yield {\n type: \"image\" as const,\n source,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n } as Anthropic.Messages.ImageBlockParam;\n }\n } else if (contentPart.type === \"file\") {\n // Handle new ContentBlock.Multimodal.File format\n let source:\n | { type: \"url\"; url: string }\n | { type: \"base64\"; media_type: string; data: string }\n | { type: \"file\"; file_id: string }\n | undefined;\n\n if (\"url\" in contentPart && typeof contentPart.url === \"string\") {\n // File with URL\n source = {\n type: \"url\" as const,\n url: contentPart.url,\n };\n } else if (\n \"data\" in contentPart &&\n (typeof contentPart.data === \"string\" ||\n // oxlint-disable-next-line no-instanceof/no-instanceof\n contentPart.data instanceof Uint8Array)\n ) {\n // File with base64 data (string or Uint8Array)\n const media_type =\n \"mimeType\" in contentPart && typeof contentPart.mimeType === \"string\"\n ? contentPart.mimeType\n : \"application/pdf\";\n const data =\n typeof contentPart.data === \"string\"\n ? contentPart.data\n : Buffer.from(contentPart.data).toString(\"base64\");\n\n source = {\n type: \"base64\" as const,\n media_type,\n data,\n };\n } else if (\n \"fileId\" in contentPart &&\n typeof contentPart.fileId === \"string\"\n ) {\n // File ID from Anthropic Files API\n // https://platform.claude.com/docs/en/build-with-claude/pdf-support#option-3-files-api\n source = {\n type: \"file\" as const,\n file_id: contentPart.fileId,\n };\n }\n\n if (source) {\n yield {\n type: \"document\" as const,\n source,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n } as Anthropic.Messages.DocumentBlockParam;\n }\n } else if (contentPart.type === \"document\") {\n // PDF\n yield {\n ...contentPart,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n } as Anthropic.Messages.DocumentBlockParam;\n } else if (_isAnthropicThinkingBlock(contentPart)) {\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 yield block;\n } else if (_isAnthropicRedactedThinkingBlock(contentPart)) {\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 yield block;\n } else if (_isAnthropicCompactionBlock(contentPart)) {\n const block: AnthropicCompactionBlockParam = {\n type: \"compaction\" as const,\n content: contentPart.content,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n };\n yield block;\n } else if (_isAnthropicSearchResultBlock(contentPart)) {\n const block: AnthropicSearchResultBlockParam = {\n type: \"search_result\" as const, // Explicitly setting the type as \"search_result\"\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 yield block as Anthropic.Beta.BetaSearchResultBlockParam;\n } else if (\n textTypes.find((t) => t === contentPart.type) &&\n \"text\" in contentPart\n ) {\n // Assuming contentPart is of type MessageContentText here\n yield {\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 } as Anthropic.Messages.TextBlockParam;\n } else if (toolTypes.find((t) => t === contentPart.type)) {\n const contentPartCopy = { ...contentPart };\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 // These blocks appear in streaming responses and should be skipped\n // as their input data is already captured in tool_calls.\n continue;\n }\n\n if (\n contentPartCopy.type === \"tool_use\" &&\n typeof contentPartCopy.input === \"string\"\n ) {\n // First, try to get the input from the corresponding tool_call.\n // This is the most reliable source since tool_calls are properly\n // consolidated from tool_call_chunks during streaming.\n const matchingToolCall = toolCalls?.find(\n (tc) => tc.id === contentPartCopy.id\n );\n if (matchingToolCall) {\n contentPartCopy.input = matchingToolCall.args;\n } else {\n // Fallback: `tool_use` content part may be followed by `input_json_delta`\n // content parts which are chunks of a stringified JSON input,\n // so we need to collect them and merge their inputs.\n const inputDeltas = content.filter(\n (nestedContentPart) =>\n nestedContentPart.index === contentPartCopy.index &&\n nestedContentPart.type === \"input_json_delta\" &&\n typeof nestedContentPart.input === \"string\"\n );\n // If no `input_json_delta` parts are found, this line will just\n // return `contentPartCopy.input`, so no additional check is needed\n contentPartCopy.input = inputDeltas.reduce(\n (accumulator, nestedContentPart) =>\n accumulator + nestedContentPart.input,\n contentPartCopy.input\n );\n }\n }\n\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 (\"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 // TODO: Fix when SDK types are fixed\n yield {\n ...contentPartCopy,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n } as any;\n } else if (contentPart.type === \"container_upload\") {\n yield {\n ...contentPart,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n } as AnthropicContainerUploadBlockParam;\n }\n\n // Note that we are intentionally dropping any blocks that we don't\n // recognize. This is to allow for cross-compatibility between different\n // providers that may have different block types. Ie if we take a message\n // output from OpenAI and send it to Anthropic, we want to drop any blocks\n // that Anthropic doesn't understand.\n }\n}\n\nfunction _formatContent(message: BaseMessage, toolCalls?: ToolCall[]) {\n const { content } = message;\n\n if (typeof content === \"string\") {\n return content;\n } else {\n return Array.from(_formatContentBlocks(content, toolCalls));\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.type}\" is not supported.`);\n }\n if (\n AIMessage.isInstance(message) &&\n message.response_metadata?.output_version === \"v1\"\n ) {\n return {\n role,\n content: _formatStandardContent(message),\n };\n }\n if (AIMessage.isInstance(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 formattedContent = _formatContent(message, message.tool_calls);\n const formattedContentArr = Array.isArray(formattedContent)\n ? formattedContent\n : [{ type: \"text\" as const, text: formattedContent }];\n const missingToolCalls = message.tool_calls.filter(\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 return {\n role,\n content: [\n ...formattedContentArr,\n ...missingToolCalls.map(_convertLangChainToolCallToAnthropic),\n ],\n };\n }\n } else {\n return {\n role,\n content: _formatContent(\n message,\n AIMessage.isInstance(message) ? message.tool_calls : undefined\n ),\n };\n }\n });\n return {\n messages: mergeMessages(\n formattedMessages as AnthropicMessageCreateParams[\"messages\"]\n ),\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 const normalizeContent = (\n content:\n | string\n | Array<\n | AnthropicTextBlockParam\n | AnthropicImageBlockParam\n | AnthropicToolUseBlockParam\n | AnthropicToolResultBlockParam\n | AnthropicDocumentBlockParam\n | AnthropicThinkingBlockParam\n | AnthropicRedactedThinkingBlockParam\n | AnthropicServerToolUseBlockParam\n | AnthropicWebSearchToolResultBlockParam\n | AnthropicSearchResultBlockParam\n >\n ): Array<\n | AnthropicTextBlockParam\n | AnthropicImageBlockParam\n | AnthropicToolUseBlockParam\n | AnthropicToolResultBlockParam\n | AnthropicDocumentBlockParam\n | AnthropicThinkingBlockParam\n | AnthropicRedactedThinkingBlockParam\n | AnthropicServerToolUseBlockParam\n | AnthropicWebSearchToolResultBlockParam\n | AnthropicSearchResultBlockParam\n > => {\n if (typeof content === \"string\") {\n return [\n {\n type: \"text\",\n text: content,\n },\n ];\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"],"mappings":";;;;;AA0CA,SAAS,aAAa,UAAkB;CACtC,MAAM,UAAA,GAAA,yBAAA,oBAA4B,EAAE,SAAS,UAAU,CAAC;AACxD,KAAI,OACF,QAAO;EACL,MAAM;EACN,YAAY,OAAO;EACnB,MAAM,OAAO;EACd;CAEH,IAAI;AAEJ,KAAI;AACF,cAAY,IAAI,IAAI,SAAS;SACvB;AACN,QAAM,IAAI,MACR;GACE,wBAAwB,KAAK,UAC3B,SACD,CAAC;GACF;GACA;GACD,CAAC,KAAK,OAAO,CACf;;AAGH,KAAI,UAAU,aAAa,WAAW,UAAU,aAAa,SAC3D,QAAO;EACL,MAAM;EACN,KAAK;EACN;AAGH,OAAM,IAAI,MACR;EACE,+BAA+B,KAAK,UAClC,UAAU,SACX,CAAC;EACF;EACA;EACD,CAAC,KAAK,OAAO,CACf;;AAGH,SAAS,uBAAuB,UAAwC;CAEtE,MAAM,cAAc,EAAE;AACtB,MAAK,MAAM,WAAW,SACpB,KAAI,QAAQ,UAAU,KAAK,OACzB,KAAI,OAAO,QAAQ,YAAY,UAAU;EACvC,MAAM,kBAAkB,YAAY,YAAY,SAAS;AACzD,MACE,iBAAiB,UAAU,KAAK,WAChC,MAAM,QAAQ,gBAAgB,QAAQ,IACtC,UAAU,gBAAgB,QAAQ,MAClC,gBAAgB,QAAQ,GAAG,SAAS,cAGnC,iBAAgB,QAAoC,KAAK;GACxD,MAAM;GACN,SAAS,QAAQ;GACjB,aAAc,QAAwB;GACvC,CAAC;MAGF,aAAY,KACV,IAAIA,yBAAAA,aAAa,EACf,SAAS,CACP;GACE,MAAM;GACN,SAAS,QAAQ;GACjB,aAAc,QAAwB;GACvC,CACF,EACF,CAAC,CACH;OAGH,aAAY,KACV,IAAIA,yBAAAA,aAAa,EACf,SAAS,CACP;EACE,MAAM;EAEN,GAAI,QAAQ,WAAW,OACnB,EAAE,SAAS,eAAe,QAAQ,EAAE,GACpC,EAAE;EACN,aAAc,QAAwB;EACvC,CACF,EACF,CAAC,CACH;KAGH,aAAY,KAAK,QAAQ;AAG7B,QAAO;;AAGT,SAAgB,qCACd,UACuB;AACvB,KAAI,SAAS,OAAO,KAAA,EAClB,OAAM,IAAI,MAAM,qDAAqD;AAEvE,QAAO;EACL,MAAM;EACN,IAAI,SAAS;EACb,MAAM,SAAS;EACf,OAAO,SAAS;EACjB;;AAGH,UAAU,qBACR,SACA,WACiD;CACjD,MAAM,YAAY;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACD,MAAM,YAAY,CAAC,QAAQ,aAAa;AACxC,MAAK,MAAM,eAAe,SAAS;AACjC,OAAA,GAAA,yBAAA,oBAAuB,YAAY,CACjC,QAAA,GAAA,yBAAA,+BACE,aACAC,gBAAAA,8BACD;EAGH,MAAM,eACJ,mBAAmB,cACd,YAAY,gBACb,KAAA;AAEN,MAAI,YAAY,SAAS,aAAa;GACpC,IAAI;AACJ,OAAI,OAAO,YAAY,cAAc,SACnC,UAAS,aAAa,YAAY,UAAU;YAE5C,OAAO,YAAY,cAAc,YACjC,YAAY,cAAc,QAC1B,SAAS,YAAY,aACrB,OAAO,YAAY,UAAU,QAAQ,SAErC,UAAS,aAAa,YAAY,UAAU,IAAI;AAElD,OAAI,OACF,OAAM;IACJ,MAAM;IACN;IACA,GAAI,eAAe,EAAE,eAAe,cAAc,GAAG,EAAE;IACxD;aAEMC,gBAAAA,4BAA4B,YAAY,CACjD,OAAM;WACG,YAAY,SAAS,SAAS;GAEvC,IAAI;AAEJ,OAAI,SAAS,eAAe,OAAO,YAAY,QAAQ,SAErD,UAAS,aAAa,YAAY,IAAI;YAEtC,UAAU,gBACT,OAAO,YAAY,SAAS,YAE3B,YAAY,gBAAgB,YAW9B,UAAS;IACP,MAAM;IACN,YATA,cAAc,eAAe,OAAO,YAAY,aAAa,WACzD,YAAY,WACZ;IAYJ,MAVA,OAAO,YAAY,SAAS,WACxB,YAAY,OACZ,OAAO,KAAK,YAAY,KAAK,CAAC,SAAS,SAAS;IASrD;YAED,YAAY,eACZ,OAAO,YAAY,WAAW,SAK9B,UAAS;IACP,MAAM;IACN,SAAS,YAAY;IACtB;AAGH,OAAI,OACF,OAAM;IACJ,MAAM;IACN;IACA,GAAI,eAAe,EAAE,eAAe,cAAc,GAAG,EAAE;IACxD;aAEM,YAAY,SAAS,QAAQ;GAEtC,IAAI;AAMJ,OAAI,SAAS,eAAe,OAAO,YAAY,QAAQ,SAErD,UAAS;IACP,MAAM;IACN,KAAK,YAAY;IAClB;YAED,UAAU,gBACT,OAAO,YAAY,SAAS,YAE3B,YAAY,gBAAgB,YAY9B,UAAS;IACP,MAAM;IACN,YAVA,cAAc,eAAe,OAAO,YAAY,aAAa,WACzD,YAAY,WACZ;IASJ,MAPA,OAAO,YAAY,SAAS,WACxB,YAAY,OACZ,OAAO,KAAK,YAAY,KAAK,CAAC,SAAS,SAAS;IAMrD;YAED,YAAY,eACZ,OAAO,YAAY,WAAW,SAI9B,UAAS;IACP,MAAM;IACN,SAAS,YAAY;IACtB;AAGH,OAAI,OACF,OAAM;IACJ,MAAM;IACN;IACA,GAAI,eAAe,EAAE,eAAe,cAAc,GAAG,EAAE;IACxD;aAEM,YAAY,SAAS,WAE9B,OAAM;GACJ,GAAG;GACH,GAAI,eAAe,EAAE,eAAe,cAAc,GAAG,EAAE;GACxD;WACQC,gBAAAA,0BAA0B,YAAY,CAO/C,OAAM;GALJ,MAAM;GACN,UAAU,YAAY;GACtB,WAAW,YAAY;GACvB,GAAI,eAAe,EAAE,eAAe,cAAc,GAAG,EAAE;GAE9C;WACFC,gBAAAA,kCAAkC,YAAY,CAMvD,OAAM;GAJJ,MAAM;GACN,MAAM,YAAY;GAClB,GAAI,eAAe,EAAE,eAAe,cAAc,GAAG,EAAE;GAE9C;WACFC,gBAAAA,4BAA4B,YAAY,CAMjD,OAAM;GAJJ,MAAM;GACN,SAAS,YAAY;GACrB,GAAI,eAAe,EAAE,eAAe,cAAc,GAAG,EAAE;GAE9C;WACFC,gBAAAA,8BAA8B,YAAY,CAanD,OAAM;GAXJ,MAAM;GACN,OAAO,YAAY;GACnB,QAAQ,YAAY;GACpB,GAAI,mBAAmB,eAAe,YAAY,gBAC9C,EAAE,eAAe,YAAY,eAAe,GAC5C,EAAE;GACN,GAAI,eAAe,eAAe,YAAY,YAC1C,EAAE,WAAW,YAAY,WAAW,GACpC,EAAE;GACN,SAAS,YAAY;GAEZ;WAEX,UAAU,MAAM,MAAM,MAAM,YAAY,KAAK,IAC7C,UAAU,YAGV,OAAM;GACJ,MAAM;GACN,MAAM,YAAY;GAClB,GAAI,eAAe,EAAE,eAAe,cAAc,GAAG,EAAE;GACvD,GAAI,eAAe,eAAe,YAAY,YAC1C,EAAE,WAAW,YAAY,WAAW,GACpC,EAAE;GACP;WACQ,UAAU,MAAM,MAAM,MAAM,YAAY,KAAK,EAAE;GACxD,MAAM,kBAAkB,EAAE,GAAG,aAAa;AAE1C,OAAI,gBAAgB,SAAS,mBAK3B;AAGF,OACE,gBAAgB,SAAS,cACzB,OAAO,gBAAgB,UAAU,UACjC;IAIA,MAAM,mBAAmB,WAAW,MACjC,OAAO,GAAG,OAAO,gBAAgB,GACnC;AACD,QAAI,iBACF,iBAAgB,QAAQ,iBAAiB;QAazC,iBAAgB,QARI,QAAQ,QACzB,sBACC,kBAAkB,UAAU,gBAAgB,SAC5C,kBAAkB,SAAS,sBAC3B,OAAO,kBAAkB,UAAU,SAIJ,CAAC,QACjC,aAAa,sBACZ,cAAc,kBAAkB,OAClC,gBAAgB,MACjB;;AAIL,OAAI,WAAW,gBAEb,QAAO,gBAAgB;AAGzB,OAAI,WAAW;QAET,OAAO,gBAAgB,UAAU,SACnC,KAAI;AACF,qBAAgB,QAAQ,KAAK,MAAM,gBAAgB,MAAM;YACnD;AACN,qBAAgB,QAAQ,EAAE;;;AAKhC,SAAM;IACJ,GAAG;IACH,GAAI,eAAe,EAAE,eAAe,cAAc,GAAG,EAAE;IAExD;aACQ,YAAY,SAAS,mBAC9B,OAAM;GACJ,GAAG;GACH,GAAI,eAAe,EAAE,eAAe,cAAc,GAAG,EAAE;GACxD;;;AAWP,SAAS,eAAe,SAAsB,WAAwB;CACpE,MAAM,EAAE,YAAY;AAEpB,KAAI,OAAO,YAAY,SACrB,QAAO;KAEP,QAAO,MAAM,KAAK,qBAAqB,SAAS,UAAU,CAAC;;;;;;;;AAU/D,SAAgB,mCACd,UAC8B;CAC9B,MAAM,iBAAiB,uBAAuB,SAAS;CACvD,IAAI;AACJ,KAAI,eAAe,SAAS,KAAK,eAAe,GAAG,UAAU,KAAK,SAChE,UAAS,SAAS,GAAG;AAgFvB,QAAO;EACL,UAAU,eA9EV,WAAW,KAAA,IAAY,eAAe,MAAM,EAAE,GAAG,gBACJ,KAAK,YAAY;GAC9D,IAAI;AACJ,OAAI,QAAQ,UAAU,KAAK,QACzB,QAAO;YACE,QAAQ,UAAU,KAAK,KAChC,QAAO;YACE,QAAQ,UAAU,KAAK,OAChC,QAAO;YACE,QAAQ,UAAU,KAAK,SAChC,OAAM,IAAI,MACR,kEACD;OAED,OAAM,IAAI,MAAM,iBAAiB,QAAQ,KAAK,qBAAqB;AAErE,OACEC,yBAAAA,UAAU,WAAW,QAAQ,IAC7B,QAAQ,mBAAmB,mBAAmB,KAE9C,QAAO;IACL;IACA,SAASC,iBAAAA,uBAAuB,QAAQ;IACzC;AAEH,OAAID,yBAAAA,UAAU,WAAW,QAAQ,IAAI,CAAC,CAAC,QAAQ,YAAY,OACzD,KAAI,OAAO,QAAQ,YAAY,SAC7B,KAAI,QAAQ,YAAY,GACtB,QAAO;IACL;IACA,SAAS,QAAQ,WAAW,IAC1B,qCACD;IACF;OAED,QAAO;IACL;IACA,SAAS,CACP;KAAE,MAAM;KAAQ,MAAM,QAAQ;KAAS,EACvC,GAAG,QAAQ,WAAW,IAAI,qCAAqC,CAChE;IACF;QAEE;IACL,MAAM,EAAE,YAAY;IACpB,MAAM,mBAAmB,eAAe,SAAS,QAAQ,WAAW;IACpE,MAAM,sBAAsB,MAAM,QAAQ,iBAAiB,GACvD,mBACA,CAAC;KAAE,MAAM;KAAiB,MAAM;KAAkB,CAAC;IACvD,MAAM,mBAAmB,QAAQ,WAAW,QACzC,aACC,CAAC,QAAQ,MACN,iBACE,YAAY,SAAS,cACpB,YAAY,SAAS,sBACrB,YAAY,SAAS,sBACvB,YAAY,OAAO,SAAS,GAC/B,CACJ;AACD,WAAO;KACL;KACA,SAAS,CACP,GAAG,qBACH,GAAG,iBAAiB,IAAI,qCAAqC,CAC9D;KACF;;OAGH,QAAO;IACL;IACA,SAAS,eACP,SACAA,yBAAAA,UAAU,WAAW,QAAQ,GAAG,QAAQ,aAAa,KAAA,EACtD;IACF;IAKgB,CAClB;EACD;EACD;;AAGH,SAAS,cAAc,UAAoD;AACzE,KAAI,CAAC,YAAY,SAAS,UAAU,EAClC,QAAO;CAGT,MAAM,SAAmD,EAAE;CAC3D,IAAI,iBAAiB,SAAS;CAE9B,MAAM,oBACJ,YAyBG;AACH,MAAI,OAAO,YAAY,SACrB,QAAO,CACL;GACE,MAAM;GACN,MAAM;GACP,CACF;AAEH,SAAO;;CAGT,MAAM,uBAAuB,QAA8B;AACzD,MAAI,IAAI,SAAS,OAAQ,QAAO;AAEhC,MAAI,OAAO,IAAI,YAAY,SACzB,QAAO;AAGT,SACE,MAAM,QAAQ,IAAI,QAAQ,IAC1B,IAAI,QAAQ,OAAO,SAAS,KAAK,SAAS,cAAc;;AAI5D,MAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,GAAG;EAC3C,MAAM,cAAc,SAAS;AAE7B,MACE,oBAAoB,eAAe,IACnC,oBAAoB,YAAY,CAGhC,kBAAiB;GACf,GAAG;GACH,SAAS,CACP,GAAG,iBAAiB,eAAe,QAAQ,EAC3C,GAAG,iBAAiB,YAAY,QAAQ,CACzC;GACF;OACI;AACL,UAAO,KAAK,eAAe;AAC3B,oBAAiB;;;AAIrB,QAAO,KAAK,eAAe;AAC3B,QAAO"}
1
+ {"version":3,"file":"message_inputs.cjs","names":["HumanMessage","standardContentBlockConverter","_isAnthropicImageBlockParam","_isAnthropicThinkingBlock","_isAnthropicRedactedThinkingBlock","_isAnthropicCompactionBlock","_isAnthropicSearchResultBlock","AIMessage","_formatStandardContent"],"sources":["../../src/utils/message_inputs.ts"],"sourcesContent":["/**\n * This util file contains functions for converting LangChain messages to Anthropic messages.\n */\nimport type Anthropic from \"@anthropic-ai/sdk\";\nimport {\n type BaseMessage,\n HumanMessage,\n ToolMessage,\n MessageContentComplex,\n isDataContentBlock,\n convertToProviderContentBlock,\n parseBase64DataUrl,\n ContentBlock,\n AIMessage,\n} from \"@langchain/core/messages\";\nimport { ToolCall } from \"@langchain/core/messages/tool\";\nimport {\n AnthropicImageBlockParam,\n AnthropicMessageCreateParams,\n AnthropicTextBlockParam,\n AnthropicToolResultBlockParam,\n AnthropicToolUseBlockParam,\n AnthropicDocumentBlockParam,\n AnthropicThinkingBlockParam,\n AnthropicRedactedThinkingBlockParam,\n AnthropicServerToolUseBlockParam,\n AnthropicWebSearchToolResultBlockParam,\n AnthropicSearchResultBlockParam,\n AnthropicToolResponse,\n AnthropicContainerUploadBlockParam,\n AnthropicCompactionBlockParam,\n} from \"../types.js\";\nimport {\n _isAnthropicImageBlockParam,\n _isAnthropicRedactedThinkingBlock,\n _isAnthropicSearchResultBlock,\n _isAnthropicThinkingBlock,\n _isAnthropicCompactionBlock,\n standardContentBlockConverter,\n} from \"./content.js\";\nimport { _formatStandardContent } from \"./standard.js\";\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(messages: BaseMessage[]): BaseMessage[] {\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\nfunction* _formatContentBlocks(\n content: ContentBlock[],\n toolCalls?: ToolCall[]\n): Generator<Anthropic.Beta.BetaContentBlockParam> {\n const toolTypes = [\n \"bash_code_execution_tool_result\",\n \"input_json_delta\",\n \"server_tool_use\",\n \"text_editor_code_execution_tool_result\",\n \"tool_result\",\n \"tool_use\",\n \"web_search_result\",\n \"web_search_tool_result\",\n ];\n const textTypes = [\"text\", \"text_delta\"];\n for (const contentPart of content) {\n if (isDataContentBlock(contentPart)) {\n yield convertToProviderContentBlock(\n contentPart,\n standardContentBlockConverter\n );\n }\n\n const cacheControl =\n \"cache_control\" in contentPart\n ? (contentPart.cache_control as Anthropic.Beta.BetaCacheControlEphemeral)\n : 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 if (\n typeof contentPart.image_url === \"object\" &&\n contentPart.image_url !== null &&\n \"url\" in contentPart.image_url &&\n typeof contentPart.image_url.url === \"string\"\n ) {\n source = _formatImage(contentPart.image_url.url);\n }\n if (source) {\n yield {\n type: \"image\" as const, // Explicitly setting the type as \"image\"\n source,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n } as Anthropic.Messages.ImageBlockParam;\n }\n } else if (_isAnthropicImageBlockParam(contentPart)) {\n yield contentPart;\n } else if (contentPart.type === \"image\") {\n // Handle new ContentBlock.Multimodal.Image format\n let source;\n\n if (\"url\" in contentPart && typeof contentPart.url === \"string\") {\n // URL-based image\n source = _formatImage(contentPart.url);\n } else if (\n \"data\" in contentPart &&\n (typeof contentPart.data === \"string\" ||\n // oxlint-disable-next-line no-instanceof/no-instanceof\n contentPart.data instanceof Uint8Array)\n ) {\n // Base64-based image\n const mimeType =\n \"mimeType\" in contentPart && typeof contentPart.mimeType === \"string\"\n ? contentPart.mimeType\n : \"image/jpeg\";\n const data =\n typeof contentPart.data === \"string\"\n ? contentPart.data\n : Buffer.from(contentPart.data).toString(\"base64\");\n source = {\n type: \"base64\" as const,\n media_type: mimeType as\n | \"image/jpeg\"\n | \"image/png\"\n | \"image/gif\"\n | \"image/webp\",\n data,\n };\n } else if (\n \"fileId\" in contentPart &&\n typeof contentPart.fileId === \"string\"\n ) {\n // File ID-based image\n // Note: Anthropic supports file IDs for images that have been uploaded\n // to their servers via the Files API\n source = {\n type: \"file\" as const,\n file_id: contentPart.fileId,\n };\n }\n\n if (source) {\n yield {\n type: \"image\" as const,\n source,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n } as Anthropic.Messages.ImageBlockParam;\n }\n } else if (contentPart.type === \"file\") {\n // Handle new ContentBlock.Multimodal.File format\n let source:\n | { type: \"url\"; url: string }\n | { type: \"base64\"; media_type: string; data: string }\n | { type: \"file\"; file_id: string }\n | undefined;\n\n if (\"url\" in contentPart && typeof contentPart.url === \"string\") {\n // File with URL\n source = {\n type: \"url\" as const,\n url: contentPart.url,\n };\n } else if (\n \"data\" in contentPart &&\n (typeof contentPart.data === \"string\" ||\n // oxlint-disable-next-line no-instanceof/no-instanceof\n contentPart.data instanceof Uint8Array)\n ) {\n // File with base64 data (string or Uint8Array)\n const media_type =\n \"mimeType\" in contentPart && typeof contentPart.mimeType === \"string\"\n ? contentPart.mimeType\n : \"application/pdf\";\n const data =\n typeof contentPart.data === \"string\"\n ? contentPart.data\n : Buffer.from(contentPart.data).toString(\"base64\");\n\n source = {\n type: \"base64\" as const,\n media_type,\n data,\n };\n } else if (\n \"fileId\" in contentPart &&\n typeof contentPart.fileId === \"string\"\n ) {\n // File ID from Anthropic Files API\n // https://platform.claude.com/docs/en/build-with-claude/pdf-support#option-3-files-api\n source = {\n type: \"file\" as const,\n file_id: contentPart.fileId,\n };\n }\n\n if (source) {\n yield {\n type: \"document\" as const,\n source,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n } as Anthropic.Messages.DocumentBlockParam;\n }\n } else if (contentPart.type === \"document\") {\n // PDF\n yield {\n ...contentPart,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n } as Anthropic.Messages.DocumentBlockParam;\n } else if (_isAnthropicThinkingBlock(contentPart)) {\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 yield block;\n } else if (_isAnthropicRedactedThinkingBlock(contentPart)) {\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 yield block;\n } else if (_isAnthropicCompactionBlock(contentPart)) {\n const block: AnthropicCompactionBlockParam = {\n type: \"compaction\" as const,\n content: contentPart.content,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n };\n yield block;\n } else if (_isAnthropicSearchResultBlock(contentPart)) {\n const block: AnthropicSearchResultBlockParam = {\n type: \"search_result\" as const, // Explicitly setting the type as \"search_result\"\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 yield block as Anthropic.Beta.BetaSearchResultBlockParam;\n } else if (\n textTypes.find((t) => t === contentPart.type) &&\n \"text\" in contentPart\n ) {\n // Assuming contentPart is of type MessageContentText here\n yield {\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 } as Anthropic.Messages.TextBlockParam;\n } else if (toolTypes.find((t) => t === contentPart.type)) {\n const contentPartCopy = { ...contentPart };\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 // These blocks appear in streaming responses and should be skipped\n // as their input data is already captured in tool_calls.\n continue;\n }\n\n if (\n contentPartCopy.type === \"tool_use\" &&\n typeof contentPartCopy.input === \"string\"\n ) {\n // First, try to get the input from the corresponding tool_call.\n // This is the most reliable source since tool_calls are properly\n // consolidated from tool_call_chunks during streaming.\n const matchingToolCall = toolCalls?.find(\n (tc) => tc.id === contentPartCopy.id\n );\n if (matchingToolCall) {\n contentPartCopy.input = matchingToolCall.args;\n } else {\n // Fallback: `tool_use` content part may be followed by `input_json_delta`\n // content parts which are chunks of a stringified JSON input,\n // so we need to collect them and merge their inputs.\n const inputDeltas = content.filter(\n (nestedContentPart) =>\n nestedContentPart.index === contentPartCopy.index &&\n nestedContentPart.type === \"input_json_delta\" &&\n typeof nestedContentPart.input === \"string\"\n );\n // If no `input_json_delta` parts are found, this line will just\n // return `contentPartCopy.input`, so no additional check is needed\n contentPartCopy.input = inputDeltas.reduce(\n (accumulator, nestedContentPart) =>\n accumulator + nestedContentPart.input,\n contentPartCopy.input\n );\n }\n }\n\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 (\"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 // TODO: Fix when SDK types are fixed\n yield {\n ...contentPartCopy,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n } as any;\n } else if (contentPart.type === \"container_upload\") {\n yield {\n ...contentPart,\n ...(cacheControl ? { cache_control: cacheControl } : {}),\n } as AnthropicContainerUploadBlockParam;\n }\n\n // Note that we are intentionally dropping any blocks that we don't\n // recognize. This is to allow for cross-compatibility between different\n // providers that may have different block types. Ie if we take a message\n // output from OpenAI and send it to Anthropic, we want to drop any blocks\n // that Anthropic doesn't understand.\n }\n}\n\nfunction _formatContent(message: BaseMessage, toolCalls?: ToolCall[]) {\n const { content } = message;\n\n if (typeof content === \"string\") {\n return content;\n } else {\n return Array.from(_formatContentBlocks(content, toolCalls));\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.type}\" is not supported.`);\n }\n if (\n AIMessage.isInstance(message) &&\n message.response_metadata?.output_version === \"v1\"\n ) {\n return {\n role,\n content: _formatStandardContent(message),\n };\n }\n if (AIMessage.isInstance(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 formattedContent = _formatContent(message, message.tool_calls);\n const formattedContentArr = Array.isArray(formattedContent)\n ? formattedContent\n : [{ type: \"text\" as const, text: formattedContent }];\n const missingToolCalls = message.tool_calls.filter(\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 return {\n role,\n content: [\n ...formattedContentArr,\n ...missingToolCalls.map(_convertLangChainToolCallToAnthropic),\n ],\n };\n }\n } else {\n return {\n role,\n content: _formatContent(\n message,\n AIMessage.isInstance(message) ? message.tool_calls : undefined\n ),\n };\n }\n });\n return {\n messages: mergeMessages(\n formattedMessages as AnthropicMessageCreateParams[\"messages\"]\n ),\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 const normalizeContent = (\n content:\n | string\n | Array<\n | AnthropicTextBlockParam\n | AnthropicImageBlockParam\n | AnthropicToolUseBlockParam\n | AnthropicToolResultBlockParam\n | AnthropicDocumentBlockParam\n | AnthropicThinkingBlockParam\n | AnthropicRedactedThinkingBlockParam\n | AnthropicServerToolUseBlockParam\n | AnthropicWebSearchToolResultBlockParam\n | AnthropicSearchResultBlockParam\n >\n ): Array<\n | AnthropicTextBlockParam\n | AnthropicImageBlockParam\n | AnthropicToolUseBlockParam\n | AnthropicToolResultBlockParam\n | AnthropicDocumentBlockParam\n | AnthropicThinkingBlockParam\n | AnthropicRedactedThinkingBlockParam\n | AnthropicServerToolUseBlockParam\n | AnthropicWebSearchToolResultBlockParam\n | AnthropicSearchResultBlockParam\n > => {\n if (typeof content === \"string\") {\n return [\n {\n type: \"text\",\n text: content,\n },\n ];\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"],"mappings":"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"}
@@ -272,6 +272,6 @@ function mergeMessages(messages) {
272
272
  return result;
273
273
  }
274
274
  //#endregion
275
- export { _convertMessagesToAnthropicPayload };
275
+ export { _convertLangChainToolCallToAnthropic, _convertMessagesToAnthropicPayload };
276
276
 
277
277
  //# sourceMappingURL=message_inputs.js.map