ff2308b0339ff908d7723a78bf4f063370e00030339e8820e9f65d41087428c1.json 47 KB

1
  1. {"ast":null,"code":"import _asyncToGenerator from \"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport { RunnableLambda } from \"../runnables/base.js\";\nimport { AIMessage, AIMessageChunk } from \"./ai.js\";\nimport { ChatMessage, ChatMessageChunk } from \"./chat.js\";\nimport { FunctionMessage, FunctionMessageChunk } from \"./function.js\";\nimport { HumanMessage, HumanMessageChunk } from \"./human.js\";\nimport { RemoveMessage } from \"./modifier.js\";\nimport { SystemMessage, SystemMessageChunk } from \"./system.js\";\nimport { ToolMessage, ToolMessageChunk } from \"./tool.js\";\nimport { convertToChunk } from \"./utils.js\";\nconst _isMessageType = (msg, types) => {\n const typesAsStrings = [...new Set(types === null || types === void 0 ? void 0 : types.map(t => {\n if (typeof t === \"string\") {\n return t;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const instantiatedMsgClass = new t({});\n if (!(\"_getType\" in instantiatedMsgClass) || typeof instantiatedMsgClass._getType !== \"function\") {\n throw new Error(\"Invalid type provided.\");\n }\n return instantiatedMsgClass._getType();\n }))];\n const msgType = msg._getType();\n return typesAsStrings.some(t => t === msgType);\n};\nexport function filterMessages(messagesOrOptions, options) {\n if (Array.isArray(messagesOrOptions)) {\n return _filterMessages(messagesOrOptions, options);\n }\n return RunnableLambda.from(input => {\n return _filterMessages(input, messagesOrOptions);\n });\n}\nfunction _filterMessages(messages, options = {}) {\n const {\n includeNames,\n excludeNames,\n includeTypes,\n excludeTypes,\n includeIds,\n excludeIds\n } = options;\n const filtered = [];\n for (const msg of messages) {\n if (excludeNames && msg.name && excludeNames.includes(msg.name)) {\n continue;\n } else if (excludeTypes && _isMessageType(msg, excludeTypes)) {\n continue;\n } else if (excludeIds && msg.id && excludeIds.includes(msg.id)) {\n continue;\n }\n // default to inclusion when no inclusion criteria given.\n if (!(includeTypes || includeIds || includeNames)) {\n filtered.push(msg);\n } else if (includeNames && msg.name && includeNames.some(iName => iName === msg.name)) {\n filtered.push(msg);\n } else if (includeTypes && _isMessageType(msg, includeTypes)) {\n filtered.push(msg);\n } else if (includeIds && msg.id && includeIds.some(id => id === msg.id)) {\n filtered.push(msg);\n }\n }\n return filtered;\n}\nexport function mergeMessageRuns(messages) {\n if (Array.isArray(messages)) {\n return _mergeMessageRuns(messages);\n }\n return RunnableLambda.from(_mergeMessageRuns);\n}\nfunction _mergeMessageRuns(messages) {\n if (!messages.length) {\n return [];\n }\n const merged = [];\n for (const msg of messages) {\n const curr = msg; // Create a shallow copy of the message\n const last = merged.pop();\n if (!last) {\n merged.push(curr);\n } else if (curr._getType() === \"tool\" || !(curr._getType() === last._getType())) {\n merged.push(last, curr);\n } else {\n const lastChunk = convertToChunk(last);\n const currChunk = convertToChunk(curr);\n const mergedChunks = lastChunk.concat(currChunk);\n if (typeof lastChunk.content === \"string\" && typeof currChunk.content === \"string\") {\n mergedChunks.content = `${lastChunk.content}\\n${currChunk.content}`;\n }\n merged.push(_chunkToMsg(mergedChunks));\n }\n }\n return merged;\n}\nexport function trimMessages(messagesOrOptions, options) {\n if (Array.isArray(messagesOrOptions)) {\n const messages = messagesOrOptions;\n if (!options) {\n throw new Error(\"Options parameter is required when providing messages.\");\n }\n return _trimMessagesHelper(messages, options);\n } else {\n const trimmerOptions = messagesOrOptions;\n return RunnableLambda.from(input => _trimMessagesHelper(input, trimmerOptions));\n }\n}\nfunction _trimMessagesHelper(_x, _x2) {\n return _trimMessagesHelper2.apply(this, arguments);\n}\nfunction _trimMessagesHelper2() {\n _trimMessagesHelper2 = _asyncToGenerator(function* (messages, options) {\n const {\n maxTokens,\n tokenCounter,\n strategy = \"last\",\n allowPartial = false,\n endOn,\n startOn,\n includeSystem = false,\n textSplitter\n } = options;\n if (startOn && strategy === \"first\") {\n throw new Error(\"`startOn` should only be specified if `strategy` is 'last'.\");\n }\n if (includeSystem && strategy === \"first\") {\n throw new Error(\"`includeSystem` should only be specified if `strategy` is 'last'.\");\n }\n let listTokenCounter;\n if (\"getNumTokens\" in tokenCounter) {\n listTokenCounter = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (msgs) {\n const tokenCounts = yield Promise.all(msgs.map(msg => tokenCounter.getNumTokens(msg.content)));\n return tokenCounts.reduce((sum, count) => sum + count, 0);\n });\n return function listTokenCounter(_x7) {\n return _ref.apply(this, arguments);\n };\n }();\n } else {\n listTokenCounter = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(function* (msgs) {\n return tokenCounter(msgs);\n });\n return function listTokenCounter(_x8) {\n return _ref2.apply(this, arguments);\n };\n }();\n }\n let textSplitterFunc = defaultTextSplitter;\n if (textSplitter) {\n if (\"splitText\" in textSplitter) {\n textSplitterFunc = textSplitter.splitText;\n } else {\n textSplitterFunc = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(function* (text) {\n return textSplitter(text);\n });\n return function textSplitterFunc(_x9) {\n return _ref3.apply(this, arguments);\n };\n }();\n }\n }\n if (strategy === \"first\") {\n return _firstMaxTokens(messages, {\n maxTokens,\n tokenCounter: listTokenCounter,\n textSplitter: textSplitterFunc,\n partialStrategy: allowPartial ? \"first\" : undefined,\n endOn\n });\n } else if (strategy === \"last\") {\n return _lastMaxTokens(messages, {\n maxTokens,\n tokenCounter: listTokenCounter,\n textSplitter: textSplitterFunc,\n allowPartial,\n includeSystem,\n startOn,\n endOn\n });\n } else {\n throw new Error(`Unrecognized strategy: '${strategy}'. Must be one of 'first' or 'last'.`);\n }\n });\n return _trimMessagesHelper2.apply(this, arguments);\n}\nfunction _firstMaxTokens(_x3, _x4) {\n return _firstMaxTokens2.apply(this, arguments);\n}\nfunction _firstMaxTokens2() {\n _firstMaxTokens2 = _asyncToGenerator(function* (messages, options) {\n const {\n maxTokens,\n tokenCounter,\n textSplitter,\n partialStrategy,\n endOn\n } = options;\n let messagesCopy = [...messages];\n let idx = 0;\n for (let i = 0; i < messagesCopy.length; i += 1) {\n const remainingMessages = i > 0 ? messagesCopy.slice(0, -i) : messagesCopy;\n if ((yield tokenCounter(remainingMessages)) <= maxTokens) {\n idx = messagesCopy.length - i;\n break;\n }\n }\n if (idx < messagesCopy.length - 1 && partialStrategy) {\n let includedPartial = false;\n if (Array.isArray(messagesCopy[idx].content)) {\n const excluded = messagesCopy[idx];\n if (typeof excluded.content === \"string\") {\n throw new Error(\"Expected content to be an array.\");\n }\n const numBlock = excluded.content.length;\n const reversedContent = partialStrategy === \"last\" ? [...excluded.content].reverse() : excluded.content;\n for (let i = 1; i <= numBlock; i += 1) {\n const partialContent = partialStrategy === \"first\" ? reversedContent.slice(0, i) : reversedContent.slice(-i);\n const fields = Object.fromEntries(Object.entries(excluded).filter(([k]) => k !== \"type\" && !k.startsWith(\"lc_\")));\n const updatedMessage = _switchTypeToMessage(excluded._getType(), {\n ...fields,\n content: partialContent\n });\n const slicedMessages = [...messagesCopy.slice(0, idx), updatedMessage];\n if ((yield tokenCounter(slicedMessages)) <= maxTokens) {\n messagesCopy = slicedMessages;\n idx += 1;\n includedPartial = true;\n } else {\n break;\n }\n }\n if (includedPartial && partialStrategy === \"last\") {\n excluded.content = [...reversedContent].reverse();\n }\n }\n if (!includedPartial) {\n const excluded = messagesCopy[idx];\n let text;\n if (Array.isArray(excluded.content) && excluded.content.some(block => typeof block === \"string\" || block.type === \"text\")) {\n const textBlock = excluded.content.find(block => block.type === \"text\" && block.text);\n text = textBlock === null || textBlock === void 0 ? void 0 : textBlock.text;\n } else if (typeof excluded.content === \"string\") {\n text = excluded.content;\n }\n if (text) {\n const splitTexts = yield textSplitter(text);\n const numSplits = splitTexts.length;\n if (partialStrategy === \"last\") {\n splitTexts.reverse();\n }\n for (let _ = 0; _ < numSplits - 1; _ += 1) {\n splitTexts.pop();\n excluded.content = splitTexts.join(\"\");\n if ((yield tokenCounter([...messagesCopy.slice(0, idx), excluded])) <= maxTokens) {\n if (partialStrategy === \"last\") {\n excluded.content = [...splitTexts].reverse().join(\"\");\n }\n messagesCopy = [...messagesCopy.slice(0, idx), excluded];\n idx += 1;\n break;\n }\n }\n }\n }\n }\n if (endOn) {\n const endOnArr = Array.isArray(endOn) ? endOn : [endOn];\n while (idx > 0 && !_isMessageType(messagesCopy[idx - 1], endOnArr)) {\n idx -= 1;\n }\n }\n return messagesCopy.slice(0, idx);\n });\n return _firstMaxTokens2.apply(this, arguments);\n}\nfunction _lastMaxTokens(_x5, _x6) {\n return _lastMaxTokens2.apply(this, arguments);\n}\nfunction _lastMaxTokens2() {\n _lastMaxTokens2 = _asyncToGenerator(function* (messages, options) {\n const {\n allowPartial = false,\n includeSystem = false,\n endOn,\n startOn,\n ...rest\n } = options;\n if (endOn) {\n const endOnArr = Array.isArray(endOn) ? endOn : [endOn];\n while (messages && !_isMessageType(messages[messages.length - 1], endOnArr)) {\n messages.pop();\n }\n }\n const swappedSystem = includeSystem && messages[0]._getType() === \"system\";\n let reversed_ = swappedSystem ? messages.slice(0, 1).concat(messages.slice(1).reverse()) : messages.reverse();\n reversed_ = yield _firstMaxTokens(reversed_, {\n ...rest,\n partialStrategy: allowPartial ? \"last\" : undefined,\n endOn: startOn\n });\n if (swappedSystem) {\n return [reversed_[0], ...reversed_.slice(1).reverse()];\n } else {\n return reversed_.reverse();\n }\n });\n return _lastMaxTokens2.apply(this, arguments);\n}\nconst _MSG_CHUNK_MAP = {\n human: {\n message: HumanMessage,\n messageChunk: HumanMessageChunk\n },\n ai: {\n message: AIMessage,\n messageChunk: AIMessageChunk\n },\n system: {\n message: SystemMessage,\n messageChunk: SystemMessageChunk\n },\n tool: {\n message: ToolMessage,\n messageChunk: ToolMessageChunk\n },\n function: {\n message: FunctionMessage,\n messageChunk: FunctionMessageChunk\n },\n generic: {\n message: ChatMessage,\n messageChunk: ChatMessageChunk\n },\n remove: {\n message: RemoveMessage,\n messageChunk: RemoveMessage // RemoveMessage does not have a chunk class.\n }\n};\nfunction _switchTypeToMessage(messageType, fields, returnChunk) {\n let chunk;\n let msg;\n switch (messageType) {\n case \"human\":\n if (returnChunk) {\n chunk = new HumanMessageChunk(fields);\n } else {\n msg = new HumanMessage(fields);\n }\n break;\n case \"ai\":\n if (returnChunk) {\n let aiChunkFields = {\n ...fields\n };\n if (\"tool_calls\" in aiChunkFields) {\n var _aiChunkFields$tool_c;\n aiChunkFields = {\n ...aiChunkFields,\n tool_call_chunks: (_aiChunkFields$tool_c = aiChunkFields.tool_calls) === null || _aiChunkFields$tool_c === void 0 ? void 0 : _aiChunkFields$tool_c.map(tc => ({\n ...tc,\n type: \"tool_call_chunk\",\n index: undefined,\n args: JSON.stringify(tc.args)\n }))\n };\n }\n chunk = new AIMessageChunk(aiChunkFields);\n } else {\n msg = new AIMessage(fields);\n }\n break;\n case \"system\":\n if (returnChunk) {\n chunk = new SystemMessageChunk(fields);\n } else {\n msg = new SystemMessage(fields);\n }\n break;\n case \"tool\":\n if (\"tool_call_id\" in fields) {\n if (returnChunk) {\n chunk = new ToolMessageChunk(fields);\n } else {\n msg = new ToolMessage(fields);\n }\n } else {\n throw new Error(\"Can not convert ToolMessage to ToolMessageChunk if 'tool_call_id' field is not defined.\");\n }\n break;\n case \"function\":\n if (returnChunk) {\n chunk = new FunctionMessageChunk(fields);\n } else {\n if (!fields.name) {\n throw new Error(\"FunctionMessage must have a 'name' field\");\n }\n msg = new FunctionMessage(fields);\n }\n break;\n case \"generic\":\n if (\"role\" in fields) {\n if (returnChunk) {\n chunk = new ChatMessageChunk(fields);\n } else {\n msg = new ChatMessage(fields);\n }\n } else {\n throw new Error(\"Can not convert ChatMessage to ChatMessageChunk if 'role' field is not defined.\");\n }\n break;\n default:\n throw new Error(`Unrecognized message type ${messageType}`);\n }\n if (returnChunk && chunk) {\n return chunk;\n }\n if (msg) {\n return msg;\n }\n throw new Error(`Unrecognized message type ${messageType}`);\n}\nfunction _chunkToMsg(chunk) {\n const chunkType = chunk._getType();\n let msg;\n const fields = Object.fromEntries(Object.entries(chunk).filter(([k]) => ![\"type\", \"tool_call_chunks\"].includes(k) && !k.startsWith(\"lc_\")));\n if (chunkType in _MSG_CHUNK_MAP) {\n msg = _switchTypeToMessage(chunkType, fields);\n }\n if (!msg) {\n throw new Error(`Unrecognized message chunk class ${chunkType}. Supported classes are ${Object.keys(_MSG_CHUNK_MAP)}`);\n }\n return msg;\n}\n/**\n * The default text splitter function that splits text by newlines.\n *\n * @param {string} text\n * @returns A promise that resolves to an array of strings split by newlines.\n */\nexport function defaultTextSplitter(text) {\n const splits = text.split(\"\\n\");\n return Promise.resolve([...splits.slice(0, -1).map(s => `${s}\\n`), splits[splits.length - 1]]);\n}","map":{"version":3,"names":["RunnableLambda","AIMessage","AIMessageChunk","ChatMessage","ChatMessageChunk","FunctionMessage","FunctionMessageChunk","HumanMessage","HumanMessageChunk","RemoveMessage","SystemMessage","SystemMessageChunk","ToolMessage","ToolMessageChunk","convertToChunk","_isMessageType","msg","types","typesAsStrings","Set","map","t","instantiatedMsgClass","_getType","Error","msgType","some","filterMessages","messagesOrOptions","options","Array","isArray","_filterMessages","from","input","messages","includeNames","excludeNames","includeTypes","excludeTypes","includeIds","excludeIds","filtered","name","includes","id","push","iName","mergeMessageRuns","_mergeMessageRuns","length","merged","curr","last","pop","lastChunk","currChunk","mergedChunks","concat","content","_chunkToMsg","trimMessages","_trimMessagesHelper","trimmerOptions","_x","_x2","_trimMessagesHelper2","apply","arguments","_asyncToGenerator","maxTokens","tokenCounter","strategy","allowPartial","endOn","startOn","includeSystem","textSplitter","listTokenCounter","_ref","msgs","tokenCounts","Promise","all","getNumTokens","reduce","sum","count","_x7","_ref2","_x8","textSplitterFunc","defaultTextSplitter","splitText","_ref3","text","_x9","_firstMaxTokens","partialStrategy","undefined","_lastMaxTokens","_x3","_x4","_firstMaxTokens2","messagesCopy","idx","i","remainingMessages","slice","includedPartial","excluded","numBlock","reversedContent","reverse","partialContent","fields","Object","fromEntries","entries","filter","k","startsWith","updatedMessage","_switchTypeToMessage","slicedMessages","block","type","textBlock","find","splitTexts","numSplits","_","join","endOnArr","_x5","_x6","_lastMaxTokens2","rest","swappedSystem","reversed_","_MSG_CHUNK_MAP","human","message","messageChunk","ai","system","tool","function","generic","remove","messageType","returnChunk","chunk","aiChunkFields","_aiChunkFields$tool_c","tool_call_chunks","tool_calls","tc","index","args","JSON","stringify","chunkType","keys","splits","split","resolve","s"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@langchain/core/dist/messages/transformers.js"],"sourcesContent":["import { RunnableLambda } from \"../runnables/base.js\";\nimport { AIMessage, AIMessageChunk } from \"./ai.js\";\nimport { ChatMessage, ChatMessageChunk, } from \"./chat.js\";\nimport { FunctionMessage, FunctionMessageChunk, } from \"./function.js\";\nimport { HumanMessage, HumanMessageChunk } from \"./human.js\";\nimport { RemoveMessage } from \"./modifier.js\";\nimport { SystemMessage, SystemMessageChunk } from \"./system.js\";\nimport { ToolMessage, ToolMessageChunk, } from \"./tool.js\";\nimport { convertToChunk } from \"./utils.js\";\nconst _isMessageType = (msg, types) => {\n const typesAsStrings = [\n ...new Set(types?.map((t) => {\n if (typeof t === \"string\") {\n return t;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const instantiatedMsgClass = new t({});\n if (!(\"_getType\" in instantiatedMsgClass) ||\n typeof instantiatedMsgClass._getType !== \"function\") {\n throw new Error(\"Invalid type provided.\");\n }\n return instantiatedMsgClass._getType();\n })),\n ];\n const msgType = msg._getType();\n return typesAsStrings.some((t) => t === msgType);\n};\nexport function filterMessages(messagesOrOptions, options) {\n if (Array.isArray(messagesOrOptions)) {\n return _filterMessages(messagesOrOptions, options);\n }\n return RunnableLambda.from((input) => {\n return _filterMessages(input, messagesOrOptions);\n });\n}\nfunction _filterMessages(messages, options = {}) {\n const { includeNames, excludeNames, includeTypes, excludeTypes, includeIds, excludeIds, } = options;\n const filtered = [];\n for (const msg of messages) {\n if (excludeNames && msg.name && excludeNames.includes(msg.name)) {\n continue;\n }\n else if (excludeTypes && _isMessageType(msg, excludeTypes)) {\n continue;\n }\n else if (excludeIds && msg.id && excludeIds.includes(msg.id)) {\n continue;\n }\n // default to inclusion when no inclusion criteria given.\n if (!(includeTypes || includeIds || includeNames)) {\n filtered.push(msg);\n }\n else if (includeNames &&\n msg.name &&\n includeNames.some((iName) => iName === msg.name)) {\n filtered.push(msg);\n }\n else if (includeTypes && _isMessageType(msg, includeTypes)) {\n filtered.push(msg);\n }\n else if (includeIds && msg.id && includeIds.some((id) => id === msg.id)) {\n filtered.push(msg);\n }\n }\n return filtered;\n}\nexport function mergeMessageRuns(messages) {\n if (Array.isArray(messages)) {\n return _mergeMessageRuns(messages);\n }\n return RunnableLambda.from(_mergeMessageRuns);\n}\nfunction _mergeMessageRuns(messages) {\n if (!messages.length) {\n return [];\n }\n const merged = [];\n for (const msg of messages) {\n const curr = msg; // Create a shallow copy of the message\n const last = merged.pop();\n if (!last) {\n merged.push(curr);\n }\n else if (curr._getType() === \"tool\" ||\n !(curr._getType() === last._getType())) {\n merged.push(last, curr);\n }\n else {\n const lastChunk = convertToChunk(last);\n const currChunk = convertToChunk(curr);\n const mergedChunks = lastChunk.concat(currChunk);\n if (typeof lastChunk.content === \"string\" &&\n typeof currChunk.content === \"string\") {\n mergedChunks.content = `${lastChunk.content}\\n${currChunk.content}`;\n }\n merged.push(_chunkToMsg(mergedChunks));\n }\n }\n return merged;\n}\nexport function trimMessages(messagesOrOptions, options) {\n if (Array.isArray(messagesOrOptions)) {\n const messages = messagesOrOptions;\n if (!options) {\n throw new Error(\"Options parameter is required when providing messages.\");\n }\n return _trimMessagesHelper(messages, options);\n }\n else {\n const trimmerOptions = messagesOrOptions;\n return RunnableLambda.from((input) => _trimMessagesHelper(input, trimmerOptions));\n }\n}\nasync function _trimMessagesHelper(messages, options) {\n const { maxTokens, tokenCounter, strategy = \"last\", allowPartial = false, endOn, startOn, includeSystem = false, textSplitter, } = options;\n if (startOn && strategy === \"first\") {\n throw new Error(\"`startOn` should only be specified if `strategy` is 'last'.\");\n }\n if (includeSystem && strategy === \"first\") {\n throw new Error(\"`includeSystem` should only be specified if `strategy` is 'last'.\");\n }\n let listTokenCounter;\n if (\"getNumTokens\" in tokenCounter) {\n listTokenCounter = async (msgs) => {\n const tokenCounts = await Promise.all(msgs.map((msg) => tokenCounter.getNumTokens(msg.content)));\n return tokenCounts.reduce((sum, count) => sum + count, 0);\n };\n }\n else {\n listTokenCounter = async (msgs) => tokenCounter(msgs);\n }\n let textSplitterFunc = defaultTextSplitter;\n if (textSplitter) {\n if (\"splitText\" in textSplitter) {\n textSplitterFunc = textSplitter.splitText;\n }\n else {\n textSplitterFunc = async (text) => textSplitter(text);\n }\n }\n if (strategy === \"first\") {\n return _firstMaxTokens(messages, {\n maxTokens,\n tokenCounter: listTokenCounter,\n textSplitter: textSplitterFunc,\n partialStrategy: allowPartial ? \"first\" : undefined,\n endOn,\n });\n }\n else if (strategy === \"last\") {\n return _lastMaxTokens(messages, {\n maxTokens,\n tokenCounter: listTokenCounter,\n textSplitter: textSplitterFunc,\n allowPartial,\n includeSystem,\n startOn,\n endOn,\n });\n }\n else {\n throw new Error(`Unrecognized strategy: '${strategy}'. Must be one of 'first' or 'last'.`);\n }\n}\nasync function _firstMaxTokens(messages, options) {\n const { maxTokens, tokenCounter, textSplitter, partialStrategy, endOn } = options;\n let messagesCopy = [...messages];\n let idx = 0;\n for (let i = 0; i < messagesCopy.length; i += 1) {\n const remainingMessages = i > 0 ? messagesCopy.slice(0, -i) : messagesCopy;\n if ((await tokenCounter(remainingMessages)) <= maxTokens) {\n idx = messagesCopy.length - i;\n break;\n }\n }\n if (idx < messagesCopy.length - 1 && partialStrategy) {\n let includedPartial = false;\n if (Array.isArray(messagesCopy[idx].content)) {\n const excluded = messagesCopy[idx];\n if (typeof excluded.content === \"string\") {\n throw new Error(\"Expected content to be an array.\");\n }\n const numBlock = excluded.content.length;\n const reversedContent = partialStrategy === \"last\"\n ? [...excluded.content].reverse()\n : excluded.content;\n for (let i = 1; i <= numBlock; i += 1) {\n const partialContent = partialStrategy === \"first\"\n ? reversedContent.slice(0, i)\n : reversedContent.slice(-i);\n const fields = Object.fromEntries(Object.entries(excluded).filter(([k]) => k !== \"type\" && !k.startsWith(\"lc_\")));\n const updatedMessage = _switchTypeToMessage(excluded._getType(), {\n ...fields,\n content: partialContent,\n });\n const slicedMessages = [...messagesCopy.slice(0, idx), updatedMessage];\n if ((await tokenCounter(slicedMessages)) <= maxTokens) {\n messagesCopy = slicedMessages;\n idx += 1;\n includedPartial = true;\n }\n else {\n break;\n }\n }\n if (includedPartial && partialStrategy === \"last\") {\n excluded.content = [...reversedContent].reverse();\n }\n }\n if (!includedPartial) {\n const excluded = messagesCopy[idx];\n let text;\n if (Array.isArray(excluded.content) &&\n excluded.content.some((block) => typeof block === \"string\" || block.type === \"text\")) {\n const textBlock = excluded.content.find((block) => block.type === \"text\" && block.text);\n text = textBlock?.text;\n }\n else if (typeof excluded.content === \"string\") {\n text = excluded.content;\n }\n if (text) {\n const splitTexts = await textSplitter(text);\n const numSplits = splitTexts.length;\n if (partialStrategy === \"last\") {\n splitTexts.reverse();\n }\n for (let _ = 0; _ < numSplits - 1; _ += 1) {\n splitTexts.pop();\n excluded.content = splitTexts.join(\"\");\n if ((await tokenCounter([...messagesCopy.slice(0, idx), excluded])) <=\n maxTokens) {\n if (partialStrategy === \"last\") {\n excluded.content = [...splitTexts].reverse().join(\"\");\n }\n messagesCopy = [...messagesCopy.slice(0, idx), excluded];\n idx += 1;\n break;\n }\n }\n }\n }\n }\n if (endOn) {\n const endOnArr = Array.isArray(endOn) ? endOn : [endOn];\n while (idx > 0 && !_isMessageType(messagesCopy[idx - 1], endOnArr)) {\n idx -= 1;\n }\n }\n return messagesCopy.slice(0, idx);\n}\nasync function _lastMaxTokens(messages, options) {\n const { allowPartial = false, includeSystem = false, endOn, startOn, ...rest } = options;\n if (endOn) {\n const endOnArr = Array.isArray(endOn) ? endOn : [endOn];\n while (messages &&\n !_isMessageType(messages[messages.length - 1], endOnArr)) {\n messages.pop();\n }\n }\n const swappedSystem = includeSystem && messages[0]._getType() === \"system\";\n let reversed_ = swappedSystem\n ? messages.slice(0, 1).concat(messages.slice(1).reverse())\n : messages.reverse();\n reversed_ = await _firstMaxTokens(reversed_, {\n ...rest,\n partialStrategy: allowPartial ? \"last\" : undefined,\n endOn: startOn,\n });\n if (swappedSystem) {\n return [reversed_[0], ...reversed_.slice(1).reverse()];\n }\n else {\n return reversed_.reverse();\n }\n}\nconst _MSG_CHUNK_MAP = {\n human: {\n message: HumanMessage,\n messageChunk: HumanMessageChunk,\n },\n ai: {\n message: AIMessage,\n messageChunk: AIMessageChunk,\n },\n system: {\n message: SystemMessage,\n messageChunk: SystemMessageChunk,\n },\n tool: {\n message: ToolMessage,\n messageChunk: ToolMessageChunk,\n },\n function: {\n message: FunctionMessage,\n messageChunk: FunctionMessageChunk,\n },\n generic: {\n message: ChatMessage,\n messageChunk: ChatMessageChunk,\n },\n remove: {\n message: RemoveMessage,\n messageChunk: RemoveMessage, // RemoveMessage does not have a chunk class.\n },\n};\nfunction _switchTypeToMessage(messageType, fields, returnChunk) {\n let chunk;\n let msg;\n switch (messageType) {\n case \"human\":\n if (returnChunk) {\n chunk = new HumanMessageChunk(fields);\n }\n else {\n msg = new HumanMessage(fields);\n }\n break;\n case \"ai\":\n if (returnChunk) {\n let aiChunkFields = {\n ...fields,\n };\n if (\"tool_calls\" in aiChunkFields) {\n aiChunkFields = {\n ...aiChunkFields,\n tool_call_chunks: aiChunkFields.tool_calls?.map((tc) => ({\n ...tc,\n type: \"tool_call_chunk\",\n index: undefined,\n args: JSON.stringify(tc.args),\n })),\n };\n }\n chunk = new AIMessageChunk(aiChunkFields);\n }\n else {\n msg = new AIMessage(fields);\n }\n break;\n case \"system\":\n if (returnChunk) {\n chunk = new SystemMessageChunk(fields);\n }\n else {\n msg = new SystemMessage(fields);\n }\n break;\n case \"tool\":\n if (\"tool_call_id\" in fields) {\n if (returnChunk) {\n chunk = new ToolMessageChunk(fields);\n }\n else {\n msg = new ToolMessage(fields);\n }\n }\n else {\n throw new Error(\"Can not convert ToolMessage to ToolMessageChunk if 'tool_call_id' field is not defined.\");\n }\n break;\n case \"function\":\n if (returnChunk) {\n chunk = new FunctionMessageChunk(fields);\n }\n else {\n if (!fields.name) {\n throw new Error(\"FunctionMessage must have a 'name' field\");\n }\n msg = new FunctionMessage(fields);\n }\n break;\n case \"generic\":\n if (\"role\" in fields) {\n if (returnChunk) {\n chunk = new ChatMessageChunk(fields);\n }\n else {\n msg = new ChatMessage(fields);\n }\n }\n else {\n throw new Error(\"Can not convert ChatMessage to ChatMessageChunk if 'role' field is not defined.\");\n }\n break;\n default:\n throw new Error(`Unrecognized message type ${messageType}`);\n }\n if (returnChunk && chunk) {\n return chunk;\n }\n if (msg) {\n return msg;\n }\n throw new Error(`Unrecognized message type ${messageType}`);\n}\nfunction _chunkToMsg(chunk) {\n const chunkType = chunk._getType();\n let msg;\n const fields = Object.fromEntries(Object.entries(chunk).filter(([k]) => ![\"type\", \"tool_call_chunks\"].includes(k) && !k.startsWith(\"lc_\")));\n if (chunkType in _MSG_CHUNK_MAP) {\n msg = _switchTypeToMessage(chunkType, fields);\n }\n if (!msg) {\n throw new Error(`Unrecognized message chunk class ${chunkType}. Supported classes are ${Object.keys(_MSG_CHUNK_MAP)}`);\n }\n return msg;\n}\n/**\n * The default text splitter function that splits text by newlines.\n *\n * @param {string} text\n * @returns A promise that resolves to an array of strings split by newlines.\n */\nexport function defaultTextSplitter(text) {\n const splits = text.split(\"\\n\");\n return Promise.resolve([\n ...splits.slice(0, -1).map((s) => `${s}\\n`),\n splits[splits.length - 1],\n ]);\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}