@langchain/core 1.2.8 → 1.2.9
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.
- package/CHANGELOG.md +6 -0
- package/dist/language_models/base.cjs +1 -1
- package/dist/language_models/base.js +1 -1
- package/dist/messages/block_translators/google_vertexai.cjs +7 -0
- package/dist/messages/block_translators/google_vertexai.cjs.map +1 -1
- package/dist/messages/block_translators/google_vertexai.js +7 -0
- package/dist/messages/block_translators/google_vertexai.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @langchain/core
|
|
2
2
|
|
|
3
|
+
## 1.2.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#11402](https://github.com/langchain-ai/langchainjs/pull/11402) [`43e4396`](https://github.com/langchain-ai/langchainjs/commit/43e439698fa7794c10ab8d7355d4433e058e4d62) Thanks [@thushanth-bengre-langchain](https://github.com/thushanth-bengre-langchain)! - Fix ChatVertexAI/ChatGoogle content blocks: include `tool_call` blocks from `message.tool_calls` and skip spurious empty `text` blocks in `contentBlocks`.
|
|
8
|
+
|
|
3
9
|
## 1.2.8
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
|
@@ -139,7 +139,7 @@ var BaseLangChain = class extends require_base.Runnable {
|
|
|
139
139
|
this.callbacks = params.callbacks;
|
|
140
140
|
this.tags = params.tags ?? [];
|
|
141
141
|
this.metadata = params.metadata ?? {};
|
|
142
|
-
this._addVersion("@langchain/core", "1.2.
|
|
142
|
+
this._addVersion("@langchain/core", "1.2.9");
|
|
143
143
|
}
|
|
144
144
|
_addVersion(pkg, version) {
|
|
145
145
|
const existing = this.metadata?.versions;
|
|
@@ -138,7 +138,7 @@ var BaseLangChain = class extends Runnable {
|
|
|
138
138
|
this.callbacks = params.callbacks;
|
|
139
139
|
this.tags = params.tags ?? [];
|
|
140
140
|
this.metadata = params.metadata ?? {};
|
|
141
|
-
this._addVersion("@langchain/core", "1.2.
|
|
141
|
+
this._addVersion("@langchain/core", "1.2.9");
|
|
142
142
|
}
|
|
143
143
|
_addVersion(pkg, version) {
|
|
144
144
|
const existing = this.metadata?.versions;
|
|
@@ -30,6 +30,7 @@ function convertToV1FromChatVertexMessage(message) {
|
|
|
30
30
|
};
|
|
31
31
|
continue;
|
|
32
32
|
} else if (require_utils._isContentBlock(block, "text") && require_utils._isString(block.text)) {
|
|
33
|
+
if (block.text === "") continue;
|
|
33
34
|
yield {
|
|
34
35
|
type: "text",
|
|
35
36
|
text: block.text
|
|
@@ -65,6 +66,12 @@ function convertToV1FromChatVertexMessage(message) {
|
|
|
65
66
|
value: block
|
|
66
67
|
};
|
|
67
68
|
}
|
|
69
|
+
for (const toolCall of message.tool_calls ?? []) yield {
|
|
70
|
+
type: "tool_call",
|
|
71
|
+
id: toolCall.id,
|
|
72
|
+
name: toolCall.name,
|
|
73
|
+
args: toolCall.args
|
|
74
|
+
};
|
|
68
75
|
}
|
|
69
76
|
return Array.from(iterateContent());
|
|
70
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google_vertexai.cjs","names":["_isContentBlock","_isString","iife","_isArray"],"sources":["../../../src/messages/block_translators/google_vertexai.ts"],"sourcesContent":["import { AIMessage } from \"../ai.js\";\nimport { ContentBlock } from \"../content/index.js\";\nimport type { StandardContentBlockTranslator } from \"./index.js\";\nimport { _isArray, _isContentBlock, _isString, iife } from \"./utils.js\";\n\nfunction convertToV1FromChatVertexMessage(\n message: AIMessage\n): Array<ContentBlock.Standard> {\n // see `/libs/providers/langchain-google-common/src/utils/gemini.ts:partsToMessageContent`\n function* iterateContent(): Iterable<ContentBlock.Standard> {\n const content =\n typeof message.content === \"string\"\n ? [{ type: \"text\", text: message.content }]\n : message.content;\n for (const block of content) {\n if (_isContentBlock(block, \"reasoning\") && _isString(block.reasoning)) {\n const signature = iife(() => {\n const reasoningIndex = content.indexOf(block);\n if (\n _isArray(message.additional_kwargs?.signatures) &&\n reasoningIndex >= 0\n ) {\n return message.additional_kwargs.signatures.at(reasoningIndex);\n }\n return undefined;\n });\n if (_isString(signature)) {\n yield {\n type: \"reasoning\",\n reasoning: block.reasoning,\n signature,\n };\n } else {\n yield {\n type: \"reasoning\",\n reasoning: block.reasoning,\n };\n }\n continue;\n } else if (\n _isContentBlock(block, \"thinking\") &&\n _isString(block.thinking)\n ) {\n // Handle thinking blocks (Anthropic-style format used in some Google models)\n yield {\n type: \"reasoning\",\n reasoning: block.thinking,\n ...(block.signature ? { signature: block.signature } : {}),\n };\n continue;\n } else if (_isContentBlock(block, \"text\") && _isString(block.text)) {\n yield { type: \"text\", text: block.text };\n continue;\n } else if (_isContentBlock(block, \"image_url\")) {\n if (_isString(block.image_url)) {\n if (block.image_url.startsWith(\"data:\")) {\n const dataUrlRegex = /^data:([^;]+);base64,(.+)$/;\n const match = block.image_url.match(dataUrlRegex);\n if (match) {\n yield { type: \"image\", data: match[2], mimeType: match[1] };\n } else {\n yield { type: \"image\", url: block.image_url };\n }\n } else {\n yield { type: \"image\", url: block.image_url };\n }\n }\n continue;\n } else if (\n _isContentBlock(block, \"media\") &&\n _isString(block.mimeType) &&\n _isString(block.data)\n ) {\n yield { type: \"file\", mimeType: block.mimeType, data: block.data };\n continue;\n }\n yield { type: \"non_standard\", value: block };\n }\n }\n return Array.from(iterateContent());\n}\n\nexport const ChatVertexTranslator: StandardContentBlockTranslator = {\n translateContent: convertToV1FromChatVertexMessage,\n translateContentChunk: convertToV1FromChatVertexMessage,\n};\n"],"mappings":";;AAKA,SAAS,iCACP,SAC8B;CAE9B,UAAU,iBAAkD;EAC1D,MAAM,UACJ,OAAO,QAAQ,YAAY,WACvB,CAAC;GAAE,MAAM;GAAQ,MAAM,QAAQ;EAAQ,CAAC,IACxC,QAAQ;EACd,KAAK,MAAM,SAAS,SAAS;GAC3B,IAAIA,cAAAA,gBAAgB,OAAO,WAAW,KAAKC,cAAAA,UAAU,MAAM,SAAS,GAAG;IACrE,MAAM,YAAYC,cAAAA,WAAW;KAC3B,MAAM,iBAAiB,QAAQ,QAAQ,KAAK;KAC5C,IACEC,cAAAA,SAAS,QAAQ,mBAAmB,UAAU,KAC9C,kBAAkB,GAElB,OAAO,QAAQ,kBAAkB,WAAW,GAAG,cAAc;IAGjE,CAAC;IACD,IAAIF,cAAAA,UAAU,SAAS,GACrB,MAAM;KACJ,MAAM;KACN,WAAW,MAAM;KACjB;IACF;SAEA,MAAM;KACJ,MAAM;KACN,WAAW,MAAM;IACnB;IAEF;GACF,OAAO,IACLD,cAAAA,gBAAgB,OAAO,UAAU,KACjCC,cAAAA,UAAU,MAAM,QAAQ,GACxB;IAEA,MAAM;KACJ,MAAM;KACN,WAAW,MAAM;KACjB,GAAI,MAAM,YAAY,EAAE,WAAW,MAAM,UAAU,IAAI,CAAC;IAC1D;IACA;GACF,OAAO,IAAID,cAAAA,gBAAgB,OAAO,MAAM,KAAKC,cAAAA,UAAU,MAAM,IAAI,GAAG;IAClE,MAAM;KAAE,MAAM;KAAQ,MAAM,MAAM;IAAK;IACvC;GACF,OAAO,IAAID,cAAAA,gBAAgB,OAAO,WAAW,GAAG;IAC9C,IAAIC,cAAAA,UAAU,MAAM,SAAS,GAC3B,IAAI,MAAM,UAAU,WAAW,OAAO,GAAG;KAEvC,MAAM,QAAQ,MAAM,UAAU,MAAM,4BAAY;KAChD,IAAI,OACF,MAAM;MAAE,MAAM;MAAS,MAAM,MAAM;MAAI,UAAU,MAAM;KAAG;UAE1D,MAAM;MAAE,MAAM;MAAS,KAAK,MAAM;KAAU;IAEhD,OACE,MAAM;KAAE,MAAM;KAAS,KAAK,MAAM;IAAU;IAGhD;GACF,OAAO,IACLD,cAAAA,gBAAgB,OAAO,OAAO,KAC9BC,cAAAA,UAAU,MAAM,QAAQ,KACxBA,cAAAA,UAAU,MAAM,IAAI,GACpB;IACA,MAAM;KAAE,MAAM;KAAQ,UAAU,MAAM;KAAU,MAAM,MAAM;IAAK;IACjE;GACF;GACA,MAAM;IAAE,MAAM;IAAgB,OAAO;GAAM;EAC7C;
|
|
1
|
+
{"version":3,"file":"google_vertexai.cjs","names":["_isContentBlock","_isString","iife","_isArray"],"sources":["../../../src/messages/block_translators/google_vertexai.ts"],"sourcesContent":["import { AIMessage } from \"../ai.js\";\nimport { ContentBlock } from \"../content/index.js\";\nimport type { StandardContentBlockTranslator } from \"./index.js\";\nimport { _isArray, _isContentBlock, _isString, iife } from \"./utils.js\";\n\nfunction convertToV1FromChatVertexMessage(\n message: AIMessage\n): Array<ContentBlock.Standard> {\n // see `/libs/providers/langchain-google-common/src/utils/gemini.ts:partsToMessageContent`\n function* iterateContent(): Iterable<ContentBlock.Standard> {\n const content =\n typeof message.content === \"string\"\n ? [{ type: \"text\", text: message.content }]\n : message.content;\n for (const block of content) {\n if (_isContentBlock(block, \"reasoning\") && _isString(block.reasoning)) {\n const signature = iife(() => {\n const reasoningIndex = content.indexOf(block);\n if (\n _isArray(message.additional_kwargs?.signatures) &&\n reasoningIndex >= 0\n ) {\n return message.additional_kwargs.signatures.at(reasoningIndex);\n }\n return undefined;\n });\n if (_isString(signature)) {\n yield {\n type: \"reasoning\",\n reasoning: block.reasoning,\n signature,\n };\n } else {\n yield {\n type: \"reasoning\",\n reasoning: block.reasoning,\n };\n }\n continue;\n } else if (\n _isContentBlock(block, \"thinking\") &&\n _isString(block.thinking)\n ) {\n // Handle thinking blocks (Anthropic-style format used in some Google models)\n yield {\n type: \"reasoning\",\n reasoning: block.thinking,\n ...(block.signature ? { signature: block.signature } : {}),\n };\n continue;\n } else if (_isContentBlock(block, \"text\") && _isString(block.text)) {\n if (block.text === \"\") {\n continue;\n }\n yield { type: \"text\", text: block.text };\n continue;\n } else if (_isContentBlock(block, \"image_url\")) {\n if (_isString(block.image_url)) {\n if (block.image_url.startsWith(\"data:\")) {\n const dataUrlRegex = /^data:([^;]+);base64,(.+)$/;\n const match = block.image_url.match(dataUrlRegex);\n if (match) {\n yield { type: \"image\", data: match[2], mimeType: match[1] };\n } else {\n yield { type: \"image\", url: block.image_url };\n }\n } else {\n yield { type: \"image\", url: block.image_url };\n }\n }\n continue;\n } else if (\n _isContentBlock(block, \"media\") &&\n _isString(block.mimeType) &&\n _isString(block.data)\n ) {\n yield { type: \"file\", mimeType: block.mimeType, data: block.data };\n continue;\n }\n yield { type: \"non_standard\", value: block };\n }\n for (const toolCall of message.tool_calls ?? []) {\n yield {\n type: \"tool_call\",\n id: toolCall.id,\n name: toolCall.name,\n args: toolCall.args,\n };\n }\n }\n return Array.from(iterateContent());\n}\n\nexport const ChatVertexTranslator: StandardContentBlockTranslator = {\n translateContent: convertToV1FromChatVertexMessage,\n translateContentChunk: convertToV1FromChatVertexMessage,\n};\n"],"mappings":";;AAKA,SAAS,iCACP,SAC8B;CAE9B,UAAU,iBAAkD;EAC1D,MAAM,UACJ,OAAO,QAAQ,YAAY,WACvB,CAAC;GAAE,MAAM;GAAQ,MAAM,QAAQ;EAAQ,CAAC,IACxC,QAAQ;EACd,KAAK,MAAM,SAAS,SAAS;GAC3B,IAAIA,cAAAA,gBAAgB,OAAO,WAAW,KAAKC,cAAAA,UAAU,MAAM,SAAS,GAAG;IACrE,MAAM,YAAYC,cAAAA,WAAW;KAC3B,MAAM,iBAAiB,QAAQ,QAAQ,KAAK;KAC5C,IACEC,cAAAA,SAAS,QAAQ,mBAAmB,UAAU,KAC9C,kBAAkB,GAElB,OAAO,QAAQ,kBAAkB,WAAW,GAAG,cAAc;IAGjE,CAAC;IACD,IAAIF,cAAAA,UAAU,SAAS,GACrB,MAAM;KACJ,MAAM;KACN,WAAW,MAAM;KACjB;IACF;SAEA,MAAM;KACJ,MAAM;KACN,WAAW,MAAM;IACnB;IAEF;GACF,OAAO,IACLD,cAAAA,gBAAgB,OAAO,UAAU,KACjCC,cAAAA,UAAU,MAAM,QAAQ,GACxB;IAEA,MAAM;KACJ,MAAM;KACN,WAAW,MAAM;KACjB,GAAI,MAAM,YAAY,EAAE,WAAW,MAAM,UAAU,IAAI,CAAC;IAC1D;IACA;GACF,OAAO,IAAID,cAAAA,gBAAgB,OAAO,MAAM,KAAKC,cAAAA,UAAU,MAAM,IAAI,GAAG;IAClE,IAAI,MAAM,SAAS,IACjB;IAEF,MAAM;KAAE,MAAM;KAAQ,MAAM,MAAM;IAAK;IACvC;GACF,OAAO,IAAID,cAAAA,gBAAgB,OAAO,WAAW,GAAG;IAC9C,IAAIC,cAAAA,UAAU,MAAM,SAAS,GAC3B,IAAI,MAAM,UAAU,WAAW,OAAO,GAAG;KAEvC,MAAM,QAAQ,MAAM,UAAU,MAAM,4BAAY;KAChD,IAAI,OACF,MAAM;MAAE,MAAM;MAAS,MAAM,MAAM;MAAI,UAAU,MAAM;KAAG;UAE1D,MAAM;MAAE,MAAM;MAAS,KAAK,MAAM;KAAU;IAEhD,OACE,MAAM;KAAE,MAAM;KAAS,KAAK,MAAM;IAAU;IAGhD;GACF,OAAO,IACLD,cAAAA,gBAAgB,OAAO,OAAO,KAC9BC,cAAAA,UAAU,MAAM,QAAQ,KACxBA,cAAAA,UAAU,MAAM,IAAI,GACpB;IACA,MAAM;KAAE,MAAM;KAAQ,UAAU,MAAM;KAAU,MAAM,MAAM;IAAK;IACjE;GACF;GACA,MAAM;IAAE,MAAM;IAAgB,OAAO;GAAM;EAC7C;EACA,KAAK,MAAM,YAAY,QAAQ,cAAc,CAAC,GAC5C,MAAM;GACJ,MAAM;GACN,IAAI,SAAS;GACb,MAAM,SAAS;GACf,MAAM,SAAS;EACjB;CAEJ;CACA,OAAO,MAAM,KAAK,eAAe,CAAC;AACpC;AAEA,MAAa,uBAAuD;CAClE,kBAAkB;CAClB,uBAAuB;AACzB"}
|
|
@@ -30,6 +30,7 @@ function convertToV1FromChatVertexMessage(message) {
|
|
|
30
30
|
};
|
|
31
31
|
continue;
|
|
32
32
|
} else if (_isContentBlock(block, "text") && _isString(block.text)) {
|
|
33
|
+
if (block.text === "") continue;
|
|
33
34
|
yield {
|
|
34
35
|
type: "text",
|
|
35
36
|
text: block.text
|
|
@@ -65,6 +66,12 @@ function convertToV1FromChatVertexMessage(message) {
|
|
|
65
66
|
value: block
|
|
66
67
|
};
|
|
67
68
|
}
|
|
69
|
+
for (const toolCall of message.tool_calls ?? []) yield {
|
|
70
|
+
type: "tool_call",
|
|
71
|
+
id: toolCall.id,
|
|
72
|
+
name: toolCall.name,
|
|
73
|
+
args: toolCall.args
|
|
74
|
+
};
|
|
68
75
|
}
|
|
69
76
|
return Array.from(iterateContent());
|
|
70
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google_vertexai.js","names":[],"sources":["../../../src/messages/block_translators/google_vertexai.ts"],"sourcesContent":["import { AIMessage } from \"../ai.js\";\nimport { ContentBlock } from \"../content/index.js\";\nimport type { StandardContentBlockTranslator } from \"./index.js\";\nimport { _isArray, _isContentBlock, _isString, iife } from \"./utils.js\";\n\nfunction convertToV1FromChatVertexMessage(\n message: AIMessage\n): Array<ContentBlock.Standard> {\n // see `/libs/providers/langchain-google-common/src/utils/gemini.ts:partsToMessageContent`\n function* iterateContent(): Iterable<ContentBlock.Standard> {\n const content =\n typeof message.content === \"string\"\n ? [{ type: \"text\", text: message.content }]\n : message.content;\n for (const block of content) {\n if (_isContentBlock(block, \"reasoning\") && _isString(block.reasoning)) {\n const signature = iife(() => {\n const reasoningIndex = content.indexOf(block);\n if (\n _isArray(message.additional_kwargs?.signatures) &&\n reasoningIndex >= 0\n ) {\n return message.additional_kwargs.signatures.at(reasoningIndex);\n }\n return undefined;\n });\n if (_isString(signature)) {\n yield {\n type: \"reasoning\",\n reasoning: block.reasoning,\n signature,\n };\n } else {\n yield {\n type: \"reasoning\",\n reasoning: block.reasoning,\n };\n }\n continue;\n } else if (\n _isContentBlock(block, \"thinking\") &&\n _isString(block.thinking)\n ) {\n // Handle thinking blocks (Anthropic-style format used in some Google models)\n yield {\n type: \"reasoning\",\n reasoning: block.thinking,\n ...(block.signature ? { signature: block.signature } : {}),\n };\n continue;\n } else if (_isContentBlock(block, \"text\") && _isString(block.text)) {\n yield { type: \"text\", text: block.text };\n continue;\n } else if (_isContentBlock(block, \"image_url\")) {\n if (_isString(block.image_url)) {\n if (block.image_url.startsWith(\"data:\")) {\n const dataUrlRegex = /^data:([^;]+);base64,(.+)$/;\n const match = block.image_url.match(dataUrlRegex);\n if (match) {\n yield { type: \"image\", data: match[2], mimeType: match[1] };\n } else {\n yield { type: \"image\", url: block.image_url };\n }\n } else {\n yield { type: \"image\", url: block.image_url };\n }\n }\n continue;\n } else if (\n _isContentBlock(block, \"media\") &&\n _isString(block.mimeType) &&\n _isString(block.data)\n ) {\n yield { type: \"file\", mimeType: block.mimeType, data: block.data };\n continue;\n }\n yield { type: \"non_standard\", value: block };\n }\n }\n return Array.from(iterateContent());\n}\n\nexport const ChatVertexTranslator: StandardContentBlockTranslator = {\n translateContent: convertToV1FromChatVertexMessage,\n translateContentChunk: convertToV1FromChatVertexMessage,\n};\n"],"mappings":";;AAKA,SAAS,iCACP,SAC8B;CAE9B,UAAU,iBAAkD;EAC1D,MAAM,UACJ,OAAO,QAAQ,YAAY,WACvB,CAAC;GAAE,MAAM;GAAQ,MAAM,QAAQ;EAAQ,CAAC,IACxC,QAAQ;EACd,KAAK,MAAM,SAAS,SAAS;GAC3B,IAAI,gBAAgB,OAAO,WAAW,KAAK,UAAU,MAAM,SAAS,GAAG;IACrE,MAAM,YAAY,WAAW;KAC3B,MAAM,iBAAiB,QAAQ,QAAQ,KAAK;KAC5C,IACE,SAAS,QAAQ,mBAAmB,UAAU,KAC9C,kBAAkB,GAElB,OAAO,QAAQ,kBAAkB,WAAW,GAAG,cAAc;IAGjE,CAAC;IACD,IAAI,UAAU,SAAS,GACrB,MAAM;KACJ,MAAM;KACN,WAAW,MAAM;KACjB;IACF;SAEA,MAAM;KACJ,MAAM;KACN,WAAW,MAAM;IACnB;IAEF;GACF,OAAO,IACL,gBAAgB,OAAO,UAAU,KACjC,UAAU,MAAM,QAAQ,GACxB;IAEA,MAAM;KACJ,MAAM;KACN,WAAW,MAAM;KACjB,GAAI,MAAM,YAAY,EAAE,WAAW,MAAM,UAAU,IAAI,CAAC;IAC1D;IACA;GACF,OAAO,IAAI,gBAAgB,OAAO,MAAM,KAAK,UAAU,MAAM,IAAI,GAAG;IAClE,MAAM;KAAE,MAAM;KAAQ,MAAM,MAAM;IAAK;IACvC;GACF,OAAO,IAAI,gBAAgB,OAAO,WAAW,GAAG;IAC9C,IAAI,UAAU,MAAM,SAAS,GAC3B,IAAI,MAAM,UAAU,WAAW,OAAO,GAAG;KAEvC,MAAM,QAAQ,MAAM,UAAU,MAAM,4BAAY;KAChD,IAAI,OACF,MAAM;MAAE,MAAM;MAAS,MAAM,MAAM;MAAI,UAAU,MAAM;KAAG;UAE1D,MAAM;MAAE,MAAM;MAAS,KAAK,MAAM;KAAU;IAEhD,OACE,MAAM;KAAE,MAAM;KAAS,KAAK,MAAM;IAAU;IAGhD;GACF,OAAO,IACL,gBAAgB,OAAO,OAAO,KAC9B,UAAU,MAAM,QAAQ,KACxB,UAAU,MAAM,IAAI,GACpB;IACA,MAAM;KAAE,MAAM;KAAQ,UAAU,MAAM;KAAU,MAAM,MAAM;IAAK;IACjE;GACF;GACA,MAAM;IAAE,MAAM;IAAgB,OAAO;GAAM;EAC7C;
|
|
1
|
+
{"version":3,"file":"google_vertexai.js","names":[],"sources":["../../../src/messages/block_translators/google_vertexai.ts"],"sourcesContent":["import { AIMessage } from \"../ai.js\";\nimport { ContentBlock } from \"../content/index.js\";\nimport type { StandardContentBlockTranslator } from \"./index.js\";\nimport { _isArray, _isContentBlock, _isString, iife } from \"./utils.js\";\n\nfunction convertToV1FromChatVertexMessage(\n message: AIMessage\n): Array<ContentBlock.Standard> {\n // see `/libs/providers/langchain-google-common/src/utils/gemini.ts:partsToMessageContent`\n function* iterateContent(): Iterable<ContentBlock.Standard> {\n const content =\n typeof message.content === \"string\"\n ? [{ type: \"text\", text: message.content }]\n : message.content;\n for (const block of content) {\n if (_isContentBlock(block, \"reasoning\") && _isString(block.reasoning)) {\n const signature = iife(() => {\n const reasoningIndex = content.indexOf(block);\n if (\n _isArray(message.additional_kwargs?.signatures) &&\n reasoningIndex >= 0\n ) {\n return message.additional_kwargs.signatures.at(reasoningIndex);\n }\n return undefined;\n });\n if (_isString(signature)) {\n yield {\n type: \"reasoning\",\n reasoning: block.reasoning,\n signature,\n };\n } else {\n yield {\n type: \"reasoning\",\n reasoning: block.reasoning,\n };\n }\n continue;\n } else if (\n _isContentBlock(block, \"thinking\") &&\n _isString(block.thinking)\n ) {\n // Handle thinking blocks (Anthropic-style format used in some Google models)\n yield {\n type: \"reasoning\",\n reasoning: block.thinking,\n ...(block.signature ? { signature: block.signature } : {}),\n };\n continue;\n } else if (_isContentBlock(block, \"text\") && _isString(block.text)) {\n if (block.text === \"\") {\n continue;\n }\n yield { type: \"text\", text: block.text };\n continue;\n } else if (_isContentBlock(block, \"image_url\")) {\n if (_isString(block.image_url)) {\n if (block.image_url.startsWith(\"data:\")) {\n const dataUrlRegex = /^data:([^;]+);base64,(.+)$/;\n const match = block.image_url.match(dataUrlRegex);\n if (match) {\n yield { type: \"image\", data: match[2], mimeType: match[1] };\n } else {\n yield { type: \"image\", url: block.image_url };\n }\n } else {\n yield { type: \"image\", url: block.image_url };\n }\n }\n continue;\n } else if (\n _isContentBlock(block, \"media\") &&\n _isString(block.mimeType) &&\n _isString(block.data)\n ) {\n yield { type: \"file\", mimeType: block.mimeType, data: block.data };\n continue;\n }\n yield { type: \"non_standard\", value: block };\n }\n for (const toolCall of message.tool_calls ?? []) {\n yield {\n type: \"tool_call\",\n id: toolCall.id,\n name: toolCall.name,\n args: toolCall.args,\n };\n }\n }\n return Array.from(iterateContent());\n}\n\nexport const ChatVertexTranslator: StandardContentBlockTranslator = {\n translateContent: convertToV1FromChatVertexMessage,\n translateContentChunk: convertToV1FromChatVertexMessage,\n};\n"],"mappings":";;AAKA,SAAS,iCACP,SAC8B;CAE9B,UAAU,iBAAkD;EAC1D,MAAM,UACJ,OAAO,QAAQ,YAAY,WACvB,CAAC;GAAE,MAAM;GAAQ,MAAM,QAAQ;EAAQ,CAAC,IACxC,QAAQ;EACd,KAAK,MAAM,SAAS,SAAS;GAC3B,IAAI,gBAAgB,OAAO,WAAW,KAAK,UAAU,MAAM,SAAS,GAAG;IACrE,MAAM,YAAY,WAAW;KAC3B,MAAM,iBAAiB,QAAQ,QAAQ,KAAK;KAC5C,IACE,SAAS,QAAQ,mBAAmB,UAAU,KAC9C,kBAAkB,GAElB,OAAO,QAAQ,kBAAkB,WAAW,GAAG,cAAc;IAGjE,CAAC;IACD,IAAI,UAAU,SAAS,GACrB,MAAM;KACJ,MAAM;KACN,WAAW,MAAM;KACjB;IACF;SAEA,MAAM;KACJ,MAAM;KACN,WAAW,MAAM;IACnB;IAEF;GACF,OAAO,IACL,gBAAgB,OAAO,UAAU,KACjC,UAAU,MAAM,QAAQ,GACxB;IAEA,MAAM;KACJ,MAAM;KACN,WAAW,MAAM;KACjB,GAAI,MAAM,YAAY,EAAE,WAAW,MAAM,UAAU,IAAI,CAAC;IAC1D;IACA;GACF,OAAO,IAAI,gBAAgB,OAAO,MAAM,KAAK,UAAU,MAAM,IAAI,GAAG;IAClE,IAAI,MAAM,SAAS,IACjB;IAEF,MAAM;KAAE,MAAM;KAAQ,MAAM,MAAM;IAAK;IACvC;GACF,OAAO,IAAI,gBAAgB,OAAO,WAAW,GAAG;IAC9C,IAAI,UAAU,MAAM,SAAS,GAC3B,IAAI,MAAM,UAAU,WAAW,OAAO,GAAG;KAEvC,MAAM,QAAQ,MAAM,UAAU,MAAM,4BAAY;KAChD,IAAI,OACF,MAAM;MAAE,MAAM;MAAS,MAAM,MAAM;MAAI,UAAU,MAAM;KAAG;UAE1D,MAAM;MAAE,MAAM;MAAS,KAAK,MAAM;KAAU;IAEhD,OACE,MAAM;KAAE,MAAM;KAAS,KAAK,MAAM;IAAU;IAGhD;GACF,OAAO,IACL,gBAAgB,OAAO,OAAO,KAC9B,UAAU,MAAM,QAAQ,KACxB,UAAU,MAAM,IAAI,GACpB;IACA,MAAM;KAAE,MAAM;KAAQ,UAAU,MAAM;KAAU,MAAM,MAAM;IAAK;IACjE;GACF;GACA,MAAM;IAAE,MAAM;IAAgB,OAAO;GAAM;EAC7C;EACA,KAAK,MAAM,YAAY,QAAQ,cAAc,CAAC,GAC5C,MAAM;GACJ,MAAM;GACN,IAAI,SAAS;GACb,MAAM,SAAS;GACf,MAAM,SAAS;EACjB;CAEJ;CACA,OAAO,MAAM,KAAK,eAAe,CAAC;AACpC;AAEA,MAAa,uBAAuD;CAClE,kBAAkB;CAClB,uBAAuB;AACzB"}
|