langgraph-ui-components 0.0.7 → 0.0.8
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/dist/index.es100.js +25 -157
- package/dist/index.es100.js.map +1 -1
- package/dist/index.es101.js +3130 -176
- package/dist/index.es101.js.map +1 -1
- package/dist/index.es102.js +36 -13
- package/dist/index.es102.js.map +1 -1
- package/dist/index.es103.js +5 -30
- package/dist/index.es103.js.map +1 -1
- package/dist/index.es104.js +69 -30
- package/dist/index.es104.js.map +1 -1
- package/dist/index.es105.js +28 -3148
- package/dist/index.es105.js.map +1 -1
- package/dist/index.es106.js +5 -16
- package/dist/index.es106.js.map +1 -1
- package/dist/index.es107.js +2 -7
- package/dist/index.es107.js.map +1 -1
- package/dist/index.es108.js +13 -2
- package/dist/index.es108.js.map +1 -1
- package/dist/index.es109.js +499 -9
- package/dist/index.es109.js.map +1 -1
- package/dist/index.es11.js +2 -2
- package/dist/index.es11.js.map +1 -1
- package/dist/index.es110.js +5 -501
- package/dist/index.es110.js.map +1 -1
- package/dist/index.es111.js +2 -7
- package/dist/index.es111.js.map +1 -1
- package/dist/index.es112.js +148 -2
- package/dist/index.es112.js.map +1 -1
- package/dist/index.es113.js +878 -118
- package/dist/index.es113.js.map +1 -1
- package/dist/index.es114.js +251 -877
- package/dist/index.es114.js.map +1 -1
- package/dist/index.es115.js +3 -281
- package/dist/index.es115.js.map +1 -1
- package/dist/index.es116.js +445 -3
- package/dist/index.es116.js.map +1 -1
- package/dist/index.es117.js +39 -437
- package/dist/index.es117.js.map +1 -1
- package/dist/index.es118.js +22 -46
- package/dist/index.es118.js.map +1 -1
- package/dist/index.es119.js +78 -21
- package/dist/index.es119.js.map +1 -1
- package/dist/index.es120.js +126 -76
- package/dist/index.es120.js.map +1 -1
- package/dist/index.es121.js +45 -125
- package/dist/index.es121.js.map +1 -1
- package/dist/index.es122.js +9 -48
- package/dist/index.es122.js.map +1 -1
- package/dist/index.es123.js +45 -10
- package/dist/index.es123.js.map +1 -1
- package/dist/index.es124.js +97 -43
- package/dist/index.es124.js.map +1 -1
- package/dist/index.es125.js +48 -94
- package/dist/index.es125.js.map +1 -1
- package/dist/index.es126.js +14 -51
- package/dist/index.es126.js.map +1 -1
- package/dist/index.es127.js +13 -162
- package/dist/index.es127.js.map +1 -1
- package/dist/index.es128.js +89 -2
- package/dist/index.es128.js.map +1 -1
- package/dist/index.es129.js +2 -15
- package/dist/index.es129.js.map +1 -1
- package/dist/index.es130.js +54 -87
- package/dist/index.es130.js.map +1 -1
- package/dist/index.es131.js +100 -2
- package/dist/index.es131.js.map +1 -1
- package/dist/index.es132.js +186 -51
- package/dist/index.es132.js.map +1 -1
- package/dist/index.es133.js +97 -87
- package/dist/index.es133.js.map +1 -1
- package/dist/index.es134.js +31 -187
- package/dist/index.es134.js.map +1 -1
- package/dist/index.es135.js +10 -110
- package/dist/index.es135.js.map +1 -1
- package/dist/index.es136.js +11 -35
- package/dist/index.es136.js.map +1 -1
- package/dist/index.es137.js +12 -10
- package/dist/index.es137.js.map +1 -1
- package/dist/index.es138.js +90 -10
- package/dist/index.es138.js.map +1 -1
- package/dist/index.es139.js +274 -11
- package/dist/index.es139.js.map +1 -1
- package/dist/index.es140.js +2 -91
- package/dist/index.es140.js.map +1 -1
- package/dist/index.es141.js +150 -261
- package/dist/index.es141.js.map +1 -1
- package/dist/index.es142.js +51 -2
- package/dist/index.es142.js.map +1 -1
- package/dist/index.es143.js +34 -158
- package/dist/index.es143.js.map +1 -1
- package/dist/index.es144.js +34 -50
- package/dist/index.es144.js.map +1 -1
- package/dist/index.es145.js +32 -32
- package/dist/index.es145.js.map +1 -1
- package/dist/index.es146.js +23 -34
- package/dist/index.es146.js.map +1 -1
- package/dist/index.es147.js +583 -32
- package/dist/index.es147.js.map +1 -1
- package/dist/index.es148.js +121 -20
- package/dist/index.es148.js.map +1 -1
- package/dist/index.es149.js +158 -585
- package/dist/index.es149.js.map +1 -1
- package/dist/index.es15.js +15 -15
- package/dist/index.es150.js +2 -125
- package/dist/index.es150.js.map +1 -1
- package/dist/index.es157.js +2 -2
- package/dist/index.es159.js +2 -2
- package/dist/index.es161.js +64 -25
- package/dist/index.es161.js.map +1 -1
- package/dist/index.es162.js +22 -12
- package/dist/index.es162.js.map +1 -1
- package/dist/index.es163.js +5 -53
- package/dist/index.es163.js.map +1 -1
- package/dist/index.es164.js +337 -52
- package/dist/index.es164.js.map +1 -1
- package/dist/index.es165.js +24 -21
- package/dist/index.es165.js.map +1 -1
- package/dist/index.es166.js +12 -6
- package/dist/index.es166.js.map +1 -1
- package/dist/index.es167.js +49 -344
- package/dist/index.es167.js.map +1 -1
- package/dist/index.es175.js +1 -1
- package/dist/index.es178.js +1 -1
- package/dist/index.es183.js +1 -1
- package/dist/index.es195.js +2 -2
- package/dist/index.es197.js +2 -2
- package/dist/index.es200.js +1 -1
- package/dist/index.es201.js +1 -1
- package/dist/index.es203.js +1 -1
- package/dist/index.es204.js +2 -2
- package/dist/index.es206.js +1 -1
- package/dist/index.es209.js +3 -3
- package/dist/index.es21.js +1 -1
- package/dist/index.es210.js +2 -2
- package/dist/index.es212.js +1 -1
- package/dist/index.es214.js +1 -1
- package/dist/index.es215.js +1 -1
- package/dist/index.es217.js +1 -1
- package/dist/index.es218.js +2 -2
- package/dist/index.es219.js +1 -1
- package/dist/index.es220.js +1 -1
- package/dist/index.es221.js +1 -1
- package/dist/index.es222.js +1 -1
- package/dist/index.es223.js +1 -1
- package/dist/index.es224.js +1 -1
- package/dist/index.es225.js +1 -1
- package/dist/index.es229.js +2 -2
- package/dist/index.es28.js +7 -7
- package/dist/index.es29.js +1 -1
- package/dist/index.es32.js +4 -4
- package/dist/index.es33.js +15 -1191
- package/dist/index.es33.js.map +1 -1
- package/dist/index.es34.js +117 -6
- package/dist/index.es34.js.map +1 -1
- package/dist/index.es35.js +70 -8
- package/dist/index.es35.js.map +1 -1
- package/dist/index.es36.js +19 -148
- package/dist/index.es36.js.map +1 -1
- package/dist/index.es37.js +255 -112
- package/dist/index.es37.js.map +1 -1
- package/dist/index.es38.js +40 -68
- package/dist/index.es38.js.map +1 -1
- package/dist/index.es39.js +214 -17
- package/dist/index.es39.js.map +1 -1
- package/dist/index.es40.js +53 -247
- package/dist/index.es40.js.map +1 -1
- package/dist/index.es41.js +123 -24
- package/dist/index.es41.js.map +1 -1
- package/dist/index.es42.js +14 -205
- package/dist/index.es42.js.map +1 -1
- package/dist/index.es43.js +221 -58
- package/dist/index.es43.js.map +1 -1
- package/dist/index.es44.js +7 -140
- package/dist/index.es44.js.map +1 -1
- package/dist/index.es45.js +1185 -17
- package/dist/index.es45.js.map +1 -1
- package/dist/index.es46.js +6 -229
- package/dist/index.es46.js.map +1 -1
- package/dist/index.es47.js +146 -15
- package/dist/index.es47.js.map +1 -1
- package/dist/index.es49.js +7 -90
- package/dist/index.es49.js.map +1 -1
- package/dist/index.es50.js +92 -6
- package/dist/index.es50.js.map +1 -1
- package/dist/index.es51.js +3 -14
- package/dist/index.es51.js.map +1 -1
- package/dist/index.es52.js +36 -8
- package/dist/index.es52.js.map +1 -1
- package/dist/index.es53.js +61 -83
- package/dist/index.es53.js.map +1 -1
- package/dist/index.es54.js +37 -3
- package/dist/index.es54.js.map +1 -1
- package/dist/index.es55.js +304 -34
- package/dist/index.es55.js.map +1 -1
- package/dist/index.es56.js +9 -72
- package/dist/index.es56.js.map +1 -1
- package/dist/index.es57.js +85 -32
- package/dist/index.es57.js.map +1 -1
- package/dist/index.es58.js +6 -304
- package/dist/index.es58.js.map +1 -1
- package/dist/index.es59.js +15 -9
- package/dist/index.es59.js.map +1 -1
- package/dist/index.es60.js +142 -5
- package/dist/index.es60.js.map +1 -1
- package/dist/index.es61.js +285 -148
- package/dist/index.es61.js.map +1 -1
- package/dist/index.es62.js +62 -668
- package/dist/index.es62.js.map +1 -1
- package/dist/index.es63.js +201 -131
- package/dist/index.es63.js.map +1 -1
- package/dist/index.es64.js +29 -295
- package/dist/index.es64.js.map +1 -1
- package/dist/index.es65.js +8 -65
- package/dist/index.es65.js.map +1 -1
- package/dist/index.es66.js +9 -210
- package/dist/index.es66.js.map +1 -1
- package/dist/index.es67.js +181 -28
- package/dist/index.es67.js.map +1 -1
- package/dist/index.es68.js +23 -8
- package/dist/index.es68.js.map +1 -1
- package/dist/index.es69.js +1397 -9
- package/dist/index.es69.js.map +1 -1
- package/dist/index.es70.js +9 -187
- package/dist/index.es70.js.map +1 -1
- package/dist/index.es71.js +8 -24
- package/dist/index.es71.js.map +1 -1
- package/dist/index.es72.js +5 -1399
- package/dist/index.es72.js.map +1 -1
- package/dist/index.es73.js +163 -9
- package/dist/index.es73.js.map +1 -1
- package/dist/index.es74.js +672 -8
- package/dist/index.es74.js.map +1 -1
- package/dist/index.es75.js +11 -36
- package/dist/index.es75.js.map +1 -1
- package/dist/index.es76.js +40 -5
- package/dist/index.es76.js.map +1 -1
- package/dist/index.es77.js +32 -71
- package/dist/index.es77.js.map +1 -1
- package/dist/index.es78.js +225 -30
- package/dist/index.es78.js.map +1 -1
- package/dist/index.es79.js +29 -11
- package/dist/index.es79.js.map +1 -1
- package/dist/index.es80.js +72 -37
- package/dist/index.es80.js.map +1 -1
- package/dist/index.es81.js +74 -32
- package/dist/index.es81.js.map +1 -1
- package/dist/index.es82.js +46 -226
- package/dist/index.es82.js.map +1 -1
- package/dist/index.es83.js +6 -6
- package/dist/index.es83.js.map +1 -1
- package/dist/index.es84.js +39 -71
- package/dist/index.es84.js.map +1 -1
- package/dist/index.es85.js +54 -73
- package/dist/index.es85.js.map +1 -1
- package/dist/index.es86.js +13 -52
- package/dist/index.es86.js.map +1 -1
- package/dist/index.es87.js +135 -28
- package/dist/index.es87.js.map +1 -1
- package/dist/index.es88.js +20 -42
- package/dist/index.es88.js.map +1 -1
- package/dist/index.es89.js +175 -50
- package/dist/index.es89.js.map +1 -1
- package/dist/index.es90.js +240 -12
- package/dist/index.es90.js.map +1 -1
- package/dist/index.es91.js +348 -130
- package/dist/index.es91.js.map +1 -1
- package/dist/index.es92.js +134 -18
- package/dist/index.es92.js.map +1 -1
- package/dist/index.es93.js +62 -174
- package/dist/index.es93.js.map +1 -1
- package/dist/index.es94.js +30 -234
- package/dist/index.es94.js.map +1 -1
- package/dist/index.es95.js +26 -344
- package/dist/index.es95.js.map +1 -1
- package/dist/index.es96.js +156 -127
- package/dist/index.es96.js.map +1 -1
- package/dist/index.es97.js +196 -63
- package/dist/index.es97.js.map +1 -1
- package/dist/index.es98.js +14 -37
- package/dist/index.es98.js.map +1 -1
- package/dist/index.es99.js +27 -34
- package/dist/index.es99.js.map +1 -1
- package/package.json +1 -1
package/dist/index.es11.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es11.js","sources":["../src/components/ChatBody.tsx"],"sourcesContent":["import { useStreamContext } from \"@/providers/Stream\";\nimport { logger } from \"@/utils/logger\";\nimport { isAiWithToolCalls, isToolMessage } from \"@/utils/utils\";\nimport React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from \"react\";\nimport AgentMessage from \"./messages/AgentMessage\";\nimport CustomComponentRender from \"./messages/CustomComponentRender\";\nimport HumanMessage from \"./messages/HumanMessage\";\nimport Thinking from \"./Thinking\";\nimport ToolCallFunctions from \"./ToolCallFunctions\";\n\nexport default function ChatBody({ setIsFirstMessage, enableToolCallIndicator }: { setIsFirstMessage?: React.Dispatch<React.SetStateAction<boolean>>, enableToolCallIndicator?: boolean }) {\n const stream = useStreamContext();\n const messages = stream.messages;\n const isLoading = stream.isLoading;\n\n logger.debug(\"ChatBody render - messages count:\", messages, \"isLoading:\", isLoading);\n\n // Memoize messages with stable reference\n const memoMessages = useMemo(() => messages ?? [], [messages]);\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n const prevMessageCountRef = useRef(0);\n const shouldAutoScrollRef = useRef(true);\n\n // Get the parent scroll container\n const getScrollContainer = useCallback(() => {\n if (containerRef.current) {\n // Find the parent with overflow-y-auto class\n let parent = containerRef.current.parentElement;\n while (parent) {\n const style = window.getComputedStyle(parent);\n if (style.overflowY === 'auto' || style.overflowY === 'scroll') {\n return parent;\n }\n parent = parent.parentElement;\n }\n }\n return null;\n }, []);\n\n useEffect(() => {\n if (memoMessages.length > 0 && setIsFirstMessage) {\n setIsFirstMessage(false);\n }\n }, [memoMessages.length, setIsFirstMessage]);\n\n // Memoize message rendering logic to prevent unnecessary re-renders\n const renderMessage = useCallback((msg: typeof messages[0], index: number, messagesArray: typeof messages) => {\n if (!msg.content.length) return null;\n\n if (msg.additional_kwargs?.hidden) {\n return null;\n }\n\n // Use message id or fallback to index for key\n const msgKey = msg.id ?? `msg-${index}`;\n\n if (msg.type === \"human\") {\n return <HumanMessage key={msgKey} message={msg} />;\n }\n\n // Skip standalone tool messages\n if (isToolMessage(msg)) {\n return null;\n }\n\n // Skip if this AI message was already combined with a previous one\n if (msg.type === \"ai\" && index > 0) {\n // Check if previous non-tool message is also an AI message\n let prevIndex = index - 1;\n while (prevIndex >= 0 && isToolMessage(messagesArray[prevIndex])) {\n prevIndex--;\n }\n \n if (prevIndex >= 0 && messagesArray[prevIndex].type === \"ai\") {\n // This is a consecutive AI message, skip it (it will be combined with the previous one)\n return null;\n }\n }\n\n // Collect all consecutive AI messages and tool messages\n const groupedMessages = [msg];\n const toolMessages = [];\n let nextIndex = index + 1;\n \n while (nextIndex < messagesArray.length) {\n const nextMsg = messagesArray[nextIndex];\n \n if (isToolMessage(nextMsg)) {\n toolMessages.push(nextMsg);\n nextIndex++;\n } else if (nextMsg.type === \"ai\") {\n // Combine consecutive AI messages\n groupedMessages.push(nextMsg);\n nextIndex++;\n } else {\n // Stop at human messages or other types\n break;\n }\n }\n\n // Combine content from all AI messages\n const combinedContent = groupedMessages\n .map(m => {\n if (typeof m.content === \"string\") return m.content;\n if (Array.isArray(m.content)) {\n return m.content\n .map((c: any) => c.type === \"text\" ? c.text : \"\")\n .filter(Boolean)\n .join(\" \");\n }\n return \"\";\n })\n .filter(Boolean)\n .join(\"\\n\\n\");\n\n // Create a combined message object\n const combinedMessage = {\n ...msg,\n content: combinedContent,\n };\n\n const isLastMessageGroup = nextIndex >= messagesArray.length;\n const isStreamingThisMessage = isLoading && isLastMessageGroup;\n\n // Check if the first message in the group has tool calls\n const hasToolCalls = isAiWithToolCalls(msg);\n\n return (\n <React.Fragment key={msgKey}>\n {/* 1. Thinking indicator - only show if tool messages exist */}\n {toolMessages.length > 0 && enableToolCallIndicator && hasToolCalls && (\n <ToolCallFunctions\n title=\"Agent Thinking\"\n toolMessages={toolMessages}\n />\n )}\n {/* 2. Agent message (combined content) */}\n {combinedContent && (\n <AgentMessage\n message={combinedMessage}\n isStreaming={isStreamingThisMessage}\n />\n )}\n {/* 3. Custom component (from all messages in the group) */}\n {groupedMessages.map((m) => (\n <CustomComponentRender key={m.id} message={m} thread={stream} />\n ))}\n </React.Fragment>\n );\n }, [isLoading, stream, enableToolCallIndicator]);\n\n // Memoize the rendered messages array\n const renderedMessages = useMemo(() => {\n return memoMessages.map((msg, index) => {\n const element = renderMessage(msg, index, memoMessages);\n // Ensure every element has a key, using message id or fallback to index\n if (element && !element.key) {\n return React.cloneElement(element, { key: msg.id ?? `msg-${index}` });\n }\n return element;\n });\n }, [memoMessages, renderMessage]);\n\n // Track user scroll position to determine if we should auto-scroll\n useEffect(() => {\n const scrollContainer = getScrollContainer();\n if (!scrollContainer) return;\n\n const handleScroll = () => {\n const { scrollTop, scrollHeight, clientHeight } = scrollContainer;\n const distanceFromBottom = scrollHeight - scrollTop - clientHeight;\n // Consider \"at bottom\" if within 100px\n shouldAutoScrollRef.current = distanceFromBottom < 100;\n };\n\n scrollContainer.addEventListener('scroll', handleScroll);\n return () => scrollContainer.removeEventListener('scroll', handleScroll);\n }, [getScrollContainer]);\n\n // Auto-scroll when new messages are added\n useEffect(() => {\n const scrollContainer = getScrollContainer();\n if (!scrollContainer) return;\n\n const currentCount = memoMessages.length;\n const hasNewMessage = currentCount > prevMessageCountRef.current;\n\n if (hasNewMessage) {\n scrollContainer.scrollTop = scrollContainer.scrollHeight;\n shouldAutoScrollRef.current = true;\n }\n\n prevMessageCountRef.current = currentCount;\n }, [memoMessages, getScrollContainer]);\n\n // Use MutationObserver to detect DOM changes and auto-scroll during streaming\n useEffect(() => {\n const scrollContainer = getScrollContainer();\n if (!scrollContainer || !isLoading) return;\n\n const observer = new MutationObserver(() => {\n if (shouldAutoScrollRef.current && scrollContainer) {\n scrollContainer.scrollTop = scrollContainer.scrollHeight;\n }\n });\n\n // Observe the ChatBody container for changes\n if (containerRef.current) {\n observer.observe(containerRef.current, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n }\n\n return () => observer.disconnect();\n }, [isLoading, getScrollContainer]);\n\n // Use useLayoutEffect to scroll after DOM updates\n useLayoutEffect(() => {\n const scrollContainer = getScrollContainer();\n if (isLoading && shouldAutoScrollRef.current && scrollContainer) {\n scrollContainer.scrollTop = scrollContainer.scrollHeight;\n }\n });\n\n return (\n <div\n ref={containerRef}\n className=\"flex flex-col gap-4 rounded-4xl p-2\"\n >\n {memoMessages.length === 0 ? (\n <div className=\"flex items-center justify-center h-full text-zinc-500\">\n Start a conversation...\n </div>\n ) : (\n <>\n {renderedMessages}\n {/* Show thinking indicator when loading but no AI response yet */}\n {isLoading && memoMessages.length > 0 && memoMessages[memoMessages.length - 1].type === \"human\" && (\n <div className=\"flex items-center gap-2\">\n {/* Thinking<span className=\"animate-pulse\">...</span> */}\n <Thinking />\n </div>\n )}\n </>\n )}\n </div>\n );\n}\n"],"names":["React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es11.js","sources":["../src/components/ChatBody.tsx"],"sourcesContent":["import { useStreamContext } from \"@/providers/Stream\";\nimport { logger } from \"@/utils/logger\";\nimport { isAiWithToolCalls, isToolMessage } from \"@/utils/utils\";\nimport React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from \"react\";\nimport AgentMessage from \"./messages/AgentMessage\";\nimport CustomComponentRender from \"./messages/CustomComponentRender\";\nimport HumanMessage from \"./messages/HumanMessage\";\nimport Thinking from \"./Thinking\";\nimport ToolCallFunctions from \"./ToolCallFunctions\";\n\nexport default function ChatBody({ setIsFirstMessage, enableToolCallIndicator }: { setIsFirstMessage?: React.Dispatch<React.SetStateAction<boolean>>, enableToolCallIndicator?: boolean }) {\n const stream = useStreamContext();\n const messages = stream.messages;\n const isLoading = stream.isLoading;\n\n logger.debug(\"ChatBody render - messages count:\", messages, \"isLoading:\", isLoading);\n\n // Memoize messages with stable reference\n const memoMessages = useMemo(() => messages ?? [], [messages]);\n\n const containerRef = useRef<HTMLDivElement | null>(null);\n const prevMessageCountRef = useRef(0);\n const shouldAutoScrollRef = useRef(true);\n\n // Get the parent scroll container\n const getScrollContainer = useCallback(() => {\n if (containerRef.current) {\n // Find the parent with overflow-y-auto class\n let parent = containerRef.current.parentElement;\n while (parent) {\n const style = window.getComputedStyle(parent);\n if (style.overflowY === 'auto' || style.overflowY === 'scroll') {\n return parent;\n }\n parent = parent.parentElement;\n }\n }\n return null;\n }, []);\n\n useEffect(() => {\n if (memoMessages.length > 0 && setIsFirstMessage) {\n setIsFirstMessage(false);\n }\n }, [memoMessages.length, setIsFirstMessage]);\n\n // Memoize message rendering logic to prevent unnecessary re-renders\n const renderMessage = useCallback((msg: typeof messages[0], index: number, messagesArray: typeof messages) => {\n // Skip empty content messages UNLESS they have tool calls (which means tool messages will follow)\n if (!msg.content.length && !isAiWithToolCalls(msg)) return null;\n\n if (msg.additional_kwargs?.hidden) {\n return null;\n }\n\n // Use message id or fallback to index for key\n const msgKey = msg.id ?? `msg-${index}`;\n\n if (msg.type === \"human\") {\n return <HumanMessage key={msgKey} message={msg} />;\n }\n\n // Skip standalone tool messages\n if (isToolMessage(msg)) {\n return null;\n }\n\n // Skip if this AI message was already combined with a previous one\n if (msg.type === \"ai\" && index > 0) {\n // Check if previous non-tool message is also an AI message\n let prevIndex = index - 1;\n while (prevIndex >= 0 && isToolMessage(messagesArray[prevIndex])) {\n prevIndex--;\n }\n \n if (prevIndex >= 0 && messagesArray[prevIndex].type === \"ai\") {\n // This is a consecutive AI message, skip it (it will be combined with the previous one)\n return null;\n }\n }\n\n // Collect all consecutive AI messages and tool messages\n const groupedMessages = [msg];\n const toolMessages = [];\n let nextIndex = index + 1;\n \n while (nextIndex < messagesArray.length) {\n const nextMsg = messagesArray[nextIndex];\n \n if (isToolMessage(nextMsg)) {\n toolMessages.push(nextMsg);\n nextIndex++;\n } else if (nextMsg.type === \"ai\") {\n // Combine consecutive AI messages\n groupedMessages.push(nextMsg);\n nextIndex++;\n } else {\n // Stop at human messages or other types\n break;\n }\n }\n\n // Combine content from all AI messages\n const combinedContent = groupedMessages\n .map(m => {\n if (typeof m.content === \"string\") return m.content;\n if (Array.isArray(m.content)) {\n return m.content\n .map((c: any) => c.type === \"text\" ? c.text : \"\")\n .filter(Boolean)\n .join(\" \");\n }\n return \"\";\n })\n .filter(Boolean)\n .join(\"\\n\\n\");\n\n // Create a combined message object\n const combinedMessage = {\n ...msg,\n content: combinedContent,\n };\n\n const isLastMessageGroup = nextIndex >= messagesArray.length;\n const isStreamingThisMessage = isLoading && isLastMessageGroup;\n\n // Check if the first message in the group has tool calls\n const hasToolCalls = isAiWithToolCalls(msg);\n\n return (\n <React.Fragment key={msgKey}>\n {/* 1. Thinking indicator - only show if tool messages exist */}\n {toolMessages.length > 0 && enableToolCallIndicator && hasToolCalls && (\n <ToolCallFunctions\n title=\"Agent Thinking\"\n toolMessages={toolMessages}\n />\n )}\n {/* 2. Agent message (combined content) */}\n {combinedContent && (\n <AgentMessage\n message={combinedMessage}\n isStreaming={isStreamingThisMessage}\n />\n )}\n {/* 3. Custom component (from all messages in the group) */}\n {groupedMessages.map((m) => (\n <CustomComponentRender key={m.id} message={m} thread={stream} />\n ))}\n </React.Fragment>\n );\n }, [isLoading, stream, enableToolCallIndicator]);\n\n // Memoize the rendered messages array\n const renderedMessages = useMemo(() => {\n return memoMessages.map((msg, index) => {\n const element = renderMessage(msg, index, memoMessages);\n // Ensure every element has a key, using message id or fallback to index\n if (element && !element.key) {\n return React.cloneElement(element, { key: msg.id ?? `msg-${index}` });\n }\n return element;\n });\n }, [memoMessages, renderMessage]);\n\n // Track user scroll position to determine if we should auto-scroll\n useEffect(() => {\n const scrollContainer = getScrollContainer();\n if (!scrollContainer) return;\n\n const handleScroll = () => {\n const { scrollTop, scrollHeight, clientHeight } = scrollContainer;\n const distanceFromBottom = scrollHeight - scrollTop - clientHeight;\n // Consider \"at bottom\" if within 100px\n shouldAutoScrollRef.current = distanceFromBottom < 100;\n };\n\n scrollContainer.addEventListener('scroll', handleScroll);\n return () => scrollContainer.removeEventListener('scroll', handleScroll);\n }, [getScrollContainer]);\n\n // Auto-scroll when new messages are added\n useEffect(() => {\n const scrollContainer = getScrollContainer();\n if (!scrollContainer) return;\n\n const currentCount = memoMessages.length;\n const hasNewMessage = currentCount > prevMessageCountRef.current;\n\n if (hasNewMessage) {\n scrollContainer.scrollTop = scrollContainer.scrollHeight;\n shouldAutoScrollRef.current = true;\n }\n\n prevMessageCountRef.current = currentCount;\n }, [memoMessages, getScrollContainer]);\n\n // Use MutationObserver to detect DOM changes and auto-scroll during streaming\n useEffect(() => {\n const scrollContainer = getScrollContainer();\n if (!scrollContainer || !isLoading) return;\n\n const observer = new MutationObserver(() => {\n if (shouldAutoScrollRef.current && scrollContainer) {\n scrollContainer.scrollTop = scrollContainer.scrollHeight;\n }\n });\n\n // Observe the ChatBody container for changes\n if (containerRef.current) {\n observer.observe(containerRef.current, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n }\n\n return () => observer.disconnect();\n }, [isLoading, getScrollContainer]);\n\n // Use useLayoutEffect to scroll after DOM updates\n useLayoutEffect(() => {\n const scrollContainer = getScrollContainer();\n if (isLoading && shouldAutoScrollRef.current && scrollContainer) {\n scrollContainer.scrollTop = scrollContainer.scrollHeight;\n }\n });\n\n return (\n <div\n ref={containerRef}\n className=\"flex flex-col gap-4 rounded-4xl p-2\"\n >\n {memoMessages.length === 0 ? (\n <div className=\"flex items-center justify-center h-full text-zinc-500\">\n Start a conversation...\n </div>\n ) : (\n <>\n {renderedMessages}\n {/* Show thinking indicator when loading but no AI response yet */}\n {isLoading && memoMessages.length > 0 && memoMessages[memoMessages.length - 1].type === \"human\" && (\n <div className=\"flex items-center gap-2\">\n {/* Thinking<span className=\"animate-pulse\">...</span> */}\n <Thinking />\n </div>\n )}\n </>\n )}\n </div>\n );\n}\n"],"names":["React"],"mappings":"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"}
|
package/dist/index.es110.js
CHANGED
|
@@ -1,504 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { isBaseTracer } from "./index.es117.js";
|
|
6
|
-
import { ConsoleCallbackHandler } from "./index.es134.js";
|
|
7
|
-
import { LangChainTracer } from "./index.es135.js";
|
|
8
|
-
import { consumeCallback } from "./index.es136.js";
|
|
9
|
-
import "./index.es137.js";
|
|
10
|
-
import { isTracingEnabled } from "./index.es138.js";
|
|
11
|
-
import { _getConfigureHooks, getContextVariable } from "./index.es139.js";
|
|
12
|
-
import { v7 } from "uuid";
|
|
13
|
-
var manager_exports = {};
|
|
14
|
-
__export(manager_exports, {
|
|
15
|
-
BaseCallbackManager: () => BaseCallbackManager,
|
|
16
|
-
BaseRunManager: () => BaseRunManager,
|
|
17
|
-
CallbackManager: () => CallbackManager,
|
|
18
|
-
CallbackManagerForChainRun: () => CallbackManagerForChainRun,
|
|
19
|
-
CallbackManagerForLLMRun: () => CallbackManagerForLLMRun,
|
|
20
|
-
CallbackManagerForRetrieverRun: () => CallbackManagerForRetrieverRun,
|
|
21
|
-
CallbackManagerForToolRun: () => CallbackManagerForToolRun,
|
|
22
|
-
ensureHandler: () => ensureHandler,
|
|
23
|
-
parseCallbackConfigArg: () => parseCallbackConfigArg
|
|
24
|
-
});
|
|
25
|
-
function parseCallbackConfigArg(arg) {
|
|
26
|
-
if (!arg) return {};
|
|
27
|
-
else if (Array.isArray(arg) || "name" in arg) return { callbacks: arg };
|
|
28
|
-
else return arg;
|
|
29
|
-
}
|
|
30
|
-
var BaseCallbackManager = class {
|
|
31
|
-
setHandler(handler) {
|
|
32
|
-
return this.setHandlers([handler]);
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
var BaseRunManager = class {
|
|
36
|
-
constructor(runId, handlers, inheritableHandlers, tags, inheritableTags, metadata, inheritableMetadata, _parentRunId) {
|
|
37
|
-
this.runId = runId;
|
|
38
|
-
this.handlers = handlers;
|
|
39
|
-
this.inheritableHandlers = inheritableHandlers;
|
|
40
|
-
this.tags = tags;
|
|
41
|
-
this.inheritableTags = inheritableTags;
|
|
42
|
-
this.metadata = metadata;
|
|
43
|
-
this.inheritableMetadata = inheritableMetadata;
|
|
44
|
-
this._parentRunId = _parentRunId;
|
|
45
|
-
}
|
|
46
|
-
get parentRunId() {
|
|
47
|
-
return this._parentRunId;
|
|
48
|
-
}
|
|
49
|
-
async handleText(text) {
|
|
50
|
-
await Promise.all(this.handlers.map((handler) => consumeCallback(async () => {
|
|
51
|
-
try {
|
|
52
|
-
await handler.handleText?.(text, this.runId, this._parentRunId, this.tags);
|
|
53
|
-
} catch (err) {
|
|
54
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
55
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleText: ${err}`);
|
|
56
|
-
if (handler.raiseError) throw err;
|
|
57
|
-
}
|
|
58
|
-
}, handler.awaitHandlers)));
|
|
59
|
-
}
|
|
60
|
-
async handleCustomEvent(eventName, data, _runId, _tags, _metadata) {
|
|
61
|
-
await Promise.all(this.handlers.map((handler) => consumeCallback(async () => {
|
|
62
|
-
try {
|
|
63
|
-
await handler.handleCustomEvent?.(eventName, data, this.runId, this.tags, this.metadata);
|
|
64
|
-
} catch (err) {
|
|
65
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
66
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleCustomEvent: ${err}`);
|
|
67
|
-
if (handler.raiseError) throw err;
|
|
68
|
-
}
|
|
69
|
-
}, handler.awaitHandlers)));
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
var CallbackManagerForRetrieverRun = class extends BaseRunManager {
|
|
73
|
-
getChild(tag) {
|
|
74
|
-
const manager = new CallbackManager(this.runId);
|
|
75
|
-
manager.setHandlers(this.inheritableHandlers);
|
|
76
|
-
manager.addTags(this.inheritableTags);
|
|
77
|
-
manager.addMetadata(this.inheritableMetadata);
|
|
78
|
-
if (tag) manager.addTags([tag], false);
|
|
79
|
-
return manager;
|
|
80
|
-
}
|
|
81
|
-
async handleRetrieverEnd(documents) {
|
|
82
|
-
await Promise.all(this.handlers.map((handler) => consumeCallback(async () => {
|
|
83
|
-
if (!handler.ignoreRetriever) try {
|
|
84
|
-
await handler.handleRetrieverEnd?.(documents, this.runId, this._parentRunId, this.tags);
|
|
85
|
-
} catch (err) {
|
|
86
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
87
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleRetriever`);
|
|
88
|
-
if (handler.raiseError) throw err;
|
|
89
|
-
}
|
|
90
|
-
}, handler.awaitHandlers)));
|
|
91
|
-
}
|
|
92
|
-
async handleRetrieverError(err) {
|
|
93
|
-
await Promise.all(this.handlers.map((handler) => consumeCallback(async () => {
|
|
94
|
-
if (!handler.ignoreRetriever) try {
|
|
95
|
-
await handler.handleRetrieverError?.(err, this.runId, this._parentRunId, this.tags);
|
|
96
|
-
} catch (error) {
|
|
97
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
98
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleRetrieverError: ${error}`);
|
|
99
|
-
if (handler.raiseError) throw err;
|
|
100
|
-
}
|
|
101
|
-
}, handler.awaitHandlers)));
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
var CallbackManagerForLLMRun = class extends BaseRunManager {
|
|
105
|
-
async handleLLMNewToken(token, idx, _runId, _parentRunId, _tags, fields) {
|
|
106
|
-
await Promise.all(this.handlers.map((handler) => consumeCallback(async () => {
|
|
107
|
-
if (!handler.ignoreLLM) try {
|
|
108
|
-
await handler.handleLLMNewToken?.(token, idx ?? {
|
|
109
|
-
prompt: 0,
|
|
110
|
-
completion: 0
|
|
111
|
-
}, this.runId, this._parentRunId, this.tags, fields);
|
|
112
|
-
} catch (err) {
|
|
113
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
114
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleLLMNewToken: ${err}`);
|
|
115
|
-
if (handler.raiseError) throw err;
|
|
116
|
-
}
|
|
117
|
-
}, handler.awaitHandlers)));
|
|
118
|
-
}
|
|
119
|
-
async handleLLMError(err, _runId, _parentRunId, _tags, extraParams) {
|
|
120
|
-
await Promise.all(this.handlers.map((handler) => consumeCallback(async () => {
|
|
121
|
-
if (!handler.ignoreLLM) try {
|
|
122
|
-
await handler.handleLLMError?.(err, this.runId, this._parentRunId, this.tags, extraParams);
|
|
123
|
-
} catch (err$1) {
|
|
124
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
125
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleLLMError: ${err$1}`);
|
|
126
|
-
if (handler.raiseError) throw err$1;
|
|
127
|
-
}
|
|
128
|
-
}, handler.awaitHandlers)));
|
|
129
|
-
}
|
|
130
|
-
async handleLLMEnd(output, _runId, _parentRunId, _tags, extraParams) {
|
|
131
|
-
await Promise.all(this.handlers.map((handler) => consumeCallback(async () => {
|
|
132
|
-
if (!handler.ignoreLLM) try {
|
|
133
|
-
await handler.handleLLMEnd?.(output, this.runId, this._parentRunId, this.tags, extraParams);
|
|
134
|
-
} catch (err) {
|
|
135
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
136
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleLLMEnd: ${err}`);
|
|
137
|
-
if (handler.raiseError) throw err;
|
|
138
|
-
}
|
|
139
|
-
}, handler.awaitHandlers)));
|
|
140
|
-
}
|
|
141
|
-
};
|
|
142
|
-
var CallbackManagerForChainRun = class extends BaseRunManager {
|
|
143
|
-
getChild(tag) {
|
|
144
|
-
const manager = new CallbackManager(this.runId);
|
|
145
|
-
manager.setHandlers(this.inheritableHandlers);
|
|
146
|
-
manager.addTags(this.inheritableTags);
|
|
147
|
-
manager.addMetadata(this.inheritableMetadata);
|
|
148
|
-
if (tag) manager.addTags([tag], false);
|
|
149
|
-
return manager;
|
|
150
|
-
}
|
|
151
|
-
async handleChainError(err, _runId, _parentRunId, _tags, kwargs) {
|
|
152
|
-
await Promise.all(this.handlers.map((handler) => consumeCallback(async () => {
|
|
153
|
-
if (!handler.ignoreChain) try {
|
|
154
|
-
await handler.handleChainError?.(err, this.runId, this._parentRunId, this.tags, kwargs);
|
|
155
|
-
} catch (err$1) {
|
|
156
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
157
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleChainError: ${err$1}`);
|
|
158
|
-
if (handler.raiseError) throw err$1;
|
|
159
|
-
}
|
|
160
|
-
}, handler.awaitHandlers)));
|
|
161
|
-
}
|
|
162
|
-
async handleChainEnd(output, _runId, _parentRunId, _tags, kwargs) {
|
|
163
|
-
await Promise.all(this.handlers.map((handler) => consumeCallback(async () => {
|
|
164
|
-
if (!handler.ignoreChain) try {
|
|
165
|
-
await handler.handleChainEnd?.(output, this.runId, this._parentRunId, this.tags, kwargs);
|
|
166
|
-
} catch (err) {
|
|
167
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
168
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleChainEnd: ${err}`);
|
|
169
|
-
if (handler.raiseError) throw err;
|
|
170
|
-
}
|
|
171
|
-
}, handler.awaitHandlers)));
|
|
172
|
-
}
|
|
173
|
-
async handleAgentAction(action) {
|
|
174
|
-
await Promise.all(this.handlers.map((handler) => consumeCallback(async () => {
|
|
175
|
-
if (!handler.ignoreAgent) try {
|
|
176
|
-
await handler.handleAgentAction?.(action, this.runId, this._parentRunId, this.tags);
|
|
177
|
-
} catch (err) {
|
|
178
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
179
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleAgentAction: ${err}`);
|
|
180
|
-
if (handler.raiseError) throw err;
|
|
181
|
-
}
|
|
182
|
-
}, handler.awaitHandlers)));
|
|
183
|
-
}
|
|
184
|
-
async handleAgentEnd(action) {
|
|
185
|
-
await Promise.all(this.handlers.map((handler) => consumeCallback(async () => {
|
|
186
|
-
if (!handler.ignoreAgent) try {
|
|
187
|
-
await handler.handleAgentEnd?.(action, this.runId, this._parentRunId, this.tags);
|
|
188
|
-
} catch (err) {
|
|
189
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
190
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleAgentEnd: ${err}`);
|
|
191
|
-
if (handler.raiseError) throw err;
|
|
192
|
-
}
|
|
193
|
-
}, handler.awaitHandlers)));
|
|
194
|
-
}
|
|
195
|
-
};
|
|
196
|
-
var CallbackManagerForToolRun = class extends BaseRunManager {
|
|
197
|
-
getChild(tag) {
|
|
198
|
-
const manager = new CallbackManager(this.runId);
|
|
199
|
-
manager.setHandlers(this.inheritableHandlers);
|
|
200
|
-
manager.addTags(this.inheritableTags);
|
|
201
|
-
manager.addMetadata(this.inheritableMetadata);
|
|
202
|
-
if (tag) manager.addTags([tag], false);
|
|
203
|
-
return manager;
|
|
204
|
-
}
|
|
205
|
-
async handleToolError(err) {
|
|
206
|
-
await Promise.all(this.handlers.map((handler) => consumeCallback(async () => {
|
|
207
|
-
if (!handler.ignoreAgent) try {
|
|
208
|
-
await handler.handleToolError?.(err, this.runId, this._parentRunId, this.tags);
|
|
209
|
-
} catch (err$1) {
|
|
210
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
211
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleToolError: ${err$1}`);
|
|
212
|
-
if (handler.raiseError) throw err$1;
|
|
213
|
-
}
|
|
214
|
-
}, handler.awaitHandlers)));
|
|
215
|
-
}
|
|
216
|
-
async handleToolEnd(output) {
|
|
217
|
-
await Promise.all(this.handlers.map((handler) => consumeCallback(async () => {
|
|
218
|
-
if (!handler.ignoreAgent) try {
|
|
219
|
-
await handler.handleToolEnd?.(output, this.runId, this._parentRunId, this.tags);
|
|
220
|
-
} catch (err) {
|
|
221
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
222
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleToolEnd: ${err}`);
|
|
223
|
-
if (handler.raiseError) throw err;
|
|
224
|
-
}
|
|
225
|
-
}, handler.awaitHandlers)));
|
|
226
|
-
}
|
|
227
|
-
};
|
|
228
|
-
var CallbackManager = class CallbackManager2 extends BaseCallbackManager {
|
|
229
|
-
handlers = [];
|
|
230
|
-
inheritableHandlers = [];
|
|
231
|
-
tags = [];
|
|
232
|
-
inheritableTags = [];
|
|
233
|
-
metadata = {};
|
|
234
|
-
inheritableMetadata = {};
|
|
235
|
-
name = "callback_manager";
|
|
236
|
-
_parentRunId;
|
|
237
|
-
constructor(parentRunId, options) {
|
|
238
|
-
super();
|
|
239
|
-
this.handlers = options?.handlers ?? this.handlers;
|
|
240
|
-
this.inheritableHandlers = options?.inheritableHandlers ?? this.inheritableHandlers;
|
|
241
|
-
this.tags = options?.tags ?? this.tags;
|
|
242
|
-
this.inheritableTags = options?.inheritableTags ?? this.inheritableTags;
|
|
243
|
-
this.metadata = options?.metadata ?? this.metadata;
|
|
244
|
-
this.inheritableMetadata = options?.inheritableMetadata ?? this.inheritableMetadata;
|
|
245
|
-
this._parentRunId = parentRunId;
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* Gets the parent run ID, if any.
|
|
249
|
-
*
|
|
250
|
-
* @returns The parent run ID.
|
|
251
|
-
*/
|
|
252
|
-
getParentRunId() {
|
|
253
|
-
return this._parentRunId;
|
|
254
|
-
}
|
|
255
|
-
async handleLLMStart(llm, prompts, runId = void 0, _parentRunId = void 0, extraParams = void 0, _tags = void 0, _metadata = void 0, runName = void 0) {
|
|
256
|
-
return Promise.all(prompts.map(async (prompt, idx) => {
|
|
257
|
-
const runId_ = idx === 0 && runId ? runId : v7();
|
|
258
|
-
await Promise.all(this.handlers.map((handler) => {
|
|
259
|
-
if (handler.ignoreLLM) return;
|
|
260
|
-
if (isBaseTracer(handler)) handler._createRunForLLMStart(llm, [prompt], runId_, this._parentRunId, extraParams, this.tags, this.metadata, runName);
|
|
261
|
-
return consumeCallback(async () => {
|
|
262
|
-
try {
|
|
263
|
-
await handler.handleLLMStart?.(llm, [prompt], runId_, this._parentRunId, extraParams, this.tags, this.metadata, runName);
|
|
264
|
-
} catch (err) {
|
|
265
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
266
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleLLMStart: ${err}`);
|
|
267
|
-
if (handler.raiseError) throw err;
|
|
268
|
-
}
|
|
269
|
-
}, handler.awaitHandlers);
|
|
270
|
-
}));
|
|
271
|
-
return new CallbackManagerForLLMRun(runId_, this.handlers, this.inheritableHandlers, this.tags, this.inheritableTags, this.metadata, this.inheritableMetadata, this._parentRunId);
|
|
272
|
-
}));
|
|
273
|
-
}
|
|
274
|
-
async handleChatModelStart(llm, messages, runId = void 0, _parentRunId = void 0, extraParams = void 0, _tags = void 0, _metadata = void 0, runName = void 0) {
|
|
275
|
-
return Promise.all(messages.map(async (messageGroup, idx) => {
|
|
276
|
-
const runId_ = idx === 0 && runId ? runId : v7();
|
|
277
|
-
await Promise.all(this.handlers.map((handler) => {
|
|
278
|
-
if (handler.ignoreLLM) return;
|
|
279
|
-
if (isBaseTracer(handler)) handler._createRunForChatModelStart(llm, [messageGroup], runId_, this._parentRunId, extraParams, this.tags, this.metadata, runName);
|
|
280
|
-
return consumeCallback(async () => {
|
|
281
|
-
try {
|
|
282
|
-
if (handler.handleChatModelStart) await handler.handleChatModelStart?.(llm, [messageGroup], runId_, this._parentRunId, extraParams, this.tags, this.metadata, runName);
|
|
283
|
-
else if (handler.handleLLMStart) {
|
|
284
|
-
const messageString = getBufferString(messageGroup);
|
|
285
|
-
await handler.handleLLMStart?.(llm, [messageString], runId_, this._parentRunId, extraParams, this.tags, this.metadata, runName);
|
|
286
|
-
}
|
|
287
|
-
} catch (err) {
|
|
288
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
289
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleLLMStart: ${err}`);
|
|
290
|
-
if (handler.raiseError) throw err;
|
|
291
|
-
}
|
|
292
|
-
}, handler.awaitHandlers);
|
|
293
|
-
}));
|
|
294
|
-
return new CallbackManagerForLLMRun(runId_, this.handlers, this.inheritableHandlers, this.tags, this.inheritableTags, this.metadata, this.inheritableMetadata, this._parentRunId);
|
|
295
|
-
}));
|
|
296
|
-
}
|
|
297
|
-
async handleChainStart(chain, inputs, runId = v7(), runType = void 0, _tags = void 0, _metadata = void 0, runName = void 0, _parentRunId = void 0, extra = void 0) {
|
|
298
|
-
await Promise.all(this.handlers.map((handler) => {
|
|
299
|
-
if (handler.ignoreChain) return;
|
|
300
|
-
if (isBaseTracer(handler)) handler._createRunForChainStart(chain, inputs, runId, this._parentRunId, this.tags, this.metadata, runType, runName, extra);
|
|
301
|
-
return consumeCallback(async () => {
|
|
302
|
-
try {
|
|
303
|
-
await handler.handleChainStart?.(chain, inputs, runId, this._parentRunId, this.tags, this.metadata, runType, runName, extra);
|
|
304
|
-
} catch (err) {
|
|
305
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
306
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleChainStart: ${err}`);
|
|
307
|
-
if (handler.raiseError) throw err;
|
|
308
|
-
}
|
|
309
|
-
}, handler.awaitHandlers);
|
|
310
|
-
}));
|
|
311
|
-
return new CallbackManagerForChainRun(runId, this.handlers, this.inheritableHandlers, this.tags, this.inheritableTags, this.metadata, this.inheritableMetadata, this._parentRunId);
|
|
312
|
-
}
|
|
313
|
-
async handleToolStart(tool, input, runId = v7(), _parentRunId = void 0, _tags = void 0, _metadata = void 0, runName = void 0) {
|
|
314
|
-
await Promise.all(this.handlers.map((handler) => {
|
|
315
|
-
if (handler.ignoreAgent) return;
|
|
316
|
-
if (isBaseTracer(handler)) handler._createRunForToolStart(tool, input, runId, this._parentRunId, this.tags, this.metadata, runName);
|
|
317
|
-
return consumeCallback(async () => {
|
|
318
|
-
try {
|
|
319
|
-
await handler.handleToolStart?.(tool, input, runId, this._parentRunId, this.tags, this.metadata, runName);
|
|
320
|
-
} catch (err) {
|
|
321
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
322
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleToolStart: ${err}`);
|
|
323
|
-
if (handler.raiseError) throw err;
|
|
324
|
-
}
|
|
325
|
-
}, handler.awaitHandlers);
|
|
326
|
-
}));
|
|
327
|
-
return new CallbackManagerForToolRun(runId, this.handlers, this.inheritableHandlers, this.tags, this.inheritableTags, this.metadata, this.inheritableMetadata, this._parentRunId);
|
|
328
|
-
}
|
|
329
|
-
async handleRetrieverStart(retriever, query, runId = v7(), _parentRunId = void 0, _tags = void 0, _metadata = void 0, runName = void 0) {
|
|
330
|
-
await Promise.all(this.handlers.map((handler) => {
|
|
331
|
-
if (handler.ignoreRetriever) return;
|
|
332
|
-
if (isBaseTracer(handler)) handler._createRunForRetrieverStart(retriever, query, runId, this._parentRunId, this.tags, this.metadata, runName);
|
|
333
|
-
return consumeCallback(async () => {
|
|
334
|
-
try {
|
|
335
|
-
await handler.handleRetrieverStart?.(retriever, query, runId, this._parentRunId, this.tags, this.metadata, runName);
|
|
336
|
-
} catch (err) {
|
|
337
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
338
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleRetrieverStart: ${err}`);
|
|
339
|
-
if (handler.raiseError) throw err;
|
|
340
|
-
}
|
|
341
|
-
}, handler.awaitHandlers);
|
|
342
|
-
}));
|
|
343
|
-
return new CallbackManagerForRetrieverRun(runId, this.handlers, this.inheritableHandlers, this.tags, this.inheritableTags, this.metadata, this.inheritableMetadata, this._parentRunId);
|
|
344
|
-
}
|
|
345
|
-
async handleCustomEvent(eventName, data, runId, _tags, _metadata) {
|
|
346
|
-
await Promise.all(this.handlers.map((handler) => consumeCallback(async () => {
|
|
347
|
-
if (!handler.ignoreCustomEvent) try {
|
|
348
|
-
await handler.handleCustomEvent?.(eventName, data, runId, this.tags, this.metadata);
|
|
349
|
-
} catch (err) {
|
|
350
|
-
const logFunction = handler.raiseError ? console.error : console.warn;
|
|
351
|
-
logFunction(`Error in handler ${handler.constructor.name}, handleCustomEvent: ${err}`);
|
|
352
|
-
if (handler.raiseError) throw err;
|
|
353
|
-
}
|
|
354
|
-
}, handler.awaitHandlers)));
|
|
355
|
-
}
|
|
356
|
-
addHandler(handler, inherit = true) {
|
|
357
|
-
this.handlers.push(handler);
|
|
358
|
-
if (inherit) this.inheritableHandlers.push(handler);
|
|
359
|
-
}
|
|
360
|
-
removeHandler(handler) {
|
|
361
|
-
this.handlers = this.handlers.filter((_handler) => _handler !== handler);
|
|
362
|
-
this.inheritableHandlers = this.inheritableHandlers.filter((_handler) => _handler !== handler);
|
|
363
|
-
}
|
|
364
|
-
setHandlers(handlers, inherit = true) {
|
|
365
|
-
this.handlers = [];
|
|
366
|
-
this.inheritableHandlers = [];
|
|
367
|
-
for (const handler of handlers) this.addHandler(handler, inherit);
|
|
368
|
-
}
|
|
369
|
-
addTags(tags, inherit = true) {
|
|
370
|
-
this.removeTags(tags);
|
|
371
|
-
this.tags.push(...tags);
|
|
372
|
-
if (inherit) this.inheritableTags.push(...tags);
|
|
373
|
-
}
|
|
374
|
-
removeTags(tags) {
|
|
375
|
-
this.tags = this.tags.filter((tag) => !tags.includes(tag));
|
|
376
|
-
this.inheritableTags = this.inheritableTags.filter((tag) => !tags.includes(tag));
|
|
377
|
-
}
|
|
378
|
-
addMetadata(metadata, inherit = true) {
|
|
379
|
-
this.metadata = {
|
|
380
|
-
...this.metadata,
|
|
381
|
-
...metadata
|
|
382
|
-
};
|
|
383
|
-
if (inherit) this.inheritableMetadata = {
|
|
384
|
-
...this.inheritableMetadata,
|
|
385
|
-
...metadata
|
|
386
|
-
};
|
|
387
|
-
}
|
|
388
|
-
removeMetadata(metadata) {
|
|
389
|
-
for (const key of Object.keys(metadata)) {
|
|
390
|
-
delete this.metadata[key];
|
|
391
|
-
delete this.inheritableMetadata[key];
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
copy(additionalHandlers = [], inherit = true) {
|
|
395
|
-
const manager = new CallbackManager2(this._parentRunId);
|
|
396
|
-
for (const handler of this.handlers) {
|
|
397
|
-
const inheritable = this.inheritableHandlers.includes(handler);
|
|
398
|
-
manager.addHandler(handler, inheritable);
|
|
399
|
-
}
|
|
400
|
-
for (const tag of this.tags) {
|
|
401
|
-
const inheritable = this.inheritableTags.includes(tag);
|
|
402
|
-
manager.addTags([tag], inheritable);
|
|
403
|
-
}
|
|
404
|
-
for (const key of Object.keys(this.metadata)) {
|
|
405
|
-
const inheritable = Object.keys(this.inheritableMetadata).includes(key);
|
|
406
|
-
manager.addMetadata({ [key]: this.metadata[key] }, inheritable);
|
|
407
|
-
}
|
|
408
|
-
for (const handler of additionalHandlers) {
|
|
409
|
-
if (manager.handlers.filter((h) => h.name === "console_callback_handler").some((h) => h.name === handler.name)) continue;
|
|
410
|
-
manager.addHandler(handler, inherit);
|
|
411
|
-
}
|
|
412
|
-
return manager;
|
|
413
|
-
}
|
|
414
|
-
static fromHandlers(handlers) {
|
|
415
|
-
class Handler extends BaseCallbackHandler {
|
|
416
|
-
name = v7();
|
|
417
|
-
constructor() {
|
|
418
|
-
super();
|
|
419
|
-
Object.assign(this, handlers);
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
const manager = new this();
|
|
423
|
-
manager.addHandler(new Handler());
|
|
424
|
-
return manager;
|
|
425
|
-
}
|
|
426
|
-
static configure(inheritableHandlers, localHandlers, inheritableTags, localTags, inheritableMetadata, localMetadata, options) {
|
|
427
|
-
return this._configureSync(inheritableHandlers, localHandlers, inheritableTags, localTags, inheritableMetadata, localMetadata, options);
|
|
428
|
-
}
|
|
429
|
-
static _configureSync(inheritableHandlers, localHandlers, inheritableTags, localTags, inheritableMetadata, localMetadata, options) {
|
|
430
|
-
let callbackManager;
|
|
431
|
-
if (inheritableHandlers || localHandlers) {
|
|
432
|
-
if (Array.isArray(inheritableHandlers) || !inheritableHandlers) {
|
|
433
|
-
callbackManager = new CallbackManager2();
|
|
434
|
-
callbackManager.setHandlers(inheritableHandlers?.map(ensureHandler) ?? [], true);
|
|
435
|
-
} else callbackManager = inheritableHandlers;
|
|
436
|
-
callbackManager = callbackManager.copy(Array.isArray(localHandlers) ? localHandlers.map(ensureHandler) : localHandlers?.handlers, false);
|
|
437
|
-
}
|
|
438
|
-
const verboseEnabled = getEnvironmentVariable("LANGCHAIN_VERBOSE") === "true" || options?.verbose;
|
|
439
|
-
const tracingV2Enabled = LangChainTracer.getTraceableRunTree()?.tracingEnabled || isTracingEnabled();
|
|
440
|
-
const tracingEnabled = tracingV2Enabled || (getEnvironmentVariable("LANGCHAIN_TRACING") ?? false);
|
|
441
|
-
if (verboseEnabled || tracingEnabled) {
|
|
442
|
-
if (!callbackManager) callbackManager = new CallbackManager2();
|
|
443
|
-
if (verboseEnabled && !callbackManager.handlers.some((handler) => handler.name === ConsoleCallbackHandler.prototype.name)) {
|
|
444
|
-
const consoleHandler = new ConsoleCallbackHandler();
|
|
445
|
-
callbackManager.addHandler(consoleHandler, true);
|
|
446
|
-
}
|
|
447
|
-
if (tracingEnabled && !callbackManager.handlers.some((handler) => handler.name === "langchain_tracer")) {
|
|
448
|
-
if (tracingV2Enabled) {
|
|
449
|
-
const tracerV2 = new LangChainTracer();
|
|
450
|
-
callbackManager.addHandler(tracerV2, true);
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
if (tracingV2Enabled) {
|
|
454
|
-
const implicitRunTree = LangChainTracer.getTraceableRunTree();
|
|
455
|
-
if (implicitRunTree && callbackManager._parentRunId === void 0) {
|
|
456
|
-
callbackManager._parentRunId = implicitRunTree.id;
|
|
457
|
-
const tracerV2 = callbackManager.handlers.find((handler) => handler.name === "langchain_tracer");
|
|
458
|
-
tracerV2?.updateFromRunTree(implicitRunTree);
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
for (const { contextVar, inheritable = true, handlerClass, envVar } of _getConfigureHooks()) {
|
|
463
|
-
const createIfNotInContext = envVar && getEnvironmentVariable(envVar) === "true" && handlerClass;
|
|
464
|
-
let handler;
|
|
465
|
-
const contextVarValue = contextVar !== void 0 ? getContextVariable(contextVar) : void 0;
|
|
466
|
-
if (contextVarValue && isBaseCallbackHandler(contextVarValue)) handler = contextVarValue;
|
|
467
|
-
else if (createIfNotInContext) handler = new handlerClass({});
|
|
468
|
-
if (handler !== void 0) {
|
|
469
|
-
if (!callbackManager) callbackManager = new CallbackManager2();
|
|
470
|
-
if (!callbackManager.handlers.some((h) => h.name === handler.name)) callbackManager.addHandler(handler, inheritable);
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
if (inheritableTags || localTags) {
|
|
474
|
-
if (callbackManager) {
|
|
475
|
-
callbackManager.addTags(inheritableTags ?? []);
|
|
476
|
-
callbackManager.addTags(localTags ?? [], false);
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
if (inheritableMetadata || localMetadata) {
|
|
480
|
-
if (callbackManager) {
|
|
481
|
-
callbackManager.addMetadata(inheritableMetadata ?? {});
|
|
482
|
-
callbackManager.addMetadata(localMetadata ?? {}, false);
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
return callbackManager;
|
|
486
|
-
}
|
|
487
|
-
};
|
|
488
|
-
function ensureHandler(handler) {
|
|
489
|
-
if ("name" in handler) return handler;
|
|
490
|
-
return BaseCallbackHandler.fromMethods(handler);
|
|
491
|
-
}
|
|
1
|
+
import { getDefaultExportFromCjs } from "./index.es156.js";
|
|
2
|
+
import { __require as requireDist } from "./index.es139.js";
|
|
3
|
+
var distExports = requireDist();
|
|
4
|
+
const PQueueMod = /* @__PURE__ */ getDefaultExportFromCjs(distExports);
|
|
492
5
|
export {
|
|
493
|
-
|
|
494
|
-
BaseRunManager,
|
|
495
|
-
CallbackManager,
|
|
496
|
-
CallbackManagerForChainRun,
|
|
497
|
-
CallbackManagerForLLMRun,
|
|
498
|
-
CallbackManagerForRetrieverRun,
|
|
499
|
-
CallbackManagerForToolRun,
|
|
500
|
-
ensureHandler,
|
|
501
|
-
manager_exports,
|
|
502
|
-
parseCallbackConfigArg
|
|
6
|
+
PQueueMod as default
|
|
503
7
|
};
|
|
504
8
|
//# sourceMappingURL=index.es110.js.map
|