From 53cad19d2edbcdc465d014b94a0cdd3361f7de76 Mon Sep 17 00:00:00 2001 From: DiegoC Date: Wed, 29 Oct 2025 16:02:00 -0300 Subject: [PATCH 1/3] ANS-53 fix credential modal agentflow (#642) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Fix: Credential Modal Issues in Agentflow Canvas (ANS-53) ## ๐ŸŽฏ Overview This PR resolves credential modal handling issues in the agentflow canvas and implements comprehensive refactoring of credential processing across the application. It also includes billing provider enhancements and improved error handling throughout the credential flow. ## ๐Ÿ“ Changes Summary ### ๐Ÿ› Bug Fixes - **Credential Modal in Agentflow Canvas**: Fixed issues preventing credential modal from displaying correctly in agentflow canvas - **Credential Processing Flow**: Restored proper credential modal logic after rebase conflicts ### โ™ป๏ธ Refactoring & Enhancements #### Frontend (UI Package) - **New Hook**: Created `useFlowCredentials.js` - centralized custom hook for managing flow credential state and logic - **Enhanced Utility**: Extended `flowCredentialsHelper.js` with improved credential extraction and validation functions - **Canvas Components**: Updated credential handling in: - `agentflowsv2/Canvas.jsx` - Enhanced modal triggering and credential validation - `canvas/index.jsx` - Improved credential processing workflow - `marketplaces/MarketplaceCanvas.jsx` - Streamlined credential management #### Backend (Utils Package) - **New Utility**: Created `processFlowCredentials.ts` - dedicated function for processing flow credentials with consistent error handling - **Simplified Functions**: - `extractAllCredentials.ts` - Reduced complexity by delegating to shared logic (-75 lines) - `extractMissingCredentials.ts` - Streamlined credential extraction (-77 lines) ### ๐Ÿ”ง Error Handling Improvements - Replaced verbose console error logs with user-friendly error messages - Suppressed non-critical error logs to reduce noise - Standardized error handling patterns across credential processing functions - Enhanced stability in credential validation flows ## ๐Ÿ“Š Impact Metrics ``` 11 files changed +637 insertions -258 deletions Net: +379 lines ``` ### Files Modified - **packages-answers/utils/src/** - `extractAllCredentials.ts` (simplified) - `extractMissingCredentials.ts` (simplified) - `processFlowCredentials.ts` (new) - **packages/ui/src/** - `hooks/useFlowCredentials.js` (new) - `utils/flowCredentialsHelper.js` (enhanced) - `views/agentflowsv2/Canvas.jsx` (updated) - `views/canvas/index.jsx` (updated) - `views/marketplaces/MarketplaceCanvas.jsx` (updated) ## ๐Ÿงช Testing Recommendations ### Manual Testing - [ ] Verify credential modal appears correctly in agentflow canvas - [ ] Test credential validation for new flows - [ ] Confirm missing credentials are properly detected and prompted - [ ] Validate error messages are user-friendly and actionable - [ ] Test marketplace canvas credential handling ### Regression Testing - [ ] Ensure existing chatflows continue to work - [ ] Verify no breaking changes in credential extraction - [ ] Test credential updates in existing flows ## ๐Ÿš€ Deployment Notes - No database migrations required - No environment variable changes - No breaking API changes - Frontend and backend changes should be deployed together for consistency ## ๐Ÿ“š Additional Context This PR consolidates several related fixes and refactorings: 1. Initial credential modal fixes in agentflow 2. Comprehensive refactoring of credential extraction logic 3. Error handling improvements for better UX The changes maintain backward compatibility while improving code maintainability and user experience. --- **Ready for Review** โœ… --------- Co-authored-by: Max Techera Co-authored-by: Claude --- .../utils/src/extractAllCredentials.ts | 75 +-------- .../utils/src/extractMissingCredentials.ts | 77 +-------- .../utils/src/processFlowCredentials.ts | 82 +++++++++ packages/ui/src/hooks/useFlowCredentials.ts | 157 ++++++++++++++++++ .../ui/src/utils/flowCredentialsHelper.js | 38 ++++- packages/ui/src/views/agentflowsv2/Canvas.jsx | 126 +++++++++++++- packages/ui/src/views/canvas/index.jsx | 85 +++++++++- .../views/marketplaces/MarketplaceCanvas.jsx | 28 ---- 8 files changed, 490 insertions(+), 178 deletions(-) create mode 100644 packages-answers/utils/src/processFlowCredentials.ts create mode 100644 packages/ui/src/hooks/useFlowCredentials.ts diff --git a/packages-answers/utils/src/extractAllCredentials.ts b/packages-answers/utils/src/extractAllCredentials.ts index adb48488d3c..b53142fb31c 100644 --- a/packages-answers/utils/src/extractAllCredentials.ts +++ b/packages-answers/utils/src/extractAllCredentials.ts @@ -1,4 +1,4 @@ -import { getCredentialCategory } from './getCredentialCategory' +import { processFlowCredentials } from './processFlowCredentials' /** * Extract all credentials (assigned and unassigned) from flow data for QuickSetup mode @@ -6,75 +6,10 @@ import { getCredentialCategory } from './getCredentialCategory' * @returns {object} Object containing all credentials info */ export const extractAllCredentials = (flowData: string | any) => { - try { - // Parse flow data if it's a string - const flow = typeof flowData === 'string' ? JSON.parse(flowData) : flowData + const { credentials, hasCredentials } = processFlowCredentials(flowData) - if (!flow.nodes || !Array.isArray(flow.nodes)) { - return { allCredentials: [], hasCredentials: false } - } - - const allCredentials: any[] = [] - const credentialTypes = new Set() - - // Iterate through all nodes - flow.nodes.forEach((node: any) => { - if (node.data && node.data.inputParams) { - // Find all credential input parameters - const credentialParams = node.data.inputParams.filter((param: any) => { - return param.type === 'credential' - }) - - credentialParams.forEach((credentialParam: any) => { - // Check if credential is assigned - const hasCredential = - node.data.credential || - (node.data.inputs && node.data.inputs[credentialParam.name]) || - (node.data.inputs && node.data.inputs['FLOWISE_CREDENTIAL_ID']) - - // Extract credential names - const credentialNames = credentialParam.credentialNames || [] - - credentialNames.forEach((credentialName: string) => { - credentialTypes.add(credentialName) - - // Get category information to determine if credential is core - const category = getCredentialCategory(node.data.category, credentialName) - - // Credential is required if: - // 1. Category is core (Chat Models, Agents, etc), OR - // 2. Parameter explicitly marked as NOT optional (optional: false) - // Default to optional if not explicitly marked - const isRequired = category.isCore || (credentialParam.optional === false) - - const credInfo = { - nodeId: node.id, - nodeName: node.data.name || 'Unknown Node', - nodeCategory: node.data.category || 'Unknown', - nodeType: node.data.type || node.type || 'Unknown', - credentialType: credentialName, - parameterName: credentialParam.name, - label: credentialParam.label || credentialParam.name, - isRequired: isRequired, - isCore: category.isCore, - categoryType: category.type, - categoryDisplayName: category.displayName, - isAssigned: !!hasCredential, - assignedCredentialId: hasCredential || null - } - - allCredentials.push(credInfo) - }) - }) - } - }) - - return { - allCredentials, - hasCredentials: credentialTypes.size > 0 - } - } catch (error) { - console.error('Error in extractAllCredentials:', error) - return { allCredentials: [], hasCredentials: false } + return { + allCredentials: credentials, + hasCredentials } } diff --git a/packages-answers/utils/src/extractMissingCredentials.ts b/packages-answers/utils/src/extractMissingCredentials.ts index 2a9be8ff0e8..9e2773be94c 100644 --- a/packages-answers/utils/src/extractMissingCredentials.ts +++ b/packages-answers/utils/src/extractMissingCredentials.ts @@ -2,7 +2,7 @@ * Utility functions for detecting and managing missing credentials in flows */ -import { getCredentialCategory } from './getCredentialCategory' +import { processFlowCredentials } from './processFlowCredentials' /** * Extract required credentials from flow data and identify missing ones @@ -10,75 +10,14 @@ import { getCredentialCategory } from './getCredentialCategory' * @returns {object} Object containing missing credentials info */ export const extractMissingCredentials = (flowData: string | any) => { - try { - // Parse flow data if it's a string - const flow = typeof flowData === 'string' ? JSON.parse(flowData) : flowData + const { credentials, hasCredentials } = processFlowCredentials(flowData) - if (!flow.nodes || !Array.isArray(flow.nodes)) { - return { missingCredentials: [], hasCredentials: false } - } + const missingCredentials = credentials + .filter((credential) => !credential.isAssigned) + .map(({ isAssigned, assignedCredentialId, ...rest }) => rest) - const missingCredentials: any[] = [] - const credentialTypes = new Set() - - // Iterate through all nodes - flow.nodes.forEach((node: any) => { - if (node.data && node.data.inputParams) { - // Find all credential input parameters - const credentialParams = node.data.inputParams.filter((param: any) => { - return param.type === 'credential' - }) - - credentialParams.forEach((credentialParam: any) => { - // Check if credential is assigned - const hasCredential = - node.data.credential || - (node.data.inputs && node.data.inputs[credentialParam.name]) || - (node.data.inputs && node.data.inputs['FLOWISE_CREDENTIAL_ID']) - - if (!hasCredential) { - // Extract credential names - const credentialNames = credentialParam.credentialNames || [] - - credentialNames.forEach((credentialName: string) => { - credentialTypes.add(credentialName) - - // Get category information to determine if credential is core - const category = getCredentialCategory(node.data.category, credentialName) - - // Credential is required if: - // 1. Category is core (Chat Models, Agents, etc), OR - // 2. Parameter explicitly marked as NOT optional (optional: false) - // Default to optional if not explicitly marked - const isRequired = category.isCore || (credentialParam.optional === false) - - const missingCred = { - nodeId: node.id, - nodeName: node.data.name || 'Unknown Node', - nodeCategory: node.data.category || 'Unknown', - nodeType: node.data.type || node.type || 'Unknown', - credentialType: credentialName, - parameterName: credentialParam.name, - label: credentialParam.label || credentialParam.name, - isRequired: isRequired, - isCore: category.isCore, - categoryType: category.type, - categoryDisplayName: category.displayName - } - - missingCredentials.push(missingCred) - }) - } - }) - } - }) - - return { - missingCredentials, - hasCredentials: credentialTypes.size > 0 - } - } catch (error) { - console.error('Error in extractMissingCredentials:', error) - return { missingCredentials: [], hasCredentials: false } + return { + missingCredentials, + hasCredentials } } diff --git a/packages-answers/utils/src/processFlowCredentials.ts b/packages-answers/utils/src/processFlowCredentials.ts new file mode 100644 index 00000000000..a5bbcf445b3 --- /dev/null +++ b/packages-answers/utils/src/processFlowCredentials.ts @@ -0,0 +1,82 @@ +import { getCredentialCategory } from './getCredentialCategory' + +type FlowData = string | Record + +export type FlowCredentialRecord = { + nodeId: string + nodeName: string + nodeCategory: string + nodeType: string + credentialType: string + parameterName: string + label: string + isRequired: boolean + isCore: boolean + categoryType: string + categoryDisplayName: string + isAssigned: boolean + assignedCredentialId: string | null +} + +type ProcessResult = { + credentials: FlowCredentialRecord[] + hasCredentials: boolean +} + +export const processFlowCredentials = (flowData: FlowData): ProcessResult => { + try { + const flow = typeof flowData === 'string' ? JSON.parse(flowData) : flowData + + if (!flow || !Array.isArray(flow.nodes)) { + return { credentials: [], hasCredentials: false } + } + + const credentials: FlowCredentialRecord[] = [] + const credentialTypes = new Set() + + flow.nodes.forEach((node: any) => { + const inputParams = node?.data?.inputParams + if (!Array.isArray(inputParams)) return + + const credentialParams = inputParams.filter((param: any) => param?.type === 'credential') + + credentialParams.forEach((credentialParam: any) => { + const inputs = node?.data?.inputs + const hasCredential = + node?.data?.credential || (inputs && (inputs[credentialParam.name] || inputs['FLOWISE_CREDENTIAL_ID'])) + + const credentialNames: string[] = credentialParam?.credentialNames || [] + + credentialNames.forEach((credentialName: string) => { + credentialTypes.add(credentialName) + + const category = getCredentialCategory(node?.data?.category, credentialName) + const isRequired = category.isCore || credentialParam?.optional === false + + credentials.push({ + nodeId: node?.id, + nodeName: node?.data?.name || 'Unknown Node', + nodeCategory: node?.data?.category || 'Unknown', + nodeType: node?.data?.type || node?.type || 'Unknown', + credentialType: credentialName, + parameterName: credentialParam?.name, + label: credentialParam?.label || credentialParam?.name, + isRequired, + isCore: category.isCore, + categoryType: category.type, + categoryDisplayName: category.displayName, + isAssigned: !!hasCredential, + assignedCredentialId: hasCredential || null + }) + }) + }) + }) + + return { + credentials, + hasCredentials: credentialTypes.size > 0 + } + } catch (_error) { + return { credentials: [], hasCredentials: false } + } +} diff --git a/packages/ui/src/hooks/useFlowCredentials.ts b/packages/ui/src/hooks/useFlowCredentials.ts new file mode 100644 index 00000000000..d038a261938 --- /dev/null +++ b/packages/ui/src/hooks/useFlowCredentials.ts @@ -0,0 +1,157 @@ +import { useCallback, useRef, useState } from 'react' +import nodesApi from '@/api/nodes' +import { collectFlowCredentials, updateFlowDataWithCredentials } from '@/utils/flowCredentialsHelper' +import { getCredentialModalDismissed, setCredentialModalDismissed } from '@/utils/credentialModalPreference' + +const nodeDefinitionCache = new Map() + +const fetchNodeDefinition = async (nodeName: string) => { + if (!nodeName) return null + if (nodeDefinitionCache.has(nodeName)) return nodeDefinitionCache.get(nodeName) + try { + const response = await nodesApi.getSpecificNode(nodeName) + const nodeDefinition = response?.data || null + if (nodeDefinition) { + nodeDefinitionCache.set(nodeName, nodeDefinition) + } + return nodeDefinition + } catch (_error) { + return null + } +} + +const resetState = (setShowModal: any, setCredentialList: any, setAllCredentialsState: any, setInitialDontShowAgain: any) => { + setShowModal(false) + setCredentialList([]) + setAllCredentialsState([]) + setInitialDontShowAgain(false) +} + +const buildCallbackPayload = (flowState: any, evaluation: any, mode: string) => ({ + flowData: flowState?.raw ?? null, + parsedFlow: flowState?.parsed ?? null, + allCredentials: evaluation?.allCredentials ?? [], + missingCredentials: evaluation?.missingCredentials ?? [], + mode +}) + +export const useFlowCredentials = () => { + const [showCredentialModal, setShowCredentialModal] = useState(false) + const [credentialList, setCredentialList] = useState([]) + const [allCredentialsState, setAllCredentialsState] = useState([]) + const [initialDontShowAgain, setInitialDontShowAgain] = useState(false) + + const preferenceScopeRef = useRef(null) + const callbacksRef = useRef({ onAssign: null, onSkip: null, onCancel: null }) + const flowRef = useRef({ raw: null, parsed: null, format: 'object' }) + const evaluationRef = useRef({ allCredentials: [], missingCredentials: [] }) + const modeRef = useRef('missing') + + const openCredentialModal = useCallback(async (flowData: any, options: any = {}) => { + const { preferenceScope = null, onAssign, onSkip, onCancel, forceShow = false, mode = 'missing' } = options + + const evaluation = await collectFlowCredentials(flowData, { fetchNodeDefinition }) + evaluationRef.current = evaluation + + const listForModal = mode === 'all' ? evaluation.allCredentials : evaluation.missingCredentials + const hasItems = listForModal.length > 0 + const preferenceDismissed = preferenceScope ? getCredentialModalDismissed(preferenceScope) : false + + if (!forceShow && (!hasItems || preferenceDismissed)) { + return { shown: false, evaluation } + } + + const isStringInput = typeof flowData === 'string' + const parsedFlow = isStringInput ? JSON.parse(flowData) : { ...flowData } + + flowRef.current = { + raw: isStringInput ? flowData : parsedFlow, + parsed: parsedFlow, + format: isStringInput ? 'string' : 'object' + } + + callbacksRef.current = { onAssign, onSkip, onCancel } + preferenceScopeRef.current = preferenceScope + modeRef.current = mode + + setCredentialList(listForModal) + setAllCredentialsState(evaluation.allCredentials) + setInitialDontShowAgain(preferenceScope ? preferenceDismissed : false) + setShowCredentialModal(true) + + return { shown: true, evaluation } + }, []) + + const applyPreference = (options: any) => { + const scope = preferenceScopeRef.current + if (!scope) return + if (options?.dontShowDirty) { + setCredentialModalDismissed(scope, !!options.dontShowAgain) + } + } + + const handleAssign = useCallback((credentialAssignments: any, options: any = {}) => { + applyPreference(options) + + const currentFlow = flowRef.current + const format = currentFlow.format + const source = format === 'string' ? currentFlow.raw : currentFlow.parsed + + let nextRaw = currentFlow.raw + let nextParsed = currentFlow.parsed + + if (credentialAssignments && Object.keys(credentialAssignments).length > 0) { + const updatedFlow = updateFlowDataWithCredentials(source, credentialAssignments) + nextParsed = updatedFlow + nextRaw = format === 'string' ? JSON.stringify(updatedFlow) : updatedFlow + } + + flowRef.current = { + raw: nextRaw, + parsed: nextParsed, + format + } + + callbacksRef.current.onAssign?.( + nextRaw, + credentialAssignments, + buildCallbackPayload(flowRef.current, evaluationRef.current, modeRef.current) + ) + + resetState(setShowCredentialModal, setCredentialList, setAllCredentialsState, setInitialDontShowAgain) + preferenceScopeRef.current = null + callbacksRef.current = { onAssign: null, onSkip: null, onCancel: null } + }, []) + + const handleSkip = useCallback((options: any = {}) => { + applyPreference(options) + callbacksRef.current.onSkip?.(flowRef.current.raw, buildCallbackPayload(flowRef.current, evaluationRef.current, modeRef.current)) + + resetState(setShowCredentialModal, setCredentialList, setAllCredentialsState, setInitialDontShowAgain) + preferenceScopeRef.current = null + callbacksRef.current = { onAssign: null, onSkip: null, onCancel: null } + }, []) + + const handleCancel = useCallback((options: any = {}) => { + applyPreference(options) + callbacksRef.current.onCancel?.(flowRef.current.raw, buildCallbackPayload(flowRef.current, evaluationRef.current, modeRef.current)) + + resetState(setShowCredentialModal, setCredentialList, setAllCredentialsState, setInitialDontShowAgain) + preferenceScopeRef.current = null + callbacksRef.current = { onAssign: null, onSkip: null, onCancel: null } + }, []) + + return { + showCredentialModal, + missingCredentials: credentialList, + allCredentials: allCredentialsState, + initialDontShowAgain, + modalMode: modeRef.current, + openCredentialModal, + handleAssign, + handleSkip, + handleCancel + } +} + +export default useFlowCredentials diff --git a/packages/ui/src/utils/flowCredentialsHelper.js b/packages/ui/src/utils/flowCredentialsHelper.js index 4078a39f3ad..eeb9fac4e0e 100644 --- a/packages/ui/src/utils/flowCredentialsHelper.js +++ b/packages/ui/src/utils/flowCredentialsHelper.js @@ -5,10 +5,36 @@ import { extractMissingCredentials } from '@utils/extractMissingCredentials' import { extractAllCredentials } from '@utils/extractAllCredentials' import { getCredentialCategory } from '@utils/getCredentialCategory' +import { processFlowCredentials } from '@utils/processFlowCredentials' // Re-export for convenience export { extractMissingCredentials, extractAllCredentials, getCredentialCategory } +/** + * Collect all credential information from flow data (both missing and all credentials) + * This is an async wrapper that combines extractMissingCredentials and extractAllCredentials + * @param {string|object} flowData - Flow data as JSON string or object + * @returns {Promise} Object containing missingCredentials and allCredentials arrays + */ +export const collectFlowCredentials = async (flowData) => { + try { + const { credentials } = processFlowCredentials(flowData) + const missingCredentials = credentials + .filter((credential) => !credential.isAssigned) + .map(({ isAssigned, assignedCredentialId, ...rest }) => rest) + + return { + missingCredentials, + allCredentials: credentials + } + } catch (_error) { + return { + missingCredentials: [], + allCredentials: [] + } + } +} + /** * Convert camelCase or PascalCase string to sentence case * @param {string} str - String in camelCase or PascalCase @@ -270,18 +296,18 @@ export const isValidCredentialAssignment = (node, credentialId, availableCredent */ export const organizeCredentialsByPriority = (groupedCredentials) => { const sections = { - required: [], // Unconnected required credentials - optional: [], // Unconnected optional credentials - connected: [] // All connected credentials + required: [], // Unconnected required credentials + optional: [], // Unconnected optional credentials + connected: [] // All connected credentials } Object.entries(groupedCredentials).forEach(([groupKey, group]) => { const isConnected = group.isAssigned || false - + // Check if ANY node in this group is marked as required // isRequired is calculated as: category.isCore || !credentialParam.optional const isRequired = group.nodes?.some((node) => node.isRequired === true) || false - + // Also track isCore for sorting connected credentials const isCore = group.nodes?.some((node) => node.isCore === true) || false @@ -308,7 +334,7 @@ export const organizeCredentialsByPriority = (groupedCredentials) => { // Sort functions const sortByLabel = (a, b) => (a.label || '').localeCompare(b.label || '') - + // Sort connected section: required first, then alphabetically within each group const sortConnected = (a, b) => { // Required credentials before optional diff --git a/packages/ui/src/views/agentflowsv2/Canvas.jsx b/packages/ui/src/views/agentflowsv2/Canvas.jsx index 3203dbe0316..873e858b955 100644 --- a/packages/ui/src/views/agentflowsv2/Canvas.jsx +++ b/packages/ui/src/views/agentflowsv2/Canvas.jsx @@ -32,6 +32,8 @@ import EditNodeDialog from '@/views/agentflowsv2/EditNodeDialog' import ChatPopUp from '@/views/chatmessage/ChatPopUp' import ValidationPopUp from '@/views/chatmessage/ValidationPopUp' import { flowContext } from '@/store/context/ReactFlowContext' +import useFlowCredentials from '@/hooks/useFlowCredentials' +import UnifiedCredentialsModal from '@/ui-component/dialog/UnifiedCredentialsModal' // API import nodesApi from '@/api/nodes' @@ -101,6 +103,19 @@ const AgentflowCanvas = () => { const [editNodeDialogOpen, setEditNodeDialogOpen] = useState(false) const [editNodeDialogProps, setEditNodeDialogProps] = useState({}) + const { + showCredentialModal, + missingCredentials, + allCredentials, + modalMode, + initialDontShowAgain, + openCredentialModal, + handleAssign, + handleSkip, + handleCancel + } = useFlowCredentials() + const hasPromptedCredentialsRef = useRef(false) + const reactFlowWrapper = useRef(null) // ==============================|| Chatflow API ||============================== // @@ -163,8 +178,11 @@ const AgentflowCanvas = () => { setNodes(nodes) setEdges(flowData.edges || []) setTimeout(() => setDirty(), 0) + + // Credential modal will be triggered automatically after save via useEffect + // watching canvasDataStore.chatflow.flowData (lines 585-593) } catch (e) { - console.error(e) + errorFailed('Failed to load flow data. Please verify the file content.') } } @@ -528,6 +546,10 @@ const AgentflowCanvas = () => { const initialFlow = chatflow.flowData ? JSON.parse(chatflow.flowData) : [] setNodes(initialFlow.nodes || []) setEdges(initialFlow.edges || []) + // Allow modal to check for missing credentials when loading existing flow + // Modal will show immediately if credentials are missing (unless user dismissed it) + // MUST set this BEFORE dispatch to allow modal trigger + hasPromptedCredentialsRef.current = false dispatch({ type: SET_CHATFLOW, chatflow }) } else if (getSpecificChatflowApi.error) { errorFailed(`Failed to retrieve ${canvasTitle}: ${getSpecificChatflowApi.error.response.data.message}`) @@ -540,6 +562,9 @@ const AgentflowCanvas = () => { useEffect(() => { if (createNewChatflowApi.data) { const chatflow = createNewChatflowApi.data + // Reset to allow modal to show after first save + // MUST set this BEFORE dispatch to allow modal trigger + hasPromptedCredentialsRef.current = false dispatch({ type: SET_CHATFLOW, chatflow }) saveChatflowSuccess() window.history.replaceState(state, null, `/v2/agentcanvas/${chatflow.id}`) @@ -553,6 +578,9 @@ const AgentflowCanvas = () => { // Update chatflow successful useEffect(() => { if (updateChatflowApi.data) { + // Reset to allow modal to check for missing credentials after update + // MUST set this BEFORE dispatch to allow modal trigger + hasPromptedCredentialsRef.current = false dispatch({ type: SET_CHATFLOW, chatflow: updateChatflowApi.data }) saveChatflowSuccess() } else if (updateChatflowApi.error) { @@ -572,8 +600,83 @@ const AgentflowCanvas = () => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [canvasDataStore.chatflow]) + // Only show credential modal for flows that have been saved to database (have an ID) + // This prevents modal from showing during template load (before save) + useEffect(() => { + const currentChatflow = canvasDataStore.chatflow + if (!reactFlowInstance) return + if (!currentChatflow?.flowData || !currentChatflow?.id || hasPromptedCredentialsRef.current) return + const canManageFlow = + currentChatflow.canEdit === undefined && currentChatflow.isOwner === undefined + ? true + : currentChatflow.canEdit ?? currentChatflow.isOwner ?? false + if (!canManageFlow) return + + hasPromptedCredentialsRef.current = true + const preferenceScope = `flow:${currentChatflow.id}` + openCredentialModal(currentChatflow.flowData, { preferenceScope }).catch((error) => { + if (process.env.NODE_ENV === 'development') { + console.error('[Canvas] Failed to open credential modal:', error) + } + }) + }, [ + canvasDataStore.chatflow?.flowData, + canvasDataStore.chatflow?.id, + canvasDataStore.chatflow?.canEdit, + canvasDataStore.chatflow?.isOwner, + openCredentialModal, + reactFlowInstance + ]) + + // Handle QuickSetup URL parameter - opens modal in "manage credentials" mode + useEffect(() => { + const checkQuickSetupParam = () => { + const urlParams = new URLSearchParams(window.location.search) + const isQuickSetup = urlParams.get('QuickSetup') === 'true' + + const canManageFlow = + canvasDataStore.chatflow?.canEdit === undefined && canvasDataStore.chatflow?.isOwner === undefined + ? true + : canvasDataStore.chatflow?.canEdit ?? canvasDataStore.chatflow?.isOwner ?? false + + if (isQuickSetup && reactFlowInstance && canvasDataStore.chatflow?.flowData && canvasDataStore.chatflow?.id && canManageFlow) { + // Remove QuickSetup parameter from URL + urlParams.delete('QuickSetup') + const newUrl = `${window.location.pathname}${urlParams.toString() ? '?' + urlParams.toString() : ''}` + window.history.replaceState({}, '', newUrl) + + // Open modal in "all credentials" mode with forceShow + const preferenceScope = `flow:${canvasDataStore.chatflow.id}` + openCredentialModal(canvasDataStore.chatflow.flowData, { + preferenceScope, + mode: 'all', + forceShow: true + }).catch((error) => { + if (process.env.NODE_ENV === 'development') { + console.error('[Canvas] Failed to open credential modal (QuickSetup):', error) + } + }) + } + } + + checkQuickSetupParam() + + // Listen for popstate events (triggered by the QuickSetup button) + window.addEventListener('popstate', checkQuickSetupParam) + return () => window.removeEventListener('popstate', checkQuickSetupParam) + }, [ + canvasDataStore.chatflow?.flowData, + canvasDataStore.chatflow?.id, + canvasDataStore.chatflow?.canEdit, + canvasDataStore.chatflow?.isOwner, + openCredentialModal, + reactFlowInstance + ]) + // Initialization useEffect(() => { + // DO NOT reset hasPromptedCredentialsRef here - it prevents duplicate modals + // The ref is managed by the credential modal useEffect and save handlers setIsSyncNodesButtonEnabled(false) if (chatflowId) { getSpecificChatflowApi.request(chatflowId) @@ -585,6 +688,10 @@ const AgentflowCanvas = () => { setNodes([]) setEdges([]) } + // Block credential modal until user saves + // Modal should only show AFTER user clicks save + // MUST set this BEFORE dispatch to prevent modal trigger + hasPromptedCredentialsRef.current = true dispatch({ type: SET_CHATFLOW, chatflow: { @@ -613,6 +720,9 @@ const AgentflowCanvas = () => { //TODO: prevent paste event when input focused, temporary fix: catch chatflow syntax if (pasteData.includes('{"nodes":[') && pasteData.includes('],"edges":[')) { handleLoadFlow(pasteData) + // Block credential modal until user saves + // Modal should only show AFTER user clicks save + hasPromptedCredentialsRef.current = true } } @@ -628,6 +738,9 @@ const AgentflowCanvas = () => { useEffect(() => { if (templateFlowData && templateFlowData.includes('"nodes":[') && templateFlowData.includes('],"edges":[')) { handleLoadFlow(templateFlowData) + // Block credential modal until user saves + // Modal should only show AFTER user clicks save + hasPromptedCredentialsRef.current = true } // eslint-disable-next-line react-hooks/exhaustive-deps @@ -779,6 +892,17 @@ const AgentflowCanvas = () => { + + ) } diff --git a/packages/ui/src/views/canvas/index.jsx b/packages/ui/src/views/canvas/index.jsx index 12c377559f3..299f19ef8ab 100644 --- a/packages/ui/src/views/canvas/index.jsx +++ b/packages/ui/src/views/canvas/index.jsx @@ -58,7 +58,7 @@ import { usePrompt } from '@/utils/usePrompt' import { FLOWISE_CREDENTIAL_ID } from '@/store/constant' // credential checking -import { useCredentialChecker } from '@/hooks/useCredentialChecker' +import useFlowCredentials from '@/hooks/useFlowCredentials' import UnifiedCredentialsModal from '@/ui-component/dialog/UnifiedCredentialsModal' const nodeTypes = { customNode: CanvasNode, stickyNote: StickyNote } const edgeTypes = { buttonedge: ButtonEdge } @@ -113,12 +113,15 @@ const Canvas = ({ chatflowid: chatflowId }) => { const { showCredentialModal, missingCredentials, - checkCredentials, + allCredentials, + modalMode, initialDontShowAgain, + openCredentialModal, handleAssign, handleSkip, handleCancel - } = useCredentialChecker() + } = useFlowCredentials() + const hasPromptedCredentialsRef = useRef(false) // ==============================|| Chatflow API ||============================== // @@ -233,6 +236,11 @@ const Canvas = ({ chatflowid: chatflowId }) => { flowData: JSON.stringify({ nodes, edges }) } + // Block credential modal from showing until user saves + // Modal should only show AFTER user clicks save + // MUST set this BEFORE dispatch to prevent modal trigger + hasPromptedCredentialsRef.current = true + dispatch({ type: SET_CHATFLOW, chatflow: newChatflow }) setChatflow(newChatflow) setNodes(nodes) @@ -560,6 +568,10 @@ const Canvas = ({ chatflowid: chatflowId }) => { const initialFlow = chatflow.flowData ? JSON.parse(chatflow.flowData) : [] setNodes(initialFlow.nodes || []) setEdges(initialFlow.edges || []) + // Allow modal to check for missing credentials when loading existing flow + // Modal will show immediately if credentials are missing (unless user dismissed it) + // MUST set this BEFORE dispatch to allow modal trigger + hasPromptedCredentialsRef.current = false dispatch({ type: SET_CHATFLOW, chatflow }) } else if (getSpecificChatflowApi?.error?.response?.data?.message) { errorFailed(`Failed to save ${canvasTitle}: ${getSpecificChatflowApi.error.response.data.message}`) @@ -575,6 +587,9 @@ const Canvas = ({ chatflowid: chatflowId }) => { if (createNewChatflowApi?.data) { const chatflow = createNewChatflowApi.data // console.log('โœ… Create new chatflow successful, navigating to:', `/${isAgentCanvas ? 'agentcanvas' : 'canvas'}/${chatflow.id}`) + // Reset to allow modal to show after first save + // MUST set this BEFORE dispatch to allow modal trigger + hasPromptedCredentialsRef.current = false dispatch({ type: SET_CHATFLOW, chatflow }) saveChatflowSuccess() navigate(`/${isAgentCanvas ? 'agentcanvas' : 'canvas'}/${chatflow.id}`, { @@ -593,6 +608,9 @@ const Canvas = ({ chatflowid: chatflowId }) => { useEffect(() => { if (updateChatflowApi?.data) { // console.log('โœ… Update chatflow successful, NOT navigating (should we?)') + // Reset to allow modal to check for missing credentials after update + // MUST set this BEFORE dispatch to allow modal trigger + hasPromptedCredentialsRef.current = false dispatch({ type: SET_CHATFLOW, chatflow: updateChatflowApi.data }) saveChatflowSuccess() } else if (updateChatflowApi?.error?.response?.data?.message) { @@ -615,10 +633,59 @@ const Canvas = ({ chatflowid: chatflowId }) => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [canvasDataStore.chatflow]) + // Only show credential modal for flows that have been saved to database (have an ID) + // This prevents modal from showing during template load (before save) + useEffect(() => { + if (canvasDataStore.chatflow?.flowData && canvasDataStore.chatflow?.id && !hasPromptedCredentialsRef.current) { + hasPromptedCredentialsRef.current = true + const preferenceScope = canvasDataStore.chatflow?.id ? `flow:${canvasDataStore.chatflow.id}` : null + openCredentialModal(canvasDataStore.chatflow.flowData, { preferenceScope }).catch((error) => { + if (process.env.NODE_ENV === 'development') { + console.error('[Canvas] Failed to open credential modal:', error) + } + }) + } + }, [canvasDataStore.chatflow?.flowData, canvasDataStore.chatflow?.id, openCredentialModal]) + + // Handle QuickSetup URL parameter - opens modal in "manage credentials" mode + useEffect(() => { + const checkQuickSetupParam = () => { + const urlParams = new URLSearchParams(window.location.search) + const isQuickSetup = urlParams.get('QuickSetup') === 'true' + + if (isQuickSetup && canvasDataStore.chatflow?.flowData && canvasDataStore.chatflow?.id) { + // Remove QuickSetup parameter from URL + urlParams.delete('QuickSetup') + const newUrl = `${window.location.pathname}${urlParams.toString() ? '?' + urlParams.toString() : ''}` + window.history.replaceState({}, '', newUrl) + + // Open modal in "all credentials" mode with forceShow + const preferenceScope = `flow:${canvasDataStore.chatflow.id}` + openCredentialModal(canvasDataStore.chatflow.flowData, { + preferenceScope, + mode: 'all', + forceShow: true + }).catch((error) => { + if (process.env.NODE_ENV === 'development') { + console.error('[Canvas] Failed to open credential modal (QuickSetup):', error) + } + }) + } + } + + checkQuickSetupParam() + + // Listen for popstate events (triggered by the QuickSetup button) + window.addEventListener('popstate', checkQuickSetupParam) + return () => window.removeEventListener('popstate', checkQuickSetupParam) + }, [canvasDataStore.chatflow?.flowData, canvasDataStore.chatflow?.id, openCredentialModal]) + // Initialization useEffect(() => { // console.log('๐ŸŽจ Canvas initialization effect running:', { chatflowId }) + // DO NOT reset hasPromptedCredentialsRef here - it prevents duplicate modals + // The ref is managed by the credential modal useEffect and save handlers setIsSyncNodesButtonEnabled(false) setIsUpsertButtonEnabled(false) if (chatflowId) { @@ -648,6 +715,12 @@ const Canvas = ({ chatflowid: chatflowId }) => { deployed: false, isPublic: false } + + // Block credential modal from showing until user saves + // Modal should only show AFTER user clicks save + // MUST set this BEFORE dispatch to prevent modal trigger + hasPromptedCredentialsRef.current = true + setChatflow(newChatflow) dispatch({ type: SET_CHATFLOW, chatflow: newChatflow }) @@ -664,6 +737,9 @@ const Canvas = ({ chatflowid: chatflowId }) => { // console.log('๐ŸŽจ No duplicated flow data, creating blank canvas') setNodes([]) setEdges([]) + // Block credential modal for blank canvas until user saves + // MUST set this BEFORE dispatch to prevent modal trigger + hasPromptedCredentialsRef.current = true setChatflow({ name: templateName ? `Copy of ${templateName}` : `Untitled ${canvasTitle}` }) @@ -816,10 +892,11 @@ const Canvas = ({ chatflowid: chatflowId }) => { diff --git a/packages/ui/src/views/marketplaces/MarketplaceCanvas.jsx b/packages/ui/src/views/marketplaces/MarketplaceCanvas.jsx index 0ec1b4562de..92595ddf550 100644 --- a/packages/ui/src/views/marketplaces/MarketplaceCanvas.jsx +++ b/packages/ui/src/views/marketplaces/MarketplaceCanvas.jsx @@ -15,10 +15,6 @@ import MarketplaceCanvasHeader from './MarketplaceCanvasHeader' import StickyNote from '../canvas/StickyNote' import ConfirmDialog from '@/ui-component/dialog/ConfirmDialog' -// credential checking -import { useCredentialChecker } from '@/hooks/useCredentialChecker' -import UnifiedCredentialsModal from '@/ui-component/dialog/UnifiedCredentialsModal' - const nodeTypes = { customNode: MarketplaceCanvasNode, stickyNote: StickyNote } const edgeTypes = { buttonedge: '' } @@ -38,17 +34,6 @@ const MarketplaceCanvas = () => { const reactFlowWrapper = useRef(null) - // Credential checking hook - const { - showCredentialModal, - missingCredentials, - checkCredentials, - initialDontShowAgain, - handleAssign, - handleSkip, - handleCancel - } = useCredentialChecker() - // ==============================|| useEffect ||============================== // useEffect(() => { @@ -57,8 +42,6 @@ const MarketplaceCanvas = () => { setNodes(initialFlow.nodes || []) setEdges(initialFlow.edges || []) } - - // eslint-disable-next-line react-hooks/exhaustive-deps }, [flowData]) const onChatflowCopy = (stateData) => { @@ -138,17 +121,6 @@ const MarketplaceCanvas = () => { {/* Confirm Dialog */} - - {/* Unified Credentials Modal */} - ) } From 2214cc86786572c26c7a6fed4d2fc61c568c0583 Mon Sep 17 00:00:00 2001 From: DiegoC Date: Wed, 29 Oct 2025 16:34:53 -0300 Subject: [PATCH 2/3] Fix: Remove type override to restore Agentflow templates display (ANS-59) (#647) ## Summary Removed a type override in the marketplace service that was preventing Agentflow templates from showing up in the templates page. ## Changes - Removed `customTemplate.type = chatflow.type` assignment in `saveCustomTemplate` function - Allows Agentflow templates to maintain their correct type instead of being overridden by the chatflow type ## Problem The type override was causing Agentflow templates to be incorrectly classified, which prevented them from displaying properly on the templates page. ## Solution Removed the line that was overwriting the template type with the chatflow type, allowing the template's original type to be preserved correctly. ## Files Changed - `packages/server/src/services/marketplaces/index.ts` ## Testing Verify that Agentflow templates now appear correctly on the templates page. --- packages/server/src/services/marketplaces/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/server/src/services/marketplaces/index.ts b/packages/server/src/services/marketplaces/index.ts index c33bd6b6f34..3f677f2169e 100644 --- a/packages/server/src/services/marketplaces/index.ts +++ b/packages/server/src/services/marketplaces/index.ts @@ -390,7 +390,6 @@ const saveCustomTemplate = async (body: any, user: IUser): Promise => { customTemplate.apiConfig = chatflow.apiConfig customTemplate.speechToText = chatflow.speechToText customTemplate.category = chatflow.category - customTemplate.type = chatflow.type customTemplate.description = customTemplate.description || chatflow.description } else if (body.tool) { const flowData = { From f4e9d556b6aa34c239b147fa7167a9bbc015690f Mon Sep 17 00:00:00 2001 From: Max Techera Date: Fri, 31 Oct 2025 09:56:53 -0300 Subject: [PATCH 3/3] feat(ANS-41): Implement follow-up prompts in web app + backend refactor (#648) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary **ANS-41**: Complete implementation of follow-up prompts across backend and frontend ### Backend (Already Fixed โœ…) - Refactored follow-up prompts generation in `packages/components/src/followUpPrompts.ts` - Simplified credential data retrieval - Updated OpenAI and Google Generative AI provider integrations - Updated dependencies (@langchain/core, @langchain/openai, zod) - Follow-up prompts now working in SidekickStudio (Flowise) UI ### Frontend (New โœจ) - Implemented follow-up prompts display in Next.js web app - Created `FollowUpPrompts.tsx` component with Material-UI chips - Added sparkles icon (โœจ) and "Try these prompts" label matching embed widget design - Integrated into MessageCard to display after assistant messages - Only shows on last assistant message, auto-clears when user sends new message ## Technical Changes ### Type Definitions - Added `followUpPrompts?: string[]` to Message interface ### Components - **New:** `packages-answers/ui/src/FollowUpPrompts.tsx` - Material-UI Chip-based prompt display - Sparkles icon with "Try these prompts" label - Click handler sends prompt as new message ### Integration - **Modified:** `packages-answers/ui/src/Message/Message.tsx` - Integrated FollowUpPrompts component - Shows only for last assistant message - **Modified:** `packages-answers/ui/src/ChatRoom.tsx` - Simple isLastMessage detection logic - Passes followUpPrompts prop to MessageCard - **Modified:** `packages-answers/ui/src/AnswersContext.tsx` - Robust JSON parsing for both streaming and non-streaming modes - Handles backend double-stringification bug defensively - Try-catch error handling with fallback ## Backend Issue Found & Handled Discovered that commit `604e6ad03` re-introduced double-stringification bug in: - `packages/server/src/utils/buildChatflow.ts` (lines 653, 824) - `packages/server/src/utils/buildAgentflow.ts` (line 1930) Our frontend implementation handles this defensively with double-parse logic, matching the pattern used in Flowise UI. ## Test Plan - [x] Backend: Verify follow-up prompts generate correctly across all providers - [x] Backend: Test credential handling - [x] Backend: Validate dependency updates don't break existing functionality - [x] Frontend: Follow-up prompts display after assistant messages - [x] Frontend: Only last assistant message shows prompts - [x] Frontend: Prompts clear when user sends new message - [x] Frontend: Click handler sends prompt as new message - [ ] E2E: Test in dev environment across all chatflow types - [ ] E2E: Verify streaming and non-streaming modes - [ ] E2E: Test across different LLM providers ## Status โœ… Backend - Working in SidekickStudio (Flowise) UI โœ… Frontend - Implemented in Next.js web app โณ Ready for testing and review --- package.json | 2 +- packages-answers/types/src/index.ts | 1 + packages-answers/ui/src/AnswersContext.tsx | 48 +- packages-answers/ui/src/ChatRoom.tsx | 30 +- packages-answers/ui/src/FollowUpPrompts.tsx | 51 ++ packages-answers/ui/src/Message/Message.tsx | 29 +- .../AzureChatOpenAI/AzureChatOpenAI.ts | 21 +- .../AzureChatOpenAI/FlowiseAzureChatOpenAI.ts | 2 +- .../chatmodels/ChatOpenAI/AAIChatOpenAI.ts | 18 +- .../nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts | 16 +- .../ChatOpenAI/FlowiseChatOpenAI.ts | 2 +- .../embeddings/AAIEmbedding/AAIEmbedding.ts | 3 +- packages/components/package.json | 8 +- packages/components/src/followUpPrompts.ts | 37 +- packages/server/src/utils/buildAgentflow.ts | 2 +- packages/server/src/utils/buildChatflow.ts | 4 +- .../dialog/ChatflowConfigurationDialog.jsx | 16 +- .../ui-component/extended/FollowUpPrompts.jsx | 3 +- pnpm-lock.yaml | 653 +++++++++--------- 19 files changed, 508 insertions(+), 438 deletions(-) create mode 100644 packages-answers/ui/src/FollowUpPrompts.tsx diff --git a/package.json b/package.json index f9e7e221b3a..52145715804 100644 --- a/package.json +++ b/package.json @@ -156,7 +156,7 @@ "resolutions": { "@google/generative-ai": "^0.24.0", "@grpc/grpc-js": "^1.10.10", - "@langchain/core": "0.3.59", + "@langchain/core": "0.3.61", "@qdrant/openapi-typescript-fetch": "1.2.6", "openai": "4.96.0", "protobufjs": "7.4.0" diff --git a/packages-answers/types/src/index.ts b/packages-answers/types/src/index.ts index 9483a8616f7..efcef0541b7 100644 --- a/packages-answers/types/src/index.ts +++ b/packages-answers/types/src/index.ts @@ -350,6 +350,7 @@ export interface Message extends Partial { role: string feedbacks?: MessageFeedback[] content: string + followUpPrompts?: string[] } export type AlgoliaHit = Hit<{ diff --git a/packages-answers/ui/src/AnswersContext.tsx b/packages-answers/ui/src/AnswersContext.tsx index 732c2bcf12b..c406431dc5c 100644 --- a/packages-answers/ui/src/AnswersContext.tsx +++ b/packages-answers/ui/src/AnswersContext.tsx @@ -533,6 +533,29 @@ export function AnswersProvider({ else if (data.json) text = '```json\n' + JSON.stringify(data.json, null, 2) else text = JSON.stringify(data, null, 2) + // Parse followUpPrompts safely - handle double-stringification from backend + let followUpPrompts = undefined + if (data?.followUpPrompts) { + try { + followUpPrompts = data.followUpPrompts + // First parse if it's a string + if (typeof followUpPrompts === 'string') { + followUpPrompts = JSON.parse(followUpPrompts) + } + // Second parse if still a string (backend double-stringifies) + if (typeof followUpPrompts === 'string') { + followUpPrompts = JSON.parse(followUpPrompts) + } + // Ensure it's an array + if (!Array.isArray(followUpPrompts)) { + followUpPrompts = undefined + } + } catch (e) { + console.error('Failed to parse followUpPrompts:', e) + followUpPrompts = undefined + } + } + setMessages((prevMessages) => [ ...prevMessages, { @@ -540,6 +563,7 @@ export function AnswersProvider({ content: text, id: data?.chatMessageId, sourceDocuments: data?.sourceDocuments, + followUpPrompts, usedTools: data?.usedTools, fileAnnotations: data?.fileAnnotations, agentReasoning: data?.agentReasoning, @@ -636,17 +660,25 @@ export function AnswersProvider({ if (payload.data.chatId) { setChatId(payload.data.chatId) } - if (payload.data.chatMessageId) { - setMessages((prevMessages) => { - const allMessages = [...cloneDeep(prevMessages)] - const lastMessage = allMessages[allMessages.length - 1] - if (lastMessage?.role === 'user') return allMessages + setMessages((prevMessages) => { + const allMessages = [...cloneDeep(prevMessages)] + const lastMessage = allMessages[allMessages.length - 1] + if (lastMessage?.role === 'user') return allMessages + + // Update message ID and chat info + if (payload.data.chatMessageId) { lastMessage.id = payload.data.chatMessageId lastMessage.chatId = payload.data.chatId lastMessage.chatflowid = chatflowid - return allMessages - }) - } + } + + // Add follow-up prompts if present + if (payload.data.followUpPrompts) { + lastMessage.followUpPrompts = payload.data.followUpPrompts + } + + return allMessages + }) break case 'error': setError(payload.data) diff --git a/packages-answers/ui/src/ChatRoom.tsx b/packages-answers/ui/src/ChatRoom.tsx index 3584da6836a..3e9a744da18 100644 --- a/packages-answers/ui/src/ChatRoom.tsx +++ b/packages-answers/ui/src/ChatRoom.tsx @@ -59,17 +59,25 @@ export const ChatRoom: React.FC = ({ onCancel={() => setShowFeedbackContentDialog(false)} onConfirm={submitFeedbackContent} /> - {messages?.map((message, index) => ( - - ))} + {messages?.map((message, index) => { + // Simple check: is this the last message AND is it an assistant message? + // This ensures follow-up prompts only show on the very last assistant response + const isLastMessage = index === messages.length - 1 && message.role === 'assistant' + + return ( + + ) + })} {error ? ( <> diff --git a/packages-answers/ui/src/FollowUpPrompts.tsx b/packages-answers/ui/src/FollowUpPrompts.tsx new file mode 100644 index 00000000000..8aa3beb56e8 --- /dev/null +++ b/packages-answers/ui/src/FollowUpPrompts.tsx @@ -0,0 +1,51 @@ +import React from 'react' +import { Box, Typography, Chip } from '@mui/material' +import { IconSparkles } from '@tabler/icons-react' + +interface FollowUpPromptsProps { + prompts: string[] + onPromptClick: (prompt: string) => void +} + +export const FollowUpPrompts: React.FC = ({ prompts, onPromptClick }) => { + // Safety check for prompts + if (!prompts || prompts.length === 0) { + return null + } + + return ( + + {/* Header with sparkles icon and text */} + + + + Try these prompts + + + + {/* Prompts container */} + + {prompts.map((prompt, index) => ( + onPromptClick(prompt)} + variant='outlined' + sx={{ + cursor: 'pointer', + borderRadius: '15px', + fontSize: '0.875rem', + '&:hover': { + backgroundColor: 'action.hover', + filter: 'brightness(0.9)' + }, + '&:active': { + filter: 'brightness(0.75)' + } + }} + /> + ))} + + + ) +} diff --git a/packages-answers/ui/src/Message/Message.tsx b/packages-answers/ui/src/Message/Message.tsx index 429ef516a46..6b81aea6fca 100644 --- a/packages-answers/ui/src/Message/Message.tsx +++ b/packages-answers/ui/src/Message/Message.tsx @@ -25,6 +25,7 @@ import { FileUpload } from '../types' import isArray from 'lodash/isArray' import { SimpleMarkdown } from './SimpleMarkdown' import { LoadingAnimation } from './LoadingAnimation' +import { FollowUpPrompts } from '../FollowUpPrompts' const CodeCard = dynamic(() => import('./CodeCard').then((mod) => ({ default: mod.CodeCard }))) const Dialog = dynamic(() => import('@mui/material/Dialog')) const DialogActions = dynamic(() => import('@mui/material/DialogActions')) @@ -68,6 +69,8 @@ interface MessageCardProps extends Partial>, MessageExt ) => void isFeedbackAllowed?: boolean chatflowid?: string + isLastMessage?: boolean + followUpPrompts?: string[] } const getLanguageFromClassName = (className: string | undefined) => { @@ -136,6 +139,8 @@ export const MessageCard = ({ chatflowid, id: messageId, usedTools, + isLastMessage, + followUpPrompts, ...other }: MessageCardProps) => { other = { ...other, role, user } as any @@ -259,17 +264,6 @@ export const MessageCard = ({ return fileUploads }, [fileUploads]) - // Update the isLastMessage check to use content instead of ID - const isLastMessage = React.useMemo(() => { - if (!messages || !content) return false - - // Get the last non-user message - const lastAiMessage = [...messages].reverse().find((msg) => msg.role !== 'userMessage' && msg.role !== 'user') - - // Compare content to identify if this is the last message - return lastAiMessage?.content === content - }, [messages, content]) - // Modify the effect to detect partial code blocks React.useEffect(() => { if (content && !isUserMessage && setPreviewCode && isLastMessage) { @@ -707,6 +701,19 @@ export const MessageCard = ({ ) : null} + {/* Follow-up prompts - only show for assistant messages that are the last message */} + {role === 'assistant' && isLastMessage && followUpPrompts && followUpPrompts.length > 0 && ( + { + // Send the follow-up prompt as a new message + sendMessage({ + content: prompt, + sidekick + }) + }} + /> + )} {(other as any).action && ( {(other as any).action.text && ( diff --git a/packages/components/nodes/chatmodels/AzureChatOpenAI/AzureChatOpenAI.ts b/packages/components/nodes/chatmodels/AzureChatOpenAI/AzureChatOpenAI.ts index 02834a105a2..6cea5325123 100644 --- a/packages/components/nodes/chatmodels/AzureChatOpenAI/AzureChatOpenAI.ts +++ b/packages/components/nodes/chatmodels/AzureChatOpenAI/AzureChatOpenAI.ts @@ -1,9 +1,10 @@ -import { AzureOpenAIInput, AzureChatOpenAI as LangchainAzureChatOpenAI, ChatOpenAIFields, OpenAIClient } from '@langchain/openai' +import { AzureOpenAIInput, AzureChatOpenAI as LangchainAzureChatOpenAI, ChatOpenAIFields } from '@langchain/openai' import { BaseCache } from '@langchain/core/caches' import { ICommonObject, IMultiModalOption, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' import { getModels, MODEL_TYPE } from '../../../src/modelLoader' import { AzureChatOpenAI } from './FlowiseAzureChatOpenAI' +import { OpenAI as OpenAIClient } from 'openai' const serverCredentialsExists = !!process.env.AZURE_OPENAI_API_KEY && @@ -199,7 +200,7 @@ class AzureChatOpenAI_ChatModels implements INode { const topP = nodeData.inputs?.topP as string const basePath = nodeData.inputs?.basepath as string const baseOptions = nodeData.inputs?.baseOptions - const reasoningEffort = nodeData.inputs?.reasoningEffort as OpenAIClient.Chat.ChatCompletionReasoningEffort + const reasoningEffort = nodeData.inputs?.reasoningEffort as OpenAIClient.ReasoningEffort | null const credentialData = await getCredentialData(nodeData.credential ?? '', options) const azureOpenAIApiKey = getCredentialParam('azureOpenAIApiKey', credentialData, nodeData) @@ -237,11 +238,19 @@ class AzureChatOpenAI_ChatModels implements INode { console.error('Error parsing base options', exception) } } - if (modelName === 'o3-mini' || modelName.includes('o1')) { + if (modelName.includes('o1') || modelName.includes('o3') || modelName.includes('gpt-5')) { delete obj.temperature - } - if ((modelName.includes('o1') || modelName.includes('o3')) && reasoningEffort) { - obj.reasoningEffort = reasoningEffort + delete obj.stop + const reasoning: OpenAIClient.Reasoning = {} + if (reasoningEffort) { + reasoning.effort = reasoningEffort + } + obj.reasoning = reasoning + + if (maxTokens) { + delete obj.maxTokens + obj.maxCompletionTokens = parseInt(maxTokens, 10) + } } const multiModalOption: IMultiModalOption = { diff --git a/packages/components/nodes/chatmodels/AzureChatOpenAI/FlowiseAzureChatOpenAI.ts b/packages/components/nodes/chatmodels/AzureChatOpenAI/FlowiseAzureChatOpenAI.ts index 7a86a3a37c9..541cb2226cf 100644 --- a/packages/components/nodes/chatmodels/AzureChatOpenAI/FlowiseAzureChatOpenAI.ts +++ b/packages/components/nodes/chatmodels/AzureChatOpenAI/FlowiseAzureChatOpenAI.ts @@ -27,7 +27,7 @@ export class AzureChatOpenAI extends LangchainAzureChatOpenAI implements IVision } revertToOriginalModel(): void { - this.modelName = this.configuredModel + this.model = this.configuredModel this.maxTokens = this.configuredMaxToken } diff --git a/packages/components/nodes/chatmodels/ChatOpenAI/AAIChatOpenAI.ts b/packages/components/nodes/chatmodels/ChatOpenAI/AAIChatOpenAI.ts index 0fa01e67911..4f8a5931b27 100644 --- a/packages/components/nodes/chatmodels/ChatOpenAI/AAIChatOpenAI.ts +++ b/packages/components/nodes/chatmodels/ChatOpenAI/AAIChatOpenAI.ts @@ -1,10 +1,11 @@ -import { ChatOpenAI as LangchainChatOpenAI, ChatOpenAIFields, OpenAIClient } from '@langchain/openai' +import { ChatOpenAI as LangchainChatOpenAI, ChatOpenAIFields } from '@langchain/openai' import { BaseCache } from '@langchain/core/caches' import { ICommonObject, IMultiModalOption, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' import { getBaseClasses } from '../../../src/utils' import { ChatOpenAI } from './FlowiseChatOpenAI' import { getModels, MODEL_TYPE } from '../../../src/modelLoader' import { HttpsProxyAgent } from 'https-proxy-agent' +import { OpenAI as OpenAIClient } from 'openai' class AAIChatOpenAI_ChatModels implements INode { label: string @@ -226,7 +227,7 @@ class AAIChatOpenAI_ChatModels implements INode { const basePath = nodeData.inputs?.basepath as string const proxyUrl = nodeData.inputs?.proxyUrl as string const baseOptions = nodeData.inputs?.baseOptions - const reasoningEffort = nodeData.inputs?.reasoningEffort as OpenAIClient.Chat.ChatCompletionReasoningEffort + const reasoningEffort = nodeData.inputs?.reasoningEffort as OpenAIClient.ReasoningEffort | null const promptCacheKey = nodeData.inputs?.promptCacheKey as string const allowImageUploads = nodeData.inputs?.allowImageUploads as boolean @@ -244,15 +245,18 @@ class AAIChatOpenAI_ChatModels implements INode { const obj: ChatOpenAIFields = { temperature: parseFloat(temperature), modelName, - openAIApiKey, + apiKey: openAIApiKey, streaming: streaming ?? true } - if (modelName.includes('o3') || modelName.includes('o1')) { + if (modelName.includes('o1') || modelName.includes('o3') || modelName.includes('gpt-5')) { delete obj.temperature - } - if ((modelName.includes('o1') || modelName.includes('o3')) && reasoningEffort) { - obj.reasoningEffort = reasoningEffort + delete obj.stop + const reasoning: OpenAIClient.Reasoning = {} + if (reasoningEffort) { + reasoning.effort = reasoningEffort + } + obj.reasoning = reasoning } if (maxTokens) obj.maxTokens = parseInt(maxTokens, 10) if (topP) obj.topP = parseFloat(topP) diff --git a/packages/components/nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts b/packages/components/nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts index 58239028229..63bdfb2cebe 100644 --- a/packages/components/nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts +++ b/packages/components/nodes/chatmodels/ChatOpenAI/ChatOpenAI.ts @@ -1,10 +1,11 @@ -import { ChatOpenAI as LangchainChatOpenAI, ChatOpenAIFields, OpenAIClient } from '@langchain/openai' +import { ChatOpenAI as LangchainChatOpenAI, ChatOpenAIFields } from '@langchain/openai' import { BaseCache } from '@langchain/core/caches' import { ICommonObject, IMultiModalOption, INode, INodeData, INodeOptionsValue, INodeParams } from '../../../src/Interface' import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' import { ChatOpenAI } from './FlowiseChatOpenAI' import { getModels, MODEL_TYPE } from '../../../src/modelLoader' import { HttpsProxyAgent } from 'https-proxy-agent' +import { OpenAI as OpenAIClient } from 'openai' class ChatOpenAI_ChatModels implements INode { label: string @@ -232,7 +233,7 @@ class ChatOpenAI_ChatModels implements INode { const basePath = nodeData.inputs?.basepath as string const proxyUrl = nodeData.inputs?.proxyUrl as string const baseOptions = nodeData.inputs?.baseOptions - const reasoningEffort = nodeData.inputs?.reasoningEffort as OpenAIClient.Chat.ChatCompletionReasoningEffort + const reasoningEffort = nodeData.inputs?.reasoningEffort as OpenAIClient.ReasoningEffort | null const promptCacheKey = nodeData.inputs?.promptCacheKey as string const allowImageUploads = nodeData.inputs?.allowImageUploads as boolean @@ -253,11 +254,14 @@ class ChatOpenAI_ChatModels implements INode { streaming: streaming ?? true } - if (modelName.includes('o3') || modelName.includes('o1')) { + if (modelName.includes('o1') || modelName.includes('o3') || modelName.includes('gpt-5')) { delete obj.temperature - } - if ((modelName.includes('o1') || modelName.includes('o3')) && reasoningEffort) { - obj.reasoningEffort = reasoningEffort + delete obj.stop + const reasoning: OpenAIClient.Reasoning = {} + if (reasoningEffort) { + reasoning.effort = reasoningEffort + } + obj.reasoning = reasoning } if (maxTokens) obj.maxTokens = parseInt(maxTokens, 10) if (topP) obj.topP = parseFloat(topP) diff --git a/packages/components/nodes/chatmodels/ChatOpenAI/FlowiseChatOpenAI.ts b/packages/components/nodes/chatmodels/ChatOpenAI/FlowiseChatOpenAI.ts index adb57f31289..7355e041e34 100644 --- a/packages/components/nodes/chatmodels/ChatOpenAI/FlowiseChatOpenAI.ts +++ b/packages/components/nodes/chatmodels/ChatOpenAI/FlowiseChatOpenAI.ts @@ -15,7 +15,7 @@ export class ChatOpenAI extends LangchainChatOpenAI implements IVisionChatModal } revertToOriginalModel(): void { - this.modelName = this.configuredModel + this.model = this.configuredModel this.maxTokens = this.configuredMaxToken } diff --git a/packages/components/nodes/embeddings/AAIEmbedding/AAIEmbedding.ts b/packages/components/nodes/embeddings/AAIEmbedding/AAIEmbedding.ts index 1611955f3b9..dd7ef639b39 100644 --- a/packages/components/nodes/embeddings/AAIEmbedding/AAIEmbedding.ts +++ b/packages/components/nodes/embeddings/AAIEmbedding/AAIEmbedding.ts @@ -93,7 +93,8 @@ class AAIEmbedding_Embeddings implements INode { throw new Error('AAI_DEFAULT_OPENAI_API_KEY environment variable is not set') } - const obj: Partial & { openAIApiKey?: string; configuration?: ClientOptions } = { + const obj: Partial & { apiKey?: string; openAIApiKey?: string; configuration?: ClientOptions } = { + apiKey: openAIApiKey, openAIApiKey, modelName } diff --git a/packages/components/package.json b/packages/components/package.json index 82b311efd29..b4eec360947 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -53,7 +53,7 @@ "@langchain/baidu-qianfan": "^0.1.0", "@langchain/cohere": "^0.3.4", "@langchain/community": "0.3.47", - "@langchain/core": "0.3.59", + "@langchain/core": "0.3.61", "@langchain/deepseek": "0.0.2", "@langchain/exa": "^0.1.0", "@langchain/google-genai": "0.2.13", @@ -63,7 +63,7 @@ "@langchain/mistralai": "^0.2.1", "@langchain/mongodb": "^0.1.0", "@langchain/ollama": "0.2.3", - "@langchain/openai": "0.5.15", + "@langchain/openai": "0.6.3", "@langchain/pinecone": "^0.2.0", "@langchain/qdrant": "^0.1.3", "@langchain/weaviate": "^0.2.2", @@ -163,8 +163,8 @@ "ws": "8.17.1", "youtube-data-mcp-server": "^1.0.16", "youtube-transcript": "^1.2.1", - "zod": "3.25.67", - "zod-to-json-schema": "3.24.5" + "zod": "3.25.76", + "zod-to-json-schema": "^3.21.4" }, "devDependencies": { "@swc/core": "^1.13.5", diff --git a/packages/components/src/followUpPrompts.ts b/packages/components/src/followUpPrompts.ts index 78feb1c8157..72014c6d40e 100644 --- a/packages/components/src/followUpPrompts.ts +++ b/packages/components/src/followUpPrompts.ts @@ -26,18 +26,7 @@ export const generateFollowUpPrompts = async ( const providerConfig = followUpPromptsConfig[followUpPromptsConfig.selectedProvider] if (!providerConfig) return undefined const credentialId = providerConfig.credentialId as string - - let credentialData: ICommonObject - try { - credentialData = await getCredentialData(credentialId ?? '', options) - if (!credentialData || Object.keys(credentialData).length === 0) { - console.warn('No credential data found for follow-up prompts, skipping generation') - return undefined - } - } catch (error) { - console.error('Error retrieving credential data for follow-up prompts:', error) - return undefined - } + const credentialData = await getCredentialData(credentialId ?? '', options) const followUpPromptsPrompt = providerConfig.prompt.replace('{history}', apiMessageContent) switch (followUpPromptsConfig.selectedProvider) { @@ -47,6 +36,7 @@ export const generateFollowUpPrompts = async ( model: providerConfig.modelName, temperature: parseFloat(`${providerConfig.temperature}`) }) + // @ts-ignore const structuredLLM = llm.withStructuredOutput(FollowUpPromptType) const structuredResponse = await structuredLLM.invoke(followUpPromptsPrompt) return structuredResponse @@ -66,7 +56,7 @@ export const generateFollowUpPrompts = async ( temperature: parseFloat(`${providerConfig.temperature}`) }) // use structured output parser because withStructuredOutput is not working - const parser = StructuredOutputParser.fromZodSchema(FollowUpPromptType) + const parser = StructuredOutputParser.fromZodSchema(FollowUpPromptType as any) const formatInstructions = parser.getFormatInstructions() const prompt = PromptTemplate.fromTemplate(` ${providerConfig.prompt} @@ -81,24 +71,13 @@ export const generateFollowUpPrompts = async ( return structuredResponse } case FollowUpPromptProvider.GOOGLE_GENAI: { - const llm = new ChatGoogleGenerativeAI({ + const model = new ChatGoogleGenerativeAI({ apiKey: credentialData.googleGenerativeAPIKey, model: providerConfig.modelName, temperature: parseFloat(`${providerConfig.temperature}`) }) - // use structured output parser because withStructuredOutput is not working - const parser = StructuredOutputParser.fromZodSchema(FollowUpPromptType) - const formatInstructions = parser.getFormatInstructions() - const prompt = PromptTemplate.fromTemplate(` - ${providerConfig.prompt} - - {format_instructions} - `) - const chain = prompt.pipe(llm).pipe(parser) - const structuredResponse = await chain.invoke({ - history: apiMessageContent, - format_instructions: formatInstructions - }) + const structuredLLM = model.withStructuredOutput(FollowUpPromptType) + const structuredResponse = await structuredLLM.invoke(followUpPromptsPrompt) return structuredResponse } case FollowUpPromptProvider.MISTRALAI: { @@ -116,8 +95,10 @@ export const generateFollowUpPrompts = async ( const model = new ChatOpenAI({ apiKey: credentialData.openAIApiKey, model: providerConfig.modelName, - temperature: parseFloat(`${providerConfig.temperature}`) + temperature: parseFloat(`${providerConfig.temperature}`), + useResponsesApi: true }) + // @ts-ignore const structuredLLM = model.withStructuredOutput(FollowUpPromptType) const structuredResponse = await structuredLLM.invoke(followUpPromptsPrompt) return structuredResponse diff --git a/packages/server/src/utils/buildAgentflow.ts b/packages/server/src/utils/buildAgentflow.ts index 674f81de959..5c2fcbc6250 100644 --- a/packages/server/src/utils/buildAgentflow.ts +++ b/packages/server/src/utils/buildAgentflow.ts @@ -1895,7 +1895,7 @@ export const executeAgentFlow = async ({ if (lastNodeOutput?.artifacts) apiMessage.artifacts = JSON.stringify(lastNodeOutput.artifacts) if (chatflow.followUpPrompts) { const followUpPromptsConfig = JSON.parse(chatflow.followUpPrompts) - const followUpPrompts = await generateFollowUpPrompts(followUpPromptsConfig, apiMessage.content, { + const followUpPrompts: any = await generateFollowUpPrompts(followUpPromptsConfig, apiMessage.content, { chatId, chatflowid, appDataSource, diff --git a/packages/server/src/utils/buildChatflow.ts b/packages/server/src/utils/buildChatflow.ts index 74b5e683c43..1828b2c5441 100644 --- a/packages/server/src/utils/buildChatflow.ts +++ b/packages/server/src/utils/buildChatflow.ts @@ -590,7 +590,7 @@ export const executeFlow = async ({ if (agentflow.followUpPrompts) { const followUpPromptsConfig = JSON.parse(agentflow.followUpPrompts) - const generatedFollowUpPrompts = await generateFollowUpPrompts(followUpPromptsConfig, apiMessage.content, { + const generatedFollowUpPrompts: any = await generateFollowUpPrompts(followUpPromptsConfig, apiMessage.content, { chatId, chatflowid: agentflow.id, appDataSource, @@ -794,7 +794,7 @@ export const executeFlow = async ({ if (result?.artifacts) apiMessage.artifacts = JSON.stringify(result.artifacts) if (chatflow.followUpPrompts) { const followUpPromptsConfig = JSON.parse(chatflow.followUpPrompts) - const followUpPrompts = await generateFollowUpPrompts(followUpPromptsConfig, apiMessage.content, { + const followUpPrompts: any = await generateFollowUpPrompts(followUpPromptsConfig, apiMessage.content, { chatId, chatflowid, appDataSource, diff --git a/packages/ui/src/ui-component/dialog/ChatflowConfigurationDialog.jsx b/packages/ui/src/ui-component/dialog/ChatflowConfigurationDialog.jsx index 8be9cc94537..8bfd79a8945 100644 --- a/packages/ui/src/ui-component/dialog/ChatflowConfigurationDialog.jsx +++ b/packages/ui/src/ui-component/dialog/ChatflowConfigurationDialog.jsx @@ -9,6 +9,7 @@ import AllowedDomains from '@/ui-component/extended/AllowedDomains' import ChatFeedback from '@/ui-component/extended/ChatFeedback' import StarterPrompts from '@/ui-component/extended/StarterPrompts' import Leads from '@/ui-component/extended/Leads' +import FollowUpPrompts from '@/ui-component/extended/FollowUpPrompts' import VisibilitySettings from '@/ui-component/extended/VisibilitySettings' import GeneralSettings from '@/ui-component/extended/GeneralSettings' import ChatLinksSettings from '@/ui-component/extended/ChatLinksSettings' @@ -47,6 +48,10 @@ const CHATFLOW_CONFIGURATION_TABS = [ label: 'Starter Prompts', id: 'conversationStarters' }, + { + label: 'Follow-up Prompts', + id: 'followUpPrompts' + }, { label: 'Speech to Text', id: 'speechToText' @@ -118,7 +123,7 @@ const ChatflowConfigurationDialog = ({ show, isAgentCanvas, dialogProps, onCance onClose={onCancel} open={show} fullWidth - maxWidth={'md'} + maxWidth={'lg'} aria-labelledby='alert-dialog-title' aria-describedby='alert-dialog-description' > @@ -141,7 +146,7 @@ const ChatflowConfigurationDialog = ({ show, isAgentCanvas, dialogProps, onCance variant='scrollable' scrollButtons='auto' > - {filteredTabs.map((item) => ( + {filteredTabs.map((item, index) => ( + > ))} - {filteredTabs.map((item) => ( - + {filteredTabs.map((item, index) => ( + {item.id === 'rateLimiting' && } {item.id === 'conversationStarters' ? : null} + {item.id === 'followUpPrompts' ? : null} {item.id === 'speechToText' ? : null} {item.id === 'chatFeedback' ? : null} {item.id === 'allowedDomains' ? : null} diff --git a/packages/ui/src/ui-component/extended/FollowUpPrompts.jsx b/packages/ui/src/ui-component/extended/FollowUpPrompts.jsx index 699465580e6..1218e689995 100644 --- a/packages/ui/src/ui-component/extended/FollowUpPrompts.jsx +++ b/packages/ui/src/ui-component/extended/FollowUpPrompts.jsx @@ -24,7 +24,6 @@ import { AsyncDropdown } from '@/ui-component/dropdown/AsyncDropdown' // Icons import { IconX } from '@tabler/icons-react' import { Dropdown } from '@/ui-component/dropdown/Dropdown' -import Image from 'next/image' const promptDescription = 'Prompt to generate questions based on the conversation history. You can use variable {history} to refer to the conversation history.' @@ -505,7 +504,7 @@ const FollowUpPrompts = ({ dialogProps }) => { backgroundColor: 'white' }} > - =0.1.19 <0.4.0' peerDependenciesMeta: '@langchain/core': @@ -5114,25 +5114,25 @@ packages: resolution: { integrity: sha512-lwp43HUcCM0bJqJEwBwutskvV85G3R3rQDW5XNCntPDzelW+fCmlsm40P7dg7uG/3uOtDGhj4eDMapKpbPvtlA== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/aws@0.1.11': resolution: { integrity: sha512-JNnEmJaJB5TzcniPYGZi6dlpmZyzeyVsS+Za0Ye1DhCpcNmEiWRy514gVcTPQUEl5EcpIR51B/YyowI7zUzVvg== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/baidu-qianfan@0.1.0': resolution: { integrity: sha512-sl0kgN/7pBti2oF3PQRk1dLfXpmx3kGuyFiooTfkTswO7zeVbv5VPwjmw2/096ctkziEQLBGqQ7dZReEDcXPRA== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/cohere@0.3.4': resolution: { integrity: sha512-TdOaxKtavYxf5iVO20OQHGwDUSvCTp2o6Jc0N26FyBZKP4J5LECOksmL28y6hNI/4duXPTl2IEXsNqlOTc2ssQ== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/community@0.3.47': resolution: { integrity: sha512-Vo42kAfkXpTFSevhEkeqqE55az8NyQgDktCbitXYuhipNbFYx08XVvqEDkFkB20MM/Z7u+cvLb+DxCqnKuH0CQ== } @@ -5170,7 +5170,7 @@ packages: '@huggingface/transformers': ^3.5.2 '@ibm-cloud/watsonx-ai': '*' '@lancedb/lancedb': ^0.12.0 - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@layerup/layerup-security': ^1.5.12 '@libsql/client': ^0.14.0 '@mendable/firecrawl-js': ^1.4.3 @@ -5517,51 +5517,51 @@ packages: youtubei.js: optional: true - '@langchain/core@0.3.59': - resolution: { integrity: sha512-YAvnx0z3A8z5MvyjZzjC9ZxXZYM20ivFdUeLzANSPCoPCNIQ1/EppWP82RI24PcmWkNtuXsFVaj5juWiIpZvxg== } + '@langchain/core@0.3.61': + resolution: { integrity: sha512-4O7fw5SXNSE+uBnathLQrhm3t+7dZGagt/5kt37A+pXw0AkudxEBvveg73sSnpBd9SIz3/Vc7F4k8rCKXGbEDA== } engines: { node: '>=18' } '@langchain/deepseek@0.0.2': resolution: { integrity: sha512-u13KbPUXW7uhcybbRzYdRroBgqVUSgG0SJM15c7Etld2yjRQC2c4O/ga9eQZdLh/kaDlQfH/ZITFdjHe77RnGw== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/exa@0.1.0': resolution: { integrity: sha512-9HN4vuqiKxo4SYu7SbxdrKAu2ISiDUy0PRexKX/pNbxwAzKhBhCDkALjIceSAIJ9F6rgJxkykPYJd1AzHPvXFA== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/google-common@0.2.17': resolution: { integrity: sha512-51h/BHl8EzAES83U7BJV2TrxMYGf0oNx0jE0YAzMBpe6rG0lkjrV8K2jFtvRxLIp/+RyKlfrd+eC5+DcymGLKw== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/google-gauth@0.2.17': resolution: { integrity: sha512-EubaUKlWo5TLjHRRoQNL40EhytWNZwgwzo8qyM0Kh8hDNK6sKOiXxeV2w2Ehmd8z3cNW5pF0d+96A19e31W4lA== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/google-genai@0.2.13': resolution: { integrity: sha512-ReZe4oNUhPNEijYo9CGA3/CJUwVPaaoYnyplZyYTbUNPAwwRH5aR1e6bppKFBb+ZZeTRCR25JFDIPnXJFfjaBg== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/google-vertexai@0.2.13': resolution: { integrity: sha512-Y97f0IBr4uWsyJTcDJROWXuu+qh4elSDLK1e6MD+mrxCx+UlgcXCReg4zvEFJzqpBKrfFt+lvXstJ6XTR6Zfyg== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/groq@0.2.3': resolution: { integrity: sha512-r+yjysG36a0IZxTlCMr655Feumfb4IrOyA0jLLq4l7gEhVyMpYXMwyE6evseyU2LRP+7qOPbGRVpGqAIK0MsUA== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/langgraph@0.0.22': resolution: { integrity: sha512-VdWUDRo/CXe1SjR34WxtbIwxIykSKjbdduKaNxCIPCZYxhfeL+NY3xi3F8ES6RTQV9gNYrl6ODuuXQtACQpK7g== } @@ -5576,19 +5576,19 @@ packages: resolution: { integrity: sha512-s91BlNcuxaaZGnVukyl81nwGrWpeE0EYiAdEFoBmZwlT4yLpx+QpPhRsGKrTg/Vm7Nscy6Wd8Xy2PJ93wftMdw== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/mongodb@0.1.0': resolution: { integrity: sha512-5yO6aNMkdtxlJBjR8LFuvgDgnM/sbAhYe5AkN8VznPkpEoI6Pq4zjvl8gB3YTVpzdrp38HT5Z40VEwNEDHpwIw== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/ollama@0.2.3': resolution: { integrity: sha512-1Obe45jgQspqLMBVlayQbGdywFmri8DgmGRdzNu0li56cG5RReYlRCFVDZBRMMvF9JhsP5eXRyfyivtKfITHWQ== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/openai@0.2.11': resolution: { integrity: sha512-Pu8+WfJojCgSf0bAsXb4AjqvcDyAWyoEB1AoCRNACgEnBWZuitz3hLwCo9I+6hAbeg3QJ37g82yKcmvKAg1feg== } @@ -5598,26 +5598,32 @@ packages: resolution: { integrity: sha512-uw4po32OKptVjq+CYHrumgbfh4NuD7LqyE+ZgqY9I/LrLc6bHLMc+sisHmI17vgek0K/yqtarI0alPJbzrwyag== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/openai@0.5.15': resolution: { integrity: sha512-ANadEHyAj5sufQpz+SOPpKbyoMcTLhnh8/d+afbSPUqWsIMPpEFX3HoSY3nrBPG6l4NQQNG5P5oHb4SdC8+YIg== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 + + '@langchain/openai@0.6.3': + resolution: { integrity: sha512-dSNuXDTJitDzN8D2wFNqWVELDbBRhMpJiFeiWpHjfPuq7R6wSjzNNY/Uk6x+FLpvbOs/zKNWy5+0q0p3KrCjRQ== } + engines: { node: '>=18' } + peerDependencies: + '@langchain/core': 0.3.61 '@langchain/pinecone@0.2.0': resolution: { integrity: sha512-O3tWSCIbm1uDLh0J4R0ETmYeRFtQAI2qcSAMC/VW1+xBb+o/IJ5VMyJhGKc4RsmyWE0wG4kOuwfIcCP+XV0clw== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@pinecone-database/pinecone': ^5.0.2 '@langchain/qdrant@0.1.3': resolution: { integrity: sha512-3cay+u3Ri7KPEwBrn/e0V2GPJDHz8U/ZetSjexB7kbgBJeljzEoRxXEeoDCd4pok48GA+n+j0/p+rPA0K7zedQ== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/textsplitters@0.0.3': resolution: { integrity: sha512-cXWgKE3sdWLSqAa8ykbCcUsUF1Kyr5J3HOWYGuobhPEycXW4WI++d5DhzdpL238mzoEXTi90VqfSCra37l5YqA== } @@ -5627,19 +5633,19 @@ packages: resolution: { integrity: sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/weaviate@0.2.2': resolution: { integrity: sha512-nMkK4ZwfKjQR98kzpL/PPdFixdmD/KX89lZ9R5rhEShv3nfVyfGW8bVMpmC91kqIWxsjeqaqUZ1ZAdzpZRnE/w== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/xai@0.0.3': resolution: { integrity: sha512-NA+0d6z/1focGuakceOz/AspWN9xcz7mYpjLFuCDtOPRLzdjUTRiqljXx9RVSl/VQMA8AzHCOA64m3asYZAYWg== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langfuse/core@4.2.0': resolution: { integrity: sha512-QARHC8Xz3ZyFrIQtbc9L34XQo5yWwpTBvzqiXeEw/LScigG9gyUf3XaykVbJ8Er0O7cggHm9wBXw3POMxDih/w== } @@ -8011,7 +8017,7 @@ packages: resolution: { integrity: sha512-fuKNgCgqLih+L1um0rKuwLSypn9dgvFnG6VKtJnFVwEVrqKZTcD1KXMNuwru+6FWhpkjbmshGWZRwx0VtEsR1Q== } engines: { node: '>=18' } peerDependencies: - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 ai: ^3.4.7 '@supabase/auth-js@2.71.1': @@ -15002,7 +15008,7 @@ packages: '@langchain/aws': '*' '@langchain/cerebras': '*' '@langchain/cohere': '*' - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/deepseek': '*' '@langchain/google-genai': '*' '@langchain/google-vertexai': '*' @@ -15060,7 +15066,7 @@ packages: '@langchain/aws': '*' '@langchain/cerebras': '*' '@langchain/cohere': '*' - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@langchain/deepseek': '*' '@langchain/google-genai': '*' '@langchain/google-vertexai': '*' @@ -15773,7 +15779,7 @@ packages: '@anthropic-ai/sdk': ^0.40.1 '@cloudflare/workers-types': ^4.20250504.0 '@google/genai': ^1.2.0 - '@langchain/core': 0.3.59 + '@langchain/core': 0.3.61 '@mistralai/mistralai': ^1.5.2 '@qdrant/js-client-rest': 1.13.0 '@supabase/supabase-js': ^2.49.1 @@ -21938,11 +21944,6 @@ packages: engines: { node: '>=8.0.0' } hasBin: true - zod-to-json-schema@3.24.5: - resolution: { integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g== } - peerDependencies: - zod: ^3.24.1 - zod-to-json-schema@3.24.6: resolution: { integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg== } peerDependencies: @@ -21960,9 +21961,6 @@ packages: zod@3.24.2: resolution: { integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ== } - zod@3.25.67: - resolution: { integrity: sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw== } - zod@3.25.76: resolution: { integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ== } @@ -21990,33 +21988,33 @@ packages: snapshots: '@adobe/css-tools@4.4.4': {} - '@ai-sdk/provider-utils@2.2.8(zod@3.25.67)': + '@ai-sdk/provider-utils@2.2.8(zod@3.25.76)': dependencies: '@ai-sdk/provider': 1.1.3 nanoid: 3.3.11 secure-json-parse: 2.7.0 - zod: 3.25.67 + zod: 3.25.76 '@ai-sdk/provider@1.1.3': dependencies: json-schema: 0.4.0 - '@ai-sdk/react@1.2.12(react@18.3.1)(zod@3.25.67)': + '@ai-sdk/react@1.2.12(react@18.3.1)(zod@3.25.76)': dependencies: - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) - '@ai-sdk/ui-utils': 1.2.11(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) + '@ai-sdk/ui-utils': 1.2.11(zod@3.25.76) react: 18.3.1 swr: 2.3.6(react@18.3.1) throttleit: 2.1.0 optionalDependencies: - zod: 3.25.67 + zod: 3.25.76 - '@ai-sdk/ui-utils@1.2.11(zod@3.25.67)': + '@ai-sdk/ui-utils@1.2.11(zod@3.25.76)': dependencies: '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) - zod: 3.25.67 - zod-to-json-schema: 3.24.5(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) '@algolia/abtesting@1.3.0': dependencies: @@ -22216,7 +22214,7 @@ snapshots: axios: 1.12.1 dotenv: 16.6.1 express: 5.1.0 - zod: 3.25.67 + zod: 3.25.76 transitivePeerDependencies: - debug - supports-color @@ -22349,11 +22347,11 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) - '@arizeai/openinference-instrumentation-langchain@2.0.0(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))': + '@arizeai/openinference-instrumentation-langchain@2.0.0(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': dependencies: '@arizeai/openinference-core': 1.0.0 '@arizeai/openinference-semantic-conventions': 1.0.0 - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.46.0(@opentelemetry/api@1.9.0) @@ -24399,17 +24397,17 @@ snapshots: - encoding - utf-8-validate - '@browserbasehq/stagehand@1.14.0(@playwright/test@1.55.0)(bufferutil@4.0.9)(deepmerge@4.3.1)(dotenv@17.2.2)(encoding@0.1.13)(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))(utf-8-validate@6.0.5)(zod@3.25.67)': + '@browserbasehq/stagehand@1.14.0(@playwright/test@1.55.0)(bufferutil@4.0.9)(deepmerge@4.3.1)(dotenv@17.2.2)(encoding@0.1.13)(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))(utf-8-validate@6.0.5)(zod@3.25.76)': dependencies: '@anthropic-ai/sdk': 0.27.3(encoding@0.1.13) '@browserbasehq/sdk': 2.6.0(encoding@0.1.13) '@playwright/test': 1.55.0 deepmerge: 4.3.1 dotenv: 17.2.2 - openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67) + openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - zod: 3.25.67 - zod-to-json-schema: 3.24.6(zod@3.25.67) + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) transitivePeerDependencies: - bufferutil - encoding @@ -26114,16 +26112,16 @@ snapshots: '@gar/promisify@1.1.3': optional: true - '@getzep/zep-cloud@1.0.12(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(langchain@0.3.28(g3hy2qr5phattispf4an5zz774))': + '@getzep/zep-cloud@1.0.12(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(langchain@0.3.28(6frqvsg5tm3nbnujlj6diybnmy))': dependencies: form-data: 4.0.4 node-fetch: 2.7.0(encoding@0.1.13) qs: 6.7.3 url-join: 4.0.1 - zod: 3.25.67 + zod: 3.25.76 optionalDependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) - langchain: 0.3.28(g3hy2qr5phattispf4an5zz774) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + langchain: 0.3.28(6frqvsg5tm3nbnujlj6diybnmy) transitivePeerDependencies: - encoding @@ -26342,9 +26340,9 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} - '@ibm-cloud/watsonx-ai@1.6.0(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))': + '@ibm-cloud/watsonx-ai@1.6.0(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': dependencies: - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) '@types/node': 18.15.11 extend: 3.0.2 ibm-cloud-sdk-core: 5.3.2 @@ -26865,10 +26863,10 @@ snapshots: '@types/yargs': 17.0.33 chalk: 4.1.2 - '@jlinc/langchain@0.1.3(csah7gdoqghlvnmrl3p2keuwwm)': + '@jlinc/langchain@0.1.3(gm7em2hy573enh443txrmyvzgq)': dependencies: axios: 1.12.1 - langchain: 0.3.35(g3hy2qr5phattispf4an5zz774) + langchain: 0.3.35(6frqvsg5tm3nbnujlj6diybnmy) transitivePeerDependencies: - '@langchain/anthropic' - '@langchain/aws' @@ -27018,65 +27016,65 @@ snapshots: - terser - typescript - '@langchain/anthropic@0.3.23(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))': + '@langchain/anthropic@0.3.23(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': dependencies: '@anthropic-ai/sdk': 0.52.0 - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) fast-xml-parser: 4.5.3 - '@langchain/anthropic@0.3.23(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': + '@langchain/anthropic@0.3.23(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': dependencies: '@anthropic-ai/sdk': 0.52.0 - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) fast-xml-parser: 4.5.3 optional: true - '@langchain/aws@0.1.11(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))': + '@langchain/aws@0.1.11(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: '@aws-sdk/client-bedrock-agent-runtime': 3.887.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@aws-sdk/client-bedrock-runtime': 3.887.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@aws-sdk/client-kendra': 3.887.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@aws-sdk/credential-provider-node': 3.887.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) transitivePeerDependencies: - aws-crt - '@langchain/aws@0.1.11(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))': + '@langchain/aws@0.1.11(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: '@aws-sdk/client-bedrock-agent-runtime': 3.887.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@aws-sdk/client-bedrock-runtime': 3.887.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@aws-sdk/client-kendra': 3.887.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@aws-sdk/credential-provider-node': 3.887.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) transitivePeerDependencies: - aws-crt optional: true - '@langchain/baidu-qianfan@0.1.0(@babel/core@7.28.4)(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))': + '@langchain/baidu-qianfan@0.1.0(@babel/core@7.28.4)(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: '@baiducloud/qianfan': 0.1.9(@babel/core@7.28.4)(encoding@0.1.13) - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) - '@langchain/openai': 0.3.17(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - zod: 3.25.67 - zod-to-json-schema: 3.24.5(zod@3.25.67) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/openai': 0.3.17(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) transitivePeerDependencies: - '@babel/core' - encoding - supports-color - ws - '@langchain/cohere@0.3.4(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13)': + '@langchain/cohere@0.3.4(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13)': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) cohere-ai: 7.19.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13) uuid: 10.0.0 transitivePeerDependencies: - aws-crt - encoding - '@langchain/cohere@0.3.4(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13)': + '@langchain/cohere@0.3.4(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13)': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) cohere-ai: 7.19.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13) uuid: 10.0.0 transitivePeerDependencies: @@ -27084,23 +27082,23 @@ snapshots: - encoding optional: true - '@langchain/community@0.3.47(yhfe3kghg3oqq4fiackoy44fv4)': + '@langchain/community@0.3.47(ytj2tz3pbvt643zzwwde5cucwa)': dependencies: - '@browserbasehq/stagehand': 1.14.0(@playwright/test@1.55.0)(bufferutil@4.0.9)(deepmerge@4.3.1)(dotenv@17.2.2)(encoding@0.1.13)(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))(utf-8-validate@6.0.5)(zod@3.25.67) - '@ibm-cloud/watsonx-ai': 1.6.0(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))) - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) - '@langchain/openai': 0.5.15(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - '@langchain/weaviate': 0.2.2(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13) + '@browserbasehq/stagehand': 1.14.0(@playwright/test@1.55.0)(bufferutil@4.0.9)(deepmerge@4.3.1)(dotenv@17.2.2)(encoding@0.1.13)(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))(utf-8-validate@6.0.5)(zod@3.25.76) + '@ibm-cloud/watsonx-ai': 1.6.0(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/openai': 0.5.15(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@langchain/weaviate': 0.2.2(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13) binary-extensions: 2.3.0 expr-eval: 2.0.2 flat: 5.0.2 ibm-cloud-sdk-core: 5.3.2 js-yaml: 4.1.0 - langchain: 0.3.28(g3hy2qr5phattispf4an5zz774) - langsmith: 0.3.68(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) - openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67) + langchain: 0.3.28(6frqvsg5tm3nbnujlj6diybnmy) + langsmith: 0.3.68(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) uuid: 10.0.0 - zod: 3.25.67 + zod: 3.25.76 optionalDependencies: '@aws-crypto/sha256-js': 5.2.0 '@aws-sdk/client-bedrock-agent-runtime': 3.887.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) @@ -27112,7 +27110,7 @@ snapshots: '@browserbasehq/sdk': 2.6.0(encoding@0.1.13) '@datastax/astra-db-ts': 1.5.0 '@elastic/elasticsearch': 8.19.1 - '@getzep/zep-cloud': 1.0.12(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(langchain@0.3.28(g3hy2qr5phattispf4an5zz774)) + '@getzep/zep-cloud': 1.0.12(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(langchain@0.3.28(6frqvsg5tm3nbnujlj6diybnmy)) '@getzep/zep-js': 0.9.0 '@gomomento/sdk': 1.116.0 '@gomomento/sdk-core': 1.116.0 @@ -27135,7 +27133,7 @@ snapshots: apify-client: 2.17.0 assemblyai: 4.16.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) cheerio: 1.1.2 - chromadb: 1.10.5(@google/generative-ai@0.24.1)(cohere-ai@7.19.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13))(encoding@0.1.13)(ollama@0.5.17)(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + chromadb: 1.10.5(@google/generative-ai@0.24.1)(cohere-ai@7.19.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13))(encoding@0.1.13)(ollama@0.5.17)(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) cohere-ai: 7.19.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13) crypto-js: 4.2.0 d3-dsv: 2.0.0 @@ -27149,9 +27147,9 @@ snapshots: jsdom: 22.1.0(bufferutil@4.0.9)(canvas@2.11.2(encoding@0.1.13))(utf-8-validate@6.0.5) jsonwebtoken: 9.0.2 lodash: 4.17.21 - lunary: 0.7.15(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))(react@18.3.1) + lunary: 0.7.15(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))(react@18.3.1) mammoth: 1.11.0 - mem0ai: 2.1.38(@anthropic-ai/sdk@0.52.0)(@cloudflare/workers-types@4.20250912.0)(@google/genai@0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5))(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(@mistralai/mistralai@0.1.3(encoding@0.1.13))(@qdrant/js-client-rest@1.15.1(typescript@5.5.4))(@supabase/supabase-js@2.57.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(@types/jest@30.0.0)(@types/pg@8.15.5)(@types/sqlite3@3.1.11)(cloudflare@4.5.0(encoding@0.1.13))(encoding@0.1.13)(groq-sdk@0.19.0(encoding@0.1.13))(neo4j-driver@5.28.1)(ollama@0.5.17)(pg@8.16.3)(redis@4.7.1)(sqlite3@5.1.7)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + mem0ai: 2.1.38(@anthropic-ai/sdk@0.52.0)(@cloudflare/workers-types@4.20250912.0)(@google/genai@0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5))(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(@mistralai/mistralai@0.1.3(encoding@0.1.13))(@qdrant/js-client-rest@1.15.1(typescript@5.5.4))(@supabase/supabase-js@2.57.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(@types/jest@30.0.0)(@types/pg@8.15.5)(@types/sqlite3@3.1.11)(cloudflare@4.5.0(encoding@0.1.13))(encoding@0.1.13)(groq-sdk@0.19.0(encoding@0.1.13))(neo4j-driver@5.28.1)(ollama@0.5.17)(pg@8.16.3)(redis@4.7.1)(sqlite3@5.1.7)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) mongodb: 6.3.0(@aws-sdk/credential-providers@3.887.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)))(socks@2.8.7) mysql2: 3.14.5 neo4j-driver: 5.28.1 @@ -27189,27 +27187,27 @@ snapshots: - handlebars - peggy - '@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))': + '@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))': dependencies: '@cfworker/json-schema': 4.1.1 ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.21 - langsmith: 0.3.68(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + langsmith: 0.3.68(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 uuid: 10.0.0 - zod: 3.25.67 - zod-to-json-schema: 3.24.5(zod@3.25.67) + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) transitivePeerDependencies: - '@opentelemetry/api' - '@opentelemetry/exporter-trace-otlp-proto' - '@opentelemetry/sdk-trace-base' - openai - '@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))': + '@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))': dependencies: '@cfworker/json-schema': 4.1.1 ansi-styles: 5.2.0 @@ -27221,106 +27219,106 @@ snapshots: p-queue: 6.6.2 p-retry: 4.6.2 uuid: 10.0.0 - zod: 3.25.67 - zod-to-json-schema: 3.24.5(zod@3.25.67) + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) transitivePeerDependencies: - '@opentelemetry/api' - '@opentelemetry/exporter-trace-otlp-proto' - '@opentelemetry/sdk-trace-base' - openai - '@langchain/deepseek@0.0.2(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))': + '@langchain/deepseek@0.0.2(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) - '@langchain/openai': 0.5.15(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/openai': 0.5.15(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) transitivePeerDependencies: - encoding - ws - '@langchain/exa@0.1.0(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))': + '@langchain/exa@0.1.0(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) exa-js: 1.9.3(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) transitivePeerDependencies: - encoding - ws - '@langchain/google-common@0.2.17(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))': + '@langchain/google-common@0.2.17(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) uuid: 10.0.0 - '@langchain/google-common@0.2.17(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': + '@langchain/google-common@0.2.17(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) uuid: 10.0.0 optional: true - '@langchain/google-gauth@0.2.17(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))': + '@langchain/google-gauth@0.2.17(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) - '@langchain/google-common': 0.2.17(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/google-common': 0.2.17(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) google-auth-library: 10.3.0 transitivePeerDependencies: - supports-color - '@langchain/google-gauth@0.2.17(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': + '@langchain/google-gauth@0.2.17(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) - '@langchain/google-common': 0.2.17(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/google-common': 0.2.17(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) google-auth-library: 10.3.0 transitivePeerDependencies: - supports-color optional: true - '@langchain/google-genai@0.2.13(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))': + '@langchain/google-genai@0.2.13(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': dependencies: '@google/generative-ai': 0.24.1 - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) uuid: 11.1.0 - '@langchain/google-genai@0.2.13(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': + '@langchain/google-genai@0.2.13(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': dependencies: '@google/generative-ai': 0.24.1 - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) uuid: 11.1.0 optional: true - '@langchain/google-vertexai@0.2.13(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))': + '@langchain/google-vertexai@0.2.13(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) - '@langchain/google-gauth': 0.2.17(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/google-gauth': 0.2.17(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) transitivePeerDependencies: - supports-color - '@langchain/google-vertexai@0.2.13(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': + '@langchain/google-vertexai@0.2.13(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) - '@langchain/google-gauth': 0.2.17(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/google-gauth': 0.2.17(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) transitivePeerDependencies: - supports-color optional: true - '@langchain/groq@0.2.3(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)': + '@langchain/groq@0.2.3(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) groq-sdk: 0.19.0(encoding@0.1.13) - zod: 3.25.67 + zod: 3.25.76 transitivePeerDependencies: - encoding - '@langchain/groq@0.2.3(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)': + '@langchain/groq@0.2.3(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) groq-sdk: 0.19.0(encoding@0.1.13) - zod: 3.25.67 + zod: 3.25.76 transitivePeerDependencies: - encoding optional: true - '@langchain/langgraph@0.0.22(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))': + '@langchain/langgraph@0.0.22(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) uuid: 9.0.1 transitivePeerDependencies: - '@opentelemetry/api' @@ -27328,22 +27326,22 @@ snapshots: - '@opentelemetry/sdk-trace-base' - openai - '@langchain/mistralai@0.2.1(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))': + '@langchain/mistralai@0.2.1(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) '@mistralai/mistralai': 1.10.0 uuid: 10.0.0 - '@langchain/mistralai@0.2.1(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': + '@langchain/mistralai@0.2.1(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) '@mistralai/mistralai': 1.10.0 uuid: 10.0.0 optional: true - '@langchain/mongodb@0.1.0(@aws-sdk/credential-providers@3.887.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)))(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(socks@2.8.7)': + '@langchain/mongodb@0.1.0(@aws-sdk/credential-providers@3.887.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)))(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(socks@2.8.7)': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) mongodb: 6.3.0(@aws-sdk/credential-providers@3.887.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)))(socks@2.8.7) transitivePeerDependencies: - '@aws-sdk/credential-providers' @@ -27354,22 +27352,22 @@ snapshots: - snappy - socks - '@langchain/ollama@0.2.3(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))': + '@langchain/ollama@0.2.3(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) ollama: 0.5.17 uuid: 10.0.0 - '@langchain/ollama@0.2.3(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': + '@langchain/ollama@0.2.3(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) ollama: 0.5.17 uuid: 10.0.0 optional: true '@langchain/openai@0.2.11(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) js-tiktoken: 1.0.21 openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) zod: 3.25.76 @@ -27381,37 +27379,47 @@ snapshots: - encoding - ws - '@langchain/openai@0.3.17(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))': + '@langchain/openai@0.3.17(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))': + dependencies: + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + js-tiktoken: 1.0.21 + openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) + transitivePeerDependencies: + - encoding + - ws + + '@langchain/openai@0.5.15(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) js-tiktoken: 1.0.21 - openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67) - zod: 3.25.67 - zod-to-json-schema: 3.24.5(zod@3.25.67) + openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) + zod: 3.25.76 transitivePeerDependencies: - encoding - ws - '@langchain/openai@0.5.15(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))': + '@langchain/openai@0.6.3(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) js-tiktoken: 1.0.21 - openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67) - zod: 3.25.67 + openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) + zod: 3.25.76 transitivePeerDependencies: - encoding - ws - '@langchain/pinecone@0.2.0(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(@pinecone-database/pinecone@4.0.0)': + '@langchain/pinecone@0.2.0(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(@pinecone-database/pinecone@4.0.0)': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) '@pinecone-database/pinecone': 4.0.0 flat: 5.0.2 uuid: 10.0.0 - '@langchain/qdrant@0.1.3(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(typescript@5.5.4)': + '@langchain/qdrant@0.1.3(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(typescript@5.5.4)': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) '@qdrant/js-client-rest': 1.15.1(typescript@5.5.4) uuid: 10.0.0 transitivePeerDependencies: @@ -27419,7 +27427,7 @@ snapshots: '@langchain/textsplitters@0.0.3(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) js-tiktoken: 1.0.21 transitivePeerDependencies: - '@opentelemetry/api' @@ -27427,23 +27435,23 @@ snapshots: - '@opentelemetry/sdk-trace-base' - openai - '@langchain/textsplitters@0.1.0(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))': + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) js-tiktoken: 1.0.21 - '@langchain/weaviate@0.2.2(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)': + '@langchain/weaviate@0.2.2(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) uuid: 10.0.0 weaviate-client: 3.8.1(encoding@0.1.13) transitivePeerDependencies: - encoding - '@langchain/xai@0.0.3(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))': + '@langchain/xai@0.0.3(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) - '@langchain/openai': 0.5.15(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/openai': 0.5.15(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) transitivePeerDependencies: - encoding - ws @@ -27457,8 +27465,8 @@ snapshots: '@modelcontextprotocol/sdk': 1.0.1 contentful-management: 10.46.4 dotenv: 16.6.1 - zod: 3.25.67 - zod-to-json-schema: 3.24.5(zod@3.25.67) + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) transitivePeerDependencies: - '@lingui/babel-plugin-lingui-macro' - babel-plugin-macros @@ -27597,12 +27605,12 @@ snapshots: '@types/react': 18.2.15 react: 18.3.1 - '@mem0/community@0.0.1(fsvxlzvtmc7tcsadqwiv5h3pxq)': + '@mem0/community@0.0.1(yphfnlez25vdwcrensxk33gvyi)': dependencies: - '@langchain/community': 0.3.47(yhfe3kghg3oqq4fiackoy44fv4) - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/community': 0.3.47(ytj2tz3pbvt643zzwwde5cucwa) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) axios: 1.12.1 - mem0ai: 2.1.38(@anthropic-ai/sdk@0.52.0)(@cloudflare/workers-types@4.20250912.0)(@google/genai@0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5))(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(@mistralai/mistralai@0.1.3(encoding@0.1.13))(@qdrant/js-client-rest@1.15.1(typescript@5.5.4))(@supabase/supabase-js@2.57.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(@types/jest@30.0.0)(@types/pg@8.15.5)(@types/sqlite3@3.1.11)(cloudflare@4.5.0(encoding@0.1.13))(encoding@0.1.13)(groq-sdk@0.19.0(encoding@0.1.13))(neo4j-driver@5.28.1)(ollama@0.5.17)(pg@8.16.3)(redis@4.7.1)(sqlite3@5.1.7)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + mem0ai: 2.1.38(@anthropic-ai/sdk@0.52.0)(@cloudflare/workers-types@4.20250912.0)(@google/genai@0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5))(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(@mistralai/mistralai@0.1.3(encoding@0.1.13))(@qdrant/js-client-rest@1.15.1(typescript@5.5.4))(@supabase/supabase-js@2.57.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(@types/jest@30.0.0)(@types/pg@8.15.5)(@types/sqlite3@3.1.11)(cloudflare@4.5.0(encoding@0.1.13))(encoding@0.1.13)(groq-sdk@0.19.0(encoding@0.1.13))(neo4j-driver@5.28.1)(ollama@0.5.17)(pg@8.16.3)(redis@4.7.1)(sqlite3@5.1.7)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) uuid: 9.0.1 zod: 3.22.4 transitivePeerDependencies: @@ -27769,8 +27777,8 @@ snapshots: axios: 1.12.1 dotenv: 16.6.1 uuid: 9.0.1 - zod: 3.25.67 - zod-to-json-schema: 3.24.5(zod@3.25.67) + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) transitivePeerDependencies: - debug @@ -27798,8 +27806,8 @@ snapshots: '@mistralai/mistralai@1.10.0': dependencies: - zod: 3.25.67 - zod-to-json-schema: 3.24.5(zod@3.25.67) + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) '@mixmark-io/domino@2.2.0': {} @@ -27807,19 +27815,19 @@ snapshots: dependencies: content-type: 1.0.5 raw-body: 3.0.1 - zod: 3.25.67 + zod: 3.25.76 '@modelcontextprotocol/sdk@0.6.0': dependencies: content-type: 1.0.5 raw-body: 3.0.1 - zod: 3.25.67 + zod: 3.25.76 '@modelcontextprotocol/sdk@1.0.1': dependencies: content-type: 1.0.5 raw-body: 3.0.1 - zod: 3.25.67 + zod: 3.25.76 '@modelcontextprotocol/sdk@1.18.0': dependencies: @@ -27833,8 +27841,8 @@ snapshots: express-rate-limit: 7.5.1(express@5.1.0) pkce-challenge: 5.0.0 raw-body: 3.0.1 - zod: 3.25.67 - zod-to-json-schema: 3.24.5(zod@3.25.67) + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) transitivePeerDependencies: - supports-color @@ -27849,8 +27857,8 @@ snapshots: '@types/node-fetch': 2.6.12 node-fetch: 3.3.2 universal-user-agent: 7.0.3 - zod: 3.25.67 - zod-to-json-schema: 3.24.5(zod@3.25.67) + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) '@modelcontextprotocol/server-postgres@0.6.2': dependencies: @@ -28509,7 +28517,7 @@ snapshots: '@next-auth/prisma-adapter@1.0.7(@prisma/client@5.22.0(prisma@5.22.0))(next-auth@4.24.11(next@14.2.32(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.55.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.92.1))(nodemailer@6.9.16)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))': dependencies: '@prisma/client': 5.22.0(prisma@5.22.0) - next-auth: 4.24.11(next@14.2.32(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.55.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.92.1))(nodemailer@6.9.16)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + next-auth: 4.24.11(next@14.2.32(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.55.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.92.1))(nodemailer@6.9.16)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@next/bundle-analyzer@13.5.11(bufferutil@4.0.9)(utf-8-validate@6.0.5)': dependencies: @@ -30707,12 +30715,12 @@ snapshots: '@sqltools/formatter@1.2.5': {} - '@stripe/agent-toolkit@0.1.21(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(ai@4.3.19(react@18.3.1)(zod@3.25.67))': + '@stripe/agent-toolkit@0.1.21(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(ai@4.3.19(react@18.3.1)(zod@3.25.76))': dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) - ai: 4.3.19(react@18.3.1)(zod@3.25.67) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + ai: 4.3.19(react@18.3.1)(zod@3.25.76) stripe: 17.7.0 - zod: 3.25.67 + zod: 3.25.76 '@supabase/auth-js@2.71.1': dependencies: @@ -32626,15 +32634,15 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 - ai@4.3.19(react@18.3.1)(zod@3.25.67): + ai@4.3.19(react@18.3.1)(zod@3.25.76): dependencies: '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) - '@ai-sdk/react': 1.2.12(react@18.3.1)(zod@3.25.67) - '@ai-sdk/ui-utils': 1.2.11(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) + '@ai-sdk/react': 1.2.12(react@18.3.1)(zod@3.25.76) + '@ai-sdk/ui-utils': 1.2.11(zod@3.25.76) '@opentelemetry/api': 1.9.0 jsondiffpatch: 0.6.0 - zod: 3.25.67 + zod: 3.25.76 optionalDependencies: react: 18.3.1 @@ -33844,18 +33852,6 @@ snapshots: chownr@3.0.0: {} - chromadb@1.10.5(@google/generative-ai@0.24.1)(cohere-ai@7.19.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13))(encoding@0.1.13)(ollama@0.5.17)(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)): - dependencies: - cliui: 8.0.1 - isomorphic-fetch: 3.0.0(encoding@0.1.13) - optionalDependencies: - '@google/generative-ai': 0.24.1 - cohere-ai: 7.19.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13) - ollama: 0.5.17 - openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67) - transitivePeerDependencies: - - encoding - chromadb@1.10.5(@google/generative-ai@0.24.1)(cohere-ai@7.19.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13))(encoding@0.1.13)(ollama@0.5.17)(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)): dependencies: cliui: 8.0.1 @@ -33868,14 +33864,14 @@ snapshots: transitivePeerDependencies: - encoding - chromadb@1.8.1(@google/generative-ai@0.24.1)(cohere-ai@7.9.5(encoding@0.1.13))(encoding@0.1.13)(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)): + chromadb@1.8.1(@google/generative-ai@0.24.1)(cohere-ai@7.9.5(encoding@0.1.13))(encoding@0.1.13)(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)): dependencies: cliui: 8.0.1 isomorphic-fetch: 3.0.0(encoding@0.1.13) optionalDependencies: '@google/generative-ai': 0.24.1 cohere-ai: 7.9.5(encoding@0.1.13) - openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67) + openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) transitivePeerDependencies: - encoding @@ -36662,9 +36658,9 @@ snapshots: dependencies: cross-fetch: 4.1.0(encoding@0.1.13) dotenv: 16.4.7 - openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67) - zod: 3.25.67 - zod-to-json-schema: 3.24.5(zod@3.25.67) + openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) + zod: 3.25.76 + zod-to-json-schema: 3.24.6(zod@3.25.76) transitivePeerDependencies: - encoding - ws @@ -39790,9 +39786,9 @@ snapshots: kuler@2.0.0: {} - langchain@0.2.20(2l6dvsjppnmt7latumn3oogoaa): + langchain@0.2.20(3dhiljncfxoaoigaczeqd5pdee): dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) '@langchain/openai': 0.2.11(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@langchain/textsplitters': 0.0.3(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) binary-extensions: 2.3.0 @@ -39812,14 +39808,14 @@ snapshots: '@browserbasehq/sdk': 2.6.0(encoding@0.1.13) '@gomomento/sdk': 1.116.0 '@gomomento/sdk-core': 1.116.0 - '@langchain/anthropic': 0.3.23(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) - '@langchain/aws': 0.1.11(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - '@langchain/cohere': 0.3.4(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13) - '@langchain/google-genai': 0.2.13(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) - '@langchain/google-vertexai': 0.2.13(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) - '@langchain/groq': 0.2.3(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13) - '@langchain/mistralai': 0.2.1(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) - '@langchain/ollama': 0.2.3(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/anthropic': 0.3.23(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/aws': 0.1.11(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@langchain/cohere': 0.3.4(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13) + '@langchain/google-genai': 0.2.13(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/google-vertexai': 0.2.13(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/groq': 0.2.3(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13) + '@langchain/mistralai': 0.2.1(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/ollama': 0.2.3(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) '@mendable/firecrawl-js': 0.0.28 '@notionhq/client': 4.0.0 '@pinecone-database/pinecone': 2.2.2 @@ -39857,31 +39853,31 @@ snapshots: - encoding - openai - langchain@0.3.28(g3hy2qr5phattispf4an5zz774): + langchain@0.3.28(6frqvsg5tm3nbnujlj6diybnmy): dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) - '@langchain/openai': 0.5.15(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/openai': 0.5.15(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) js-tiktoken: 1.0.21 js-yaml: 4.1.0 jsonpointer: 5.0.1 - langsmith: 0.3.68(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + langsmith: 0.3.68(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) openapi-types: 12.1.3 p-retry: 4.6.2 uuid: 10.0.0 yaml: 2.8.1 - zod: 3.25.67 + zod: 3.25.76 optionalDependencies: - '@langchain/anthropic': 0.3.23(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))) - '@langchain/aws': 0.1.11(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - '@langchain/cohere': 0.3.4(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13) - '@langchain/deepseek': 0.0.2(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - '@langchain/google-genai': 0.2.13(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))) - '@langchain/google-vertexai': 0.2.13(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))) - '@langchain/groq': 0.2.3(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13) - '@langchain/mistralai': 0.2.1(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))) - '@langchain/ollama': 0.2.3(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))) - '@langchain/xai': 0.0.3(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@langchain/anthropic': 0.3.23(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/aws': 0.1.11(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@langchain/cohere': 0.3.4(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13) + '@langchain/deepseek': 0.0.2(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@langchain/google-genai': 0.2.13(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/google-vertexai': 0.2.13(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/groq': 0.2.3(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13) + '@langchain/mistralai': 0.2.1(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/ollama': 0.2.3(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/xai': 0.0.3(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) axios: 1.12.1 cheerio: 1.1.2 handlebars: 4.7.8 @@ -39894,31 +39890,31 @@ snapshots: - openai - ws - langchain@0.3.35(g3hy2qr5phattispf4an5zz774): + langchain@0.3.35(6frqvsg5tm3nbnujlj6diybnmy): dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) - '@langchain/openai': 0.5.15(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) + '@langchain/openai': 0.6.3(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) js-tiktoken: 1.0.21 js-yaml: 4.1.0 jsonpointer: 5.0.1 - langsmith: 0.3.68(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + langsmith: 0.3.68(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) openapi-types: 12.1.3 p-retry: 4.6.2 uuid: 10.0.0 yaml: 2.8.1 zod: 3.25.76 optionalDependencies: - '@langchain/anthropic': 0.3.23(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))) - '@langchain/aws': 0.1.11(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - '@langchain/cohere': 0.3.4(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13) - '@langchain/deepseek': 0.0.2(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) - '@langchain/google-genai': 0.2.13(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))) - '@langchain/google-vertexai': 0.2.13(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))) - '@langchain/groq': 0.2.3(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13) - '@langchain/mistralai': 0.2.1(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))) - '@langchain/ollama': 0.2.3(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))) - '@langchain/xai': 0.0.3(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@langchain/anthropic': 0.3.23(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/aws': 0.1.11(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@langchain/cohere': 0.3.4(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(encoding@0.1.13) + '@langchain/deepseek': 0.0.2(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@langchain/google-genai': 0.2.13(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/google-vertexai': 0.2.13(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/groq': 0.2.3(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13) + '@langchain/mistralai': 0.2.1(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/ollama': 0.2.3(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))) + '@langchain/xai': 0.0.3(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)) axios: 1.12.1 cheerio: 1.1.2 handlebars: 4.7.8 @@ -39937,9 +39933,9 @@ snapshots: dependencies: mustache: 4.2.0 - langfuse-langchain@3.37.6(langchain@0.3.28(g3hy2qr5phattispf4an5zz774)): + langfuse-langchain@3.37.6(langchain@0.3.28(6frqvsg5tm3nbnujlj6diybnmy)): dependencies: - langchain: 0.3.28(g3hy2qr5phattispf4an5zz774) + langchain: 0.3.28(6frqvsg5tm3nbnujlj6diybnmy) langfuse: 3.38.6 langfuse-core: 3.38.6 @@ -39974,7 +39970,7 @@ snapshots: optionalDependencies: openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) - langsmith@0.3.68(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)): + langsmith@0.3.68(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)): dependencies: '@types/uuid': 10.0.0 chalk: 4.1.2 @@ -39987,7 +39983,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/exporter-trace-otlp-proto': 0.202.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67) + openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) langsmith@0.3.68(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.0.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)): dependencies: @@ -40012,16 +40008,16 @@ snapshots: langwatch@0.1.7(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(react@18.3.1)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)): dependencies: - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) '@opentelemetry/otlp-transformer': 0.56.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - ai: 4.3.19(react@18.3.1)(zod@3.25.67) + ai: 4.3.19(react@18.3.1)(zod@3.25.76) eventemitter3: 5.0.1 javascript-stringify: 2.1.0 nanoid: 5.1.5 - openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67) - zod: 3.25.67 - zod-validation-error: 3.5.3(zod@3.25.67) + openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) + zod: 3.25.76 + zod-validation-error: 3.5.3(zod@3.25.76) transitivePeerDependencies: - '@opentelemetry/api' - '@opentelemetry/exporter-trace-otlp-proto' @@ -40174,7 +40170,7 @@ snapshots: - bufferutil - utf-8-validate - llamaindex@0.3.17(@aws-sdk/credential-providers@3.887.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)))(@notionhq/client@2.3.0(encoding@0.1.13))(bufferutil@4.0.9)(encoding@0.1.13)(node-fetch@2.7.0(encoding@0.1.13))(socks@2.8.7)(typescript@5.5.4)(utf-8-validate@6.0.5)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67): + llamaindex@0.3.17(@aws-sdk/credential-providers@3.887.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)))(@notionhq/client@2.3.0(encoding@0.1.13))(bufferutil@4.0.9)(encoding@0.1.13)(node-fetch@2.7.0(encoding@0.1.13))(socks@2.8.7)(typescript@5.5.4)(utf-8-validate@6.0.5)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76): dependencies: '@anthropic-ai/sdk': 0.21.1(encoding@0.1.13) '@aws-crypto/sha256-js': 5.2.0 @@ -40195,7 +40191,7 @@ snapshots: '@zilliz/milvus2-sdk-node': 2.6.0 ajv: 8.17.1 assemblyai: 4.16.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - chromadb: 1.8.1(@google/generative-ai@0.24.1)(cohere-ai@7.9.5(encoding@0.1.13))(encoding@0.1.13)(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + chromadb: 1.8.1(@google/generative-ai@0.24.1)(cohere-ai@7.9.5(encoding@0.1.13))(encoding@0.1.13)(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) cohere-ai: 7.9.5(encoding@0.1.13) js-tiktoken: 1.0.21 lodash: 4.17.21 @@ -40204,7 +40200,7 @@ snapshots: md-utils-ts: 2.0.0 mongodb: 6.19.0(@aws-sdk/credential-providers@3.887.0(aws-crt@1.27.3(bufferutil@4.0.9)(utf-8-validate@6.0.5)))(socks@2.8.7) notion-md-crawler: 1.0.2 - openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67) + openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) papaparse: 5.5.3 pathe: 1.1.2 pg: 8.16.3 @@ -40421,11 +40417,11 @@ snapshots: dependencies: react: 18.3.1 - lunary@0.7.15(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67))(react@18.3.1): + lunary@0.7.15(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76))(react@18.3.1): dependencies: unctx: 2.4.1 optionalDependencies: - openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67) + openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) react: 18.3.1 luxon@3.7.2: {} @@ -40951,12 +40947,12 @@ snapshots: transitivePeerDependencies: - encoding - mem0ai@2.1.38(@anthropic-ai/sdk@0.52.0)(@cloudflare/workers-types@4.20250912.0)(@google/genai@0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5))(@langchain/core@0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)))(@mistralai/mistralai@0.1.3(encoding@0.1.13))(@qdrant/js-client-rest@1.15.1(typescript@5.5.4))(@supabase/supabase-js@2.57.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(@types/jest@30.0.0)(@types/pg@8.15.5)(@types/sqlite3@3.1.11)(cloudflare@4.5.0(encoding@0.1.13))(encoding@0.1.13)(groq-sdk@0.19.0(encoding@0.1.13))(neo4j-driver@5.28.1)(ollama@0.5.17)(pg@8.16.3)(redis@4.7.1)(sqlite3@5.1.7)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)): + mem0ai@2.1.38(@anthropic-ai/sdk@0.52.0)(@cloudflare/workers-types@4.20250912.0)(@google/genai@0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5))(@langchain/core@0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)))(@mistralai/mistralai@0.1.3(encoding@0.1.13))(@qdrant/js-client-rest@1.15.1(typescript@5.5.4))(@supabase/supabase-js@2.57.4(bufferutil@4.0.9)(utf-8-validate@6.0.5))(@types/jest@30.0.0)(@types/pg@8.15.5)(@types/sqlite3@3.1.11)(cloudflare@4.5.0(encoding@0.1.13))(encoding@0.1.13)(groq-sdk@0.19.0(encoding@0.1.13))(neo4j-driver@5.28.1)(ollama@0.5.17)(pg@8.16.3)(redis@4.7.1)(sqlite3@5.1.7)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5)): dependencies: '@anthropic-ai/sdk': 0.52.0 '@cloudflare/workers-types': 4.20250912.0 '@google/genai': 0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@6.0.5) - '@langchain/core': 0.3.59(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67)) + '@langchain/core': 0.3.61(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.202.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76)) '@mistralai/mistralai': 0.1.3(encoding@0.1.13) '@qdrant/js-client-rest': 1.15.1(typescript@5.5.4) '@supabase/supabase-js': 2.57.4(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -40968,12 +40964,12 @@ snapshots: groq-sdk: 0.19.0(encoding@0.1.13) neo4j-driver: 5.28.1 ollama: 0.5.17 - openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67) + openai: 4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76) pg: 8.16.3 redis: 4.7.1 sqlite3: 5.1.7 uuid: 9.0.1 - zod: 3.25.67 + zod: 3.25.76 transitivePeerDependencies: - debug - encoding @@ -41995,7 +41991,7 @@ snapshots: netmask@2.0.2: {} - next-auth@4.24.11(next@14.2.32(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.55.0)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.92.1))(nodemailer@6.9.16)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + next-auth@4.24.11(next@14.2.32(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.55.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.92.1))(nodemailer@6.9.16)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.28.4 '@panva/hkdf': 1.2.1 @@ -42527,21 +42523,6 @@ snapshots: dependencies: js-tiktoken: 1.0.21 - openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.67): - dependencies: - '@types/node': 18.15.11 - '@types/node-fetch': 2.6.13 - abort-controller: 3.0.0 - agentkeepalive: 4.6.0 - form-data-encoder: 1.7.2 - formdata-node: 4.4.1 - node-fetch: 2.7.0(encoding@0.1.13) - optionalDependencies: - ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5) - zod: 3.25.67 - transitivePeerDependencies: - - encoding - openai@4.96.0(encoding@0.1.13)(ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.25.76): dependencies: '@types/node': 18.15.11 @@ -45063,7 +45044,7 @@ snapshots: tiktoken: 1.0.22 tree-sitter-wasms: 0.1.12 web-tree-sitter: 0.24.7 - zod: 3.24.2 + zod: 3.25.76 transitivePeerDependencies: - supports-color @@ -48663,7 +48644,7 @@ snapshots: googleapis: 129.0.0(encoding@0.1.13) pnpm: 10.16.0 youtube-captions-scraper: 2.0.3 - zod: 3.25.67 + zod: 3.25.76 transitivePeerDependencies: - debug - encoding @@ -48689,26 +48670,14 @@ snapshots: optionalDependencies: commander: 9.5.0 - zod-to-json-schema@3.24.5(zod@3.25.67): - dependencies: - zod: 3.25.67 - zod-to-json-schema@3.24.6(zod@3.24.2): dependencies: zod: 3.24.2 - zod-to-json-schema@3.24.6(zod@3.25.67): - dependencies: - zod: 3.25.67 - zod-to-json-schema@3.24.6(zod@3.25.76): dependencies: zod: 3.25.76 - zod-validation-error@3.5.3(zod@3.25.67): - dependencies: - zod: 3.25.67 - zod-validation-error@3.5.3(zod@3.25.76): dependencies: zod: 3.25.76 @@ -48717,8 +48686,6 @@ snapshots: zod@3.24.2: {} - zod@3.25.67: {} - zod@3.25.76: {} zustand@4.5.7(@types/react@18.2.15)(immer@9.0.21)(react@18.2.0):