@mastra/react 0.1.0-beta.5 → 0.1.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/index.cjs +19 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +19 -6
- package/dist/index.js.map +1 -1
- package/dist/src/agent/hooks.d.ts +2 -0
- package/package.json +3 -3
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/mastra-client-context.tsx","../src/mastra-react-provider.tsx","../src/lib/ai-sdk/utils/toUIMessage.ts","../src/lib/ai-sdk/utils/toAssistantUIMessage.ts","../src/lib/ai-sdk/memory/resolveInitialMessages.ts","../src/lib/ai-sdk/transformers/AISdkNetworkTransformer.ts","../src/lib/ai-sdk/utils/fromCoreUserMessageToUIMessage.tsx","../src/agent/hooks.ts","../src/ui/Entity/context.tsx","../src/ui/Icon/Icon.tsx","../src/ui/Entity/Entity.tsx","../src/ui/Entity/ToolApproval.tsx","../src/ui/Entity/Entry.tsx","../src/ui/Code/highlight.ts","../src/ui/Tooltip/Tooltip.tsx","../src/ui/IconButton/IconButton.tsx","../src/ui/Code/Code.tsx","../src/ui/Icons/AgentIcon.tsx","../src/ui/Icons/ToolsIcon.tsx","../src/ui/Icons/WorkflowIcon.tsx","../src/ui/Message/Message.tsx"],"sourcesContent":["import { createContext, useContext, ReactNode } from 'react';\nimport { MastraClient } from '@mastra/client-js';\n\nexport type MastraClientContextType = MastraClient;\n\nconst MastraClientContext = createContext<MastraClientContextType>({} as MastraClientContextType);\n\nexport interface MastraClientProviderProps {\n children: ReactNode;\n baseUrl?: string;\n headers?: Record<string, string>;\n}\n\nexport const MastraClientProvider = ({ children, baseUrl, headers }: MastraClientProviderProps) => {\n const client = createMastraClient(baseUrl, headers);\n\n return <MastraClientContext.Provider value={client}>{children}</MastraClientContext.Provider>;\n};\n\nexport const useMastraClient = () => useContext(MastraClientContext);\n\nconst createMastraClient = (baseUrl?: string, mastraClientHeaders: Record<string, string> = {}) => {\n return new MastraClient({\n baseUrl: baseUrl || '',\n // only add the header if the baseUrl is not provided i.e it's a local dev environment\n headers: !baseUrl ? { ...mastraClientHeaders, 'x-mastra-dev-playground': 'true' } : mastraClientHeaders,\n });\n};\n","import { MastraClientProvider, MastraClientProviderProps } from '@/mastra-client-context';\ntype MastraReactProviderProps = MastraClientProviderProps;\n\nexport const MastraReactProvider = ({ children, baseUrl, headers }: MastraReactProviderProps) => {\n return (\n <MastraClientProvider baseUrl={baseUrl} headers={headers}>\n {children}\n </MastraClientProvider>\n );\n};\n","import { AgentChunkType, ChunkType } from '@mastra/core/stream';\nimport { MastraUIMessage, MastraUIMessageMetadata } from '../types';\nimport { WorkflowStreamResult, StepResult } from '@mastra/core/workflows';\n\ntype StreamChunk = {\n type: string;\n payload: any;\n runId: string;\n from: 'AGENT' | 'WORKFLOW';\n};\n\n// Helper function to map workflow stream chunks to watch result format\n// Based on the pattern from packages/playground-ui/src/domains/workflows/utils.ts\n\nexport const mapWorkflowStreamChunkToWatchResult = (\n prev: WorkflowStreamResult<any, any, any, any>,\n chunk: StreamChunk,\n): WorkflowStreamResult<any, any, any, any> => {\n if (chunk.type === 'workflow-start') {\n return {\n input: prev?.input,\n status: 'running',\n steps: prev?.steps || {},\n };\n }\n\n if (chunk.type === 'workflow-canceled') {\n return {\n ...prev,\n status: 'canceled',\n };\n }\n\n if (chunk.type === 'workflow-finish') {\n const finalStatus = chunk.payload.workflowStatus;\n const prevSteps = prev?.steps ?? {};\n const lastStep = Object.values(prevSteps).pop();\n return {\n ...prev,\n status: chunk.payload.workflowStatus,\n ...(finalStatus === 'success' && lastStep?.status === 'success'\n ? { result: lastStep?.output }\n : finalStatus === 'failed' && lastStep?.status === 'failed'\n ? { error: lastStep?.error }\n : {}),\n };\n }\n\n const { stepCallId, stepName, ...newPayload } = chunk.payload ?? {};\n\n const newSteps = {\n ...prev?.steps,\n [chunk.payload.id]: {\n ...prev?.steps?.[chunk.payload.id],\n ...newPayload,\n },\n };\n\n if (chunk.type === 'workflow-step-start') {\n return {\n ...prev,\n steps: newSteps,\n };\n }\n\n if (chunk.type === 'workflow-step-suspended') {\n const suspendedStepIds = Object.entries(newSteps as Record<string, StepResult<any, any, any, any>>).flatMap(\n ([stepId, stepResult]) => {\n if (stepResult?.status === 'suspended') {\n const nestedPath = stepResult?.suspendPayload?.__workflow_meta?.path;\n return nestedPath ? [[stepId, ...nestedPath]] : [[stepId]];\n }\n\n return [];\n },\n );\n return {\n ...prev,\n status: 'suspended',\n steps: newSteps,\n suspendPayload: chunk.payload.suspendPayload,\n suspended: suspendedStepIds as any,\n };\n }\n\n if (chunk.type === 'workflow-step-waiting') {\n return {\n ...prev,\n status: 'waiting',\n steps: newSteps,\n };\n }\n\n if (chunk.type === 'workflow-step-result') {\n return {\n ...prev,\n steps: newSteps,\n };\n }\n\n return prev;\n};\n\nexport interface ToUIMessageArgs {\n chunk: ChunkType;\n conversation: MastraUIMessage[];\n metadata: MastraUIMessageMetadata;\n}\n\nexport const toUIMessage = ({ chunk, conversation, metadata }: ToUIMessageArgs): MastraUIMessage[] => {\n // Always return a new array reference for React\n const result = [...conversation];\n\n switch (chunk.type) {\n case 'tripwire': {\n // Create a new assistant message\n const newMessage: MastraUIMessage = {\n id: `tripwire-${chunk.runId + Date.now()}`,\n role: 'assistant',\n parts: [\n {\n type: 'text',\n text: chunk.payload.tripwireReason,\n },\n ],\n metadata: {\n ...metadata,\n status: 'warning',\n },\n };\n\n return [...result, newMessage];\n }\n\n case 'start': {\n // Create a new assistant message\n const newMessage: MastraUIMessage = {\n id: `start-${chunk.runId + Date.now()}`,\n role: 'assistant',\n parts: [],\n metadata,\n };\n\n return [...result, newMessage];\n }\n\n case 'text-start':\n case 'text-delta': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return result;\n\n // Find or create a text part\n const parts = [...lastMessage.parts];\n let textPartIndex = parts.findIndex(part => part.type === 'text');\n\n if (chunk.type === 'text-start') {\n // Add a new text part if it doesn't exist\n if (textPartIndex === -1) {\n parts.push({\n type: 'text',\n text: '',\n state: 'streaming',\n providerMetadata: chunk.payload.providerMetadata,\n });\n }\n } else {\n // text-delta: append to existing text part or create if missing\n if (textPartIndex === -1) {\n parts.push({\n type: 'text',\n text: chunk.payload.text,\n state: 'streaming',\n providerMetadata: chunk.payload.providerMetadata,\n });\n } else {\n const textPart = parts[textPartIndex];\n if (textPart.type === 'text') {\n parts[textPartIndex] = {\n ...textPart,\n text: textPart.text + chunk.payload.text,\n state: 'streaming',\n };\n }\n }\n }\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n case 'reasoning-delta': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') {\n // Create new message if none exists\n const newMessage: MastraUIMessage = {\n id: `reasoning-${chunk.runId + Date.now()}`,\n role: 'assistant',\n parts: [\n {\n type: 'reasoning',\n text: chunk.payload.text,\n state: 'streaming',\n providerMetadata: chunk.payload.providerMetadata,\n },\n ],\n metadata,\n };\n return [...result, newMessage];\n }\n\n // Find or create reasoning part\n const parts = [...lastMessage.parts];\n let reasoningPartIndex = parts.findIndex(part => part.type === 'reasoning');\n\n if (reasoningPartIndex === -1) {\n parts.push({\n type: 'reasoning',\n text: chunk.payload.text,\n state: 'streaming',\n providerMetadata: chunk.payload.providerMetadata,\n });\n } else {\n const reasoningPart = parts[reasoningPartIndex];\n if (reasoningPart.type === 'reasoning') {\n parts[reasoningPartIndex] = {\n ...reasoningPart,\n text: reasoningPart.text + chunk.payload.text,\n state: 'streaming',\n };\n }\n }\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n case 'tool-call': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') {\n // Create new message if none exists\n const newMessage: MastraUIMessage = {\n id: `tool-call-${chunk.runId + Date.now()}`,\n role: 'assistant',\n parts: [\n {\n type: 'dynamic-tool',\n toolName: chunk.payload.toolName,\n toolCallId: chunk.payload.toolCallId,\n state: 'input-available',\n input: chunk.payload.args,\n callProviderMetadata: chunk.payload.providerMetadata,\n },\n ],\n metadata,\n };\n return [...result, newMessage];\n }\n\n // Add tool call to existing message\n const parts = [...lastMessage.parts];\n parts.push({\n type: 'dynamic-tool',\n toolName: chunk.payload.toolName,\n toolCallId: chunk.payload.toolCallId,\n state: 'input-available',\n input: chunk.payload.args,\n callProviderMetadata: chunk.payload.providerMetadata,\n });\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n case 'tool-error':\n case 'tool-result': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return result;\n\n // Find and update the corresponding tool call\n const parts = [...lastMessage.parts];\n const toolPartIndex = parts.findIndex(\n part =>\n (part.type === 'dynamic-tool' || (typeof part.type === 'string' && part.type.startsWith('tool-'))) &&\n 'toolCallId' in part &&\n part.toolCallId === chunk.payload.toolCallId,\n );\n\n if (toolPartIndex !== -1) {\n const toolPart = parts[toolPartIndex];\n if (\n toolPart.type === 'dynamic-tool' ||\n (typeof toolPart.type === 'string' && toolPart.type.startsWith('tool-'))\n ) {\n const toolName =\n 'toolName' in toolPart && typeof toolPart.toolName === 'string'\n ? toolPart.toolName\n : toolPart.type.startsWith('tool-')\n ? toolPart.type.substring(5)\n : '';\n\n const toolCallId = (toolPart as any).toolCallId;\n\n if ((chunk.type === 'tool-result' && chunk.payload.isError) || chunk.type === 'tool-error') {\n const error = chunk.type === 'tool-error' ? chunk.payload.error : chunk.payload.result;\n parts[toolPartIndex] = {\n type: 'dynamic-tool',\n toolName,\n toolCallId,\n state: 'output-error',\n input: (toolPart as any).input,\n errorText: String(error),\n callProviderMetadata: chunk.payload.providerMetadata,\n };\n } else {\n const isWorkflow = Boolean((chunk.payload.result as any)?.result?.steps);\n const isAgent = chunk?.from === 'AGENT';\n let output;\n if (isWorkflow) {\n output = (chunk.payload.result as any)?.result;\n } else if (isAgent) {\n output = (parts[toolPartIndex] as any).output ?? chunk.payload.result;\n } else {\n output = chunk.payload.result;\n }\n parts[toolPartIndex] = {\n type: 'dynamic-tool',\n toolName,\n toolCallId,\n state: 'output-available',\n input: (toolPart as any).input,\n output,\n callProviderMetadata: chunk.payload.providerMetadata,\n };\n }\n }\n }\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n case 'tool-output': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return result;\n\n // Find and update the corresponding tool call\n const parts = [...lastMessage.parts];\n const toolPartIndex = parts.findIndex(\n part =>\n (part.type === 'dynamic-tool' || (typeof part.type === 'string' && part.type.startsWith('tool-'))) &&\n 'toolCallId' in part &&\n part.toolCallId === chunk.payload.toolCallId,\n );\n\n if (toolPartIndex !== -1) {\n const toolPart = parts[toolPartIndex];\n // Handle dynamic-tool and tool-* part types\n if (\n toolPart.type === 'dynamic-tool' ||\n (typeof toolPart.type === 'string' && toolPart.type.startsWith('tool-'))\n ) {\n // Extract toolName, toolCallId, input from different part structures\n const toolName =\n 'toolName' in toolPart && typeof toolPart.toolName === 'string'\n ? toolPart.toolName\n : typeof toolPart.type === 'string' && toolPart.type.startsWith('tool-')\n ? toolPart.type.substring(5)\n : '';\n const toolCallId = (toolPart as any).toolCallId;\n const input = (toolPart as any).input;\n\n // Handle workflow-related output chunks\n if (chunk.payload.output?.type?.startsWith('workflow-')) {\n // Get existing workflow state from the output field\n const existingWorkflowState =\n ((toolPart as any).output as WorkflowStreamResult<any, any, any, any>) ||\n ({} as WorkflowStreamResult<any, any, any, any>);\n\n // Use the mapWorkflowStreamChunkToWatchResult pattern for accumulation\n const updatedWorkflowState = mapWorkflowStreamChunkToWatchResult(\n existingWorkflowState,\n chunk.payload.output,\n );\n\n parts[toolPartIndex] = {\n type: 'dynamic-tool',\n toolName,\n toolCallId,\n state: 'input-streaming',\n input,\n output: updatedWorkflowState as any,\n };\n } else if (\n chunk.payload.output?.from === 'AGENT' ||\n (chunk.payload.output?.from === 'USER' &&\n chunk.payload.output?.payload?.output?.type?.startsWith('workflow-'))\n ) {\n return toUIMessageFromAgent(chunk.payload.output, conversation, metadata);\n } else {\n // Handle regular tool output\n const currentOutput = ((toolPart as any).output as any) || [];\n const existingOutput = Array.isArray(currentOutput) ? currentOutput : [];\n\n parts[toolPartIndex] = {\n type: 'dynamic-tool',\n toolName,\n toolCallId,\n state: 'input-streaming',\n input,\n output: [...existingOutput, chunk.payload.output] as any,\n };\n }\n }\n }\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n case 'source': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return result;\n\n const parts = [...lastMessage.parts];\n\n // Add source part based on sourceType\n if (chunk.payload.sourceType === 'url') {\n parts.push({\n type: 'source-url',\n sourceId: chunk.payload.id,\n url: chunk.payload.url || '',\n title: chunk.payload.title,\n providerMetadata: chunk.payload.providerMetadata,\n });\n } else if (chunk.payload.sourceType === 'document') {\n parts.push({\n type: 'source-document',\n sourceId: chunk.payload.id,\n mediaType: chunk.payload.mimeType || 'application/octet-stream',\n title: chunk.payload.title,\n filename: chunk.payload.filename,\n providerMetadata: chunk.payload.providerMetadata,\n });\n }\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n case 'file': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return result;\n\n const parts = [...lastMessage.parts];\n\n // Create data URL for file content\n let url: string;\n if (typeof chunk.payload.data === 'string') {\n url = chunk.payload.base64\n ? `data:${chunk.payload.mimeType};base64,${chunk.payload.data}`\n : `data:${chunk.payload.mimeType},${encodeURIComponent(chunk.payload.data)}`;\n } else {\n // For Uint8Array, convert to base64\n const base64 = btoa(String.fromCharCode(...chunk.payload.data));\n url = `data:${chunk.payload.mimeType};base64,${base64}`;\n }\n\n parts.push({\n type: 'file',\n mediaType: chunk.payload.mimeType,\n url,\n providerMetadata: chunk.payload.providerMetadata,\n });\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n case 'tool-call-approval': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return result;\n\n // Find and update the corresponding tool call\n\n const lastRequireApprovalMetadata =\n lastMessage.metadata?.mode === 'stream' ? lastMessage.metadata?.requireApprovalMetadata : {};\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n metadata: {\n ...lastMessage.metadata,\n mode: 'stream',\n requireApprovalMetadata: {\n ...lastRequireApprovalMetadata,\n [chunk.payload.toolCallId]: {\n toolCallId: chunk.payload.toolCallId,\n toolName: chunk.payload.toolName,\n args: chunk.payload.args,\n },\n },\n },\n },\n ];\n }\n\n case 'finish': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return result;\n\n // Mark streaming parts as done\n const parts = lastMessage.parts.map(part => {\n if (\n typeof part === 'object' &&\n part !== null &&\n 'type' in part &&\n 'state' in part &&\n part.state === 'streaming'\n ) {\n if (part.type === 'text' || part.type === 'reasoning') {\n return { ...part, state: 'done' as const };\n }\n }\n return part;\n });\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n case 'error': {\n const newMessage: MastraUIMessage = {\n id: `error-${chunk.runId + Date.now()}`,\n role: 'assistant',\n parts: [\n {\n type: 'text',\n text: typeof chunk.payload.error === 'string' ? chunk.payload.error : JSON.stringify(chunk.payload.error),\n },\n ],\n metadata: {\n ...metadata,\n status: 'error',\n },\n };\n\n return [...result, newMessage];\n }\n\n // For all other chunk types, return conversation unchanged\n default:\n return result;\n }\n};\n\nconst toUIMessageFromAgent = (\n chunk: AgentChunkType,\n conversation: MastraUIMessage[],\n metadata: MastraUIMessageMetadata,\n): MastraUIMessage[] => {\n const lastMessage = conversation[conversation.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return conversation;\n\n const parts = [...lastMessage.parts];\n\n if (chunk.type === 'text-delta') {\n const agentChunk = chunk.payload;\n const toolPartIndex = parts.findIndex(part => part.type === 'dynamic-tool');\n\n if (toolPartIndex === -1) return conversation;\n const toolPart = parts[toolPartIndex];\n\n // if (toolPart.type !== 'dynamic-tool') return newConversation;\n const childMessages = (toolPart as any)?.output?.childMessages || [];\n const lastChildMessage = childMessages[childMessages.length - 1];\n\n const textMessage = { type: 'text', content: (lastChildMessage?.content || '') + agentChunk.text };\n\n const nextMessages =\n lastChildMessage?.type === 'text'\n ? [...childMessages.slice(0, -1), textMessage]\n : [...childMessages, textMessage];\n\n parts[toolPartIndex] = {\n ...toolPart,\n output: {\n childMessages: nextMessages,\n },\n } as any;\n } else if (chunk.type === 'tool-call') {\n const agentChunk = chunk.payload;\n const toolPartIndex = parts.findIndex(part => part.type === 'dynamic-tool');\n\n if (toolPartIndex === -1) return conversation;\n const toolPart = parts[toolPartIndex];\n const childMessages = (toolPart as any)?.output?.childMessages || [];\n\n parts[toolPartIndex] = {\n ...toolPart,\n output: {\n ...(toolPart as any)?.output,\n childMessages: [\n ...childMessages,\n {\n type: 'tool',\n toolCallId: agentChunk.toolCallId,\n toolName: agentChunk.toolName,\n args: agentChunk.args,\n },\n ],\n },\n } as any;\n } else if (chunk.type === 'tool-output') {\n const agentChunk = chunk.payload;\n const toolPartIndex = parts.findIndex(part => part.type === 'dynamic-tool');\n\n if (toolPartIndex === -1) return conversation;\n const toolPart = parts[toolPartIndex];\n if (agentChunk?.output?.type?.startsWith('workflow-')) {\n const childMessages = (toolPart as any)?.output?.childMessages || [];\n const lastToolIndex = childMessages.length - 1;\n\n const currentMessage = childMessages[lastToolIndex];\n const actualExistingWorkflowState = (currentMessage as any)?.toolOutput || {};\n const updatedWorkflowState = mapWorkflowStreamChunkToWatchResult(actualExistingWorkflowState, agentChunk.output);\n\n if (lastToolIndex >= 0 && childMessages[lastToolIndex]?.type === 'tool') {\n parts[toolPartIndex] = {\n ...toolPart,\n output: {\n ...(toolPart as any)?.output,\n childMessages: [\n ...childMessages.slice(0, -1),\n {\n ...currentMessage,\n toolOutput: { ...updatedWorkflowState, runId: agentChunk.output.runId },\n },\n ],\n },\n } as any;\n }\n }\n } else if (chunk.type === 'tool-result') {\n const agentChunk = chunk.payload;\n const toolPartIndex = parts.findIndex(part => part.type === 'dynamic-tool');\n\n if (toolPartIndex === -1) return conversation;\n const toolPart = parts[toolPartIndex];\n const childMessages = (toolPart as any)?.output?.childMessages || [];\n\n const lastToolIndex = childMessages.length - 1;\n const isWorkflow = agentChunk?.toolName?.startsWith('workflow-');\n\n if (lastToolIndex >= 0 && childMessages[lastToolIndex]?.type === 'tool') {\n parts[toolPartIndex] = {\n ...toolPart,\n output: {\n ...(toolPart as any)?.output,\n childMessages: [\n ...childMessages.slice(0, -1),\n {\n ...childMessages[lastToolIndex],\n toolOutput: isWorkflow\n ? { ...(agentChunk.result as any)?.result, runId: (agentChunk.result as any)?.runId }\n : agentChunk.result,\n },\n ],\n },\n } as any;\n }\n }\n\n return [\n ...conversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n};\n","import { ThreadMessageLike, MessageStatus } from '@assistant-ui/react';\nimport { ExtendedMastraUIMessage, MastraUIMessage } from '../types';\nimport { ReadonlyJSONObject } from '@mastra/core/stream';\n\ntype ContentPart = { metadata?: Record<string, unknown> } & (Exclude<\n ThreadMessageLike['content'],\n string\n> extends readonly (infer T)[]\n ? T\n : never);\n\n/**\n * Converts a Mastra UIMessage (from AI SDK) to a ThreadMessageLike format compatible with @assistant-ui/react.\n *\n * This function handles UIMessages from three sources:\n * - agent.generate: Full output with all message parts\n * - toUIMessage: Streaming chunks accumulated into UIMessages\n * - toNetworkUIMessage: Network execution events accumulated into UIMessages\n *\n * @param message - The MastraUIMessage to convert\n * @returns A ThreadMessageLike compatible with @assistant-ui/react\n */\nexport const toAssistantUIMessage = (message: MastraUIMessage): ThreadMessageLike => {\n const extendedMessage = message as ExtendedMastraUIMessage;\n\n // Convert parts array to content array\n\n const content: ThreadMessageLike['content'] = message.parts.map((part): ContentPart => {\n // Handle text parts\n if (part.type === 'text') {\n return {\n type: 'text',\n text: part.text,\n metadata: message.metadata,\n };\n }\n\n // Handle reasoning parts (extended thinking)\n if (part.type === 'reasoning') {\n return {\n type: 'reasoning',\n text: part.text,\n metadata: message.metadata,\n };\n }\n\n // Handle source-url parts\n if (part.type === 'source-url') {\n return {\n type: 'source',\n sourceType: 'url',\n id: part.sourceId,\n url: part.url,\n title: part.title,\n metadata: message.metadata,\n };\n }\n\n // Handle source-document parts (not directly supported by ThreadMessageLike)\n // Convert to file part for compatibility\n if (part.type === 'source-document') {\n return {\n type: 'file',\n filename: part.filename,\n mimeType: part.mediaType,\n data: '', // Source documents don't have inline data\n metadata: message.metadata,\n };\n }\n\n // Handle file parts\n if (part.type === 'file') {\n const type = part.mediaType.includes('image/') ? 'image' : 'file';\n\n if (type === 'file') {\n return {\n type,\n mimeType: part.mediaType,\n data: part.url, // Use URL as data source\n metadata: message.metadata,\n };\n }\n\n if (type === 'image') {\n return {\n type,\n image: part.url,\n metadata: message.metadata,\n };\n }\n }\n\n // Handle dynamic-tool parts (tool calls)\n if (part.type === 'dynamic-tool') {\n // Build the tool call matching the inline type from ThreadMessageLike\n const baseToolCall: ContentPart = {\n type: 'tool-call' as const,\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n argsText: JSON.stringify(part.input),\n args: part.input as ReadonlyJSONObject,\n metadata: message.metadata,\n };\n\n if (part.state === 'output-error' && 'errorText' in part) {\n return { ...baseToolCall, result: part.errorText, isError: true };\n }\n\n // Only add result and isError if the tool has completed\n if ('output' in part) {\n return { ...baseToolCall, result: part.output };\n }\n\n return baseToolCall;\n }\n\n // Handle typed tool parts (tool-{NAME} pattern from AI SDK)\n if (part.type.startsWith('tool-') && (part as any).state !== 'input-available') {\n const toolName = 'toolName' in part && typeof part.toolName === 'string' ? part.toolName : part.type.substring(5);\n\n const baseToolCall: ContentPart = {\n type: 'tool-call' as const,\n toolCallId: 'toolCallId' in part && typeof part.toolCallId === 'string' ? part.toolCallId : '',\n toolName,\n argsText: 'input' in part ? JSON.stringify(part.input) : '{}',\n args: 'input' in part ? part.input : {},\n metadata: message.metadata,\n };\n\n // Add result if available\n if ('output' in part) {\n return { ...baseToolCall, result: part.output };\n } else if ('error' in part) {\n return { ...baseToolCall, result: part.error, isError: true };\n }\n\n return baseToolCall;\n }\n\n // Extract requireApprovalMetadata from message metadata (if any)\n const requireApprovalMetadata = extendedMessage.metadata?.requireApprovalMetadata as\n | Record<string, any>\n | undefined;\n\n // Check if this part has a toolCallId that matches requireApprovalMetadata\n const partToolCallId = 'toolCallId' in part && typeof part.toolCallId === 'string' ? part.toolCallId : undefined;\n const suspensionData = partToolCallId ? requireApprovalMetadata?.[partToolCallId] : undefined;\n if (suspensionData) {\n const toolName =\n 'toolName' in part && typeof part.toolName === 'string'\n ? part.toolName\n : part.type.startsWith('tool-')\n ? part.type.substring(5)\n : '';\n\n return {\n type: 'tool-call' as const,\n toolCallId: partToolCallId!,\n toolName,\n argsText: 'input' in part ? JSON.stringify(part.input) : '{}',\n args: ('input' in part ? part.input : {}) as ReadonlyJSONObject,\n metadata: extendedMessage.metadata,\n };\n }\n\n // For any other part types, return a minimal text part\n // This ensures forward compatibility with new part types\n return {\n type: 'text',\n text: '',\n metadata: message.metadata,\n };\n });\n\n // Determine status for assistant messages\n let status: MessageStatus | undefined;\n if (message.role === 'assistant' && content.length > 0) {\n // Check for streaming parts\n const hasStreamingParts = message.parts.some(\n part =>\n (part.type === 'text' && 'state' in part && part.state === 'streaming') ||\n (part.type === 'reasoning' && 'state' in part && part.state === 'streaming'),\n );\n\n // Check for tool calls (both dynamic-tool and tool-{NAME} patterns)\n const hasToolCalls = message.parts.some(part => part.type === 'dynamic-tool' || part.type.startsWith('tool-'));\n\n const hasInputAvailableTools = message.parts.some(\n part => part.type === 'dynamic-tool' && part.state === 'input-available',\n );\n\n const hasErrorTools = message.parts.some(\n part =>\n (part.type === 'dynamic-tool' && part.state === 'output-error') ||\n (part.type.startsWith('tool-') && 'error' in part),\n );\n\n // Determine message status based on part states\n if (hasStreamingParts) {\n status = { type: 'running' };\n } else if (hasInputAvailableTools && hasToolCalls) {\n status = { type: 'requires-action', reason: 'tool-calls' };\n } else if (hasErrorTools) {\n status = { type: 'incomplete', reason: 'error' };\n } else {\n status = { type: 'complete', reason: 'stop' };\n }\n }\n\n // Build the ThreadMessageLike object\n const threadMessage: ThreadMessageLike = {\n role: message.role,\n content,\n id: message.id,\n createdAt: extendedMessage.createdAt,\n status,\n attachments: extendedMessage.experimental_attachments,\n };\n\n return threadMessage;\n};\n","import { ExtendedMastraUIMessage, MastraUIMessage } from '../types';\n\n// Type definitions for parsing network execution data\ninterface ToolCallPayload {\n toolCallId: string;\n toolName: string;\n args: Record<string, unknown>;\n providerMetadata?: Record<string, unknown>;\n}\n\ninterface ToolCall {\n type: string;\n runId: string;\n from: string;\n payload: ToolCallPayload;\n}\n\ninterface NestedMessage {\n role: string;\n id: string;\n createdAt: string;\n type: string;\n content?: string | ToolResultContent[];\n}\n\ninterface ToolResultContent {\n type: string;\n toolCallId: string;\n toolName: string;\n result?: {\n result?: Record<string, unknown>;\n };\n}\n\ninterface FinalResult {\n text?: string;\n toolCalls?: ToolCall[];\n messages?: NestedMessage[];\n}\n\ninterface NetworkExecutionData {\n isNetwork: boolean;\n selectionReason?: string;\n primitiveType?: string;\n primitiveId?: string;\n input?: string;\n finalResult?: FinalResult;\n toolCalls?: ToolCall[];\n messages?: NestedMessage[];\n}\n\ninterface ChildMessage {\n type: 'tool' | 'text';\n toolCallId?: string;\n toolName?: string;\n args?: Record<string, unknown>;\n toolOutput?: Record<string, unknown>;\n content?: string;\n}\n\nexport const resolveInitialMessages = (messages: MastraUIMessage[]): MastraUIMessage[] => {\n return messages.map(message => {\n // Check if message contains network execution data\n const networkPart = message.parts.find(\n (part): part is { type: 'text'; text: string } =>\n typeof part === 'object' &&\n part !== null &&\n 'type' in part &&\n part.type === 'text' &&\n 'text' in part &&\n typeof part.text === 'string' &&\n part.text.includes('\"isNetwork\":true'),\n );\n\n if (networkPart && networkPart.type === 'text') {\n try {\n const json: NetworkExecutionData = JSON.parse(networkPart.text);\n\n if (json.isNetwork === true) {\n // Extract network execution data\n const selectionReason = json.selectionReason || '';\n const primitiveType = json.primitiveType || '';\n const primitiveId = json.primitiveId || '';\n const finalResult = json.finalResult;\n const toolCalls = finalResult?.toolCalls || [];\n\n // Build child messages from nested messages\n const childMessages: ChildMessage[] = [];\n\n // Process tool calls from the network agent\n for (const toolCall of toolCalls) {\n if (toolCall.type === 'tool-call' && toolCall.payload) {\n const toolCallId = toolCall.payload.toolCallId;\n\n let toolResult;\n\n for (const message of finalResult?.messages || []) {\n for (const part of message.content || []) {\n if (typeof part === 'object' && part.type === 'tool-result' && part.toolCallId === toolCallId) {\n toolResult = part;\n break;\n }\n }\n }\n\n const isWorkflow = Boolean(toolResult?.result?.result?.steps);\n\n childMessages.push({\n type: 'tool' as const,\n toolCallId: toolCall.payload.toolCallId,\n toolName: toolCall.payload.toolName,\n args: toolCall.payload.args,\n toolOutput: isWorkflow ? toolResult?.result?.result : toolResult?.result,\n });\n }\n }\n\n // Add the final text result if available\n if (finalResult && finalResult.text) {\n childMessages.push({\n type: 'text' as const,\n content: finalResult.text,\n });\n }\n\n // Build the result object\n const result = {\n childMessages: childMessages,\n result: finalResult?.text || '',\n };\n\n // Return the transformed message with dynamic-tool part\n const nextMessage = {\n role: 'assistant' as const,\n parts: [\n {\n type: 'dynamic-tool',\n toolCallId: primitiveId,\n toolName: primitiveId,\n state: 'output-available',\n input: json.input,\n output: result,\n },\n ],\n id: message.id,\n metadata: {\n ...message.metadata,\n mode: 'network' as const,\n selectionReason: selectionReason,\n agentInput: json.input,\n from: primitiveType === 'agent' ? ('AGENT' as const) : ('WORKFLOW' as const),\n },\n } as MastraUIMessage;\n\n return nextMessage;\n }\n } catch (error) {\n // If parsing fails, return the original message\n return message;\n }\n }\n\n const extendedMessage = message as ExtendedMastraUIMessage;\n\n // Convert pendingToolApprovals from DB format to stream format\n const pendingToolApprovals = extendedMessage.metadata?.pendingToolApprovals as Record<string, any> | undefined;\n if (pendingToolApprovals && typeof pendingToolApprovals === 'object') {\n return {\n ...message,\n metadata: {\n ...message.metadata,\n mode: 'stream' as const,\n requireApprovalMetadata: pendingToolApprovals,\n },\n };\n }\n\n // Return original message if it's not a network message\n return message;\n });\n};\n\nexport const resolveToChildMessages = (messages: MastraUIMessage[]): ChildMessage[] => {\n const assistantMessage = messages.find(message => message.role === 'assistant');\n\n if (!assistantMessage) return [];\n\n const parts = assistantMessage.parts;\n\n let childMessages: ChildMessage[] = [];\n\n for (const part of parts) {\n const toolPart = part as any;\n if (part.type.startsWith('tool-')) {\n const toolName = part.type.substring('tool-'.length);\n const isWorkflow = toolName.startsWith('workflow-');\n childMessages.push({\n type: 'tool',\n toolCallId: toolPart.toolCallId,\n toolName: toolName,\n args: toolPart.input,\n toolOutput: isWorkflow ? { ...toolPart.output?.result, runId: toolPart.output?.runId } : toolPart.output,\n });\n }\n\n if (part.type === 'text') {\n childMessages.push({\n type: 'text',\n content: toolPart.text,\n });\n }\n }\n\n return childMessages;\n};\n","import { NetworkChunkType } from '@mastra/core/stream';\nimport { mapWorkflowStreamChunkToWatchResult } from '../utils/toUIMessage';\nimport { Transformer, TransformerArgs } from './types';\nimport { MastraUIMessage, MastraUIMessageMetadata } from '../types';\nimport { WorkflowStreamResult } from '@mastra/core/workflows';\n\nexport class AISdkNetworkTransformer implements Transformer<NetworkChunkType> {\n transform({ chunk, conversation, metadata }: TransformerArgs<NetworkChunkType>): MastraUIMessage[] {\n const newConversation = [...conversation];\n\n if (chunk.type === 'routing-agent-text-delta') {\n return this.handleRoutingAgentConversation(chunk, newConversation);\n }\n\n if (chunk.type.startsWith('agent-execution-')) {\n return this.handleAgentConversation(chunk, newConversation, metadata);\n }\n\n if (chunk.type.startsWith('workflow-execution-')) {\n return this.handleWorkflowConversation(chunk, newConversation, metadata);\n }\n\n if (chunk.type.startsWith('tool-execution-')) {\n return this.handleToolConversation(chunk, newConversation, metadata);\n }\n\n if (chunk.type === 'network-execution-event-step-finish') {\n const lastMessage = newConversation[newConversation.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return newConversation;\n\n const agentChunk = chunk.payload as any;\n const parts = [...lastMessage.parts];\n const textPartIndex = parts.findIndex(part => part.type === 'text');\n\n if (textPartIndex === -1) {\n parts.push({\n type: 'text',\n text: agentChunk.result,\n state: 'done',\n });\n\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n const textPart = parts[textPartIndex];\n if (textPart.type === 'text') {\n parts[textPartIndex] = {\n ...textPart,\n state: 'done',\n };\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n return newConversation;\n }\n\n return newConversation;\n }\n\n private handleRoutingAgentConversation = (\n chunk: NetworkChunkType,\n newConversation: MastraUIMessage[],\n ): MastraUIMessage[] => {\n const lastMessage = newConversation[newConversation.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return newConversation;\n\n const agentChunk = chunk.payload as any;\n const parts = [...lastMessage.parts];\n const textPartIndex = parts.findIndex(part => part.type === 'text');\n\n if (textPartIndex === -1) {\n parts.push({\n type: 'text',\n text: agentChunk.text,\n state: 'streaming',\n });\n\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n const textPart = parts[textPartIndex];\n if (textPart.type === 'text') {\n parts[textPartIndex] = {\n ...textPart,\n text: textPart.text + agentChunk.text,\n state: 'streaming',\n };\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n return newConversation;\n };\n\n private handleAgentConversation = (\n chunk: NetworkChunkType,\n newConversation: MastraUIMessage[],\n metadata: MastraUIMessageMetadata,\n ): MastraUIMessage[] => {\n if (chunk.type === 'agent-execution-start') {\n const primitiveId = chunk.payload?.args?.primitiveId;\n const runId = chunk.payload.runId;\n\n if (!primitiveId || !runId) return newConversation;\n\n const newMessage: MastraUIMessage = {\n id: `agent-execution-start-${runId}-${Date.now()}`,\n role: 'assistant',\n parts: [\n {\n type: 'dynamic-tool',\n toolName: primitiveId,\n toolCallId: runId,\n state: 'input-available',\n input: chunk.payload.args,\n },\n ],\n metadata: {\n ...metadata,\n selectionReason: chunk.payload?.args?.selectionReason || '',\n agentInput: chunk.payload?.args?.task,\n mode: 'network',\n from: 'AGENT',\n },\n };\n\n return [...newConversation, newMessage];\n }\n\n if (chunk.type === 'agent-execution-end') {\n const lastMessage = newConversation[newConversation.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return newConversation;\n\n const parts = [...lastMessage.parts];\n const toolPartIndex = parts.findIndex(part => part.type === 'dynamic-tool');\n\n if (toolPartIndex !== -1) {\n const toolPart = parts[toolPartIndex];\n if (toolPart.type === 'dynamic-tool') {\n const currentOutput = toolPart.output as any;\n parts[toolPartIndex] = {\n type: 'dynamic-tool',\n toolName: toolPart.toolName,\n toolCallId: toolPart.toolCallId,\n state: 'output-available',\n input: toolPart.input,\n output: {\n ...currentOutput,\n result: currentOutput?.result || chunk.payload?.result || '',\n },\n };\n }\n }\n\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n // Handle agent execution events (text, tool calls, etc.)\n if (chunk.type.startsWith('agent-execution-event-')) {\n const lastMessage = newConversation[newConversation.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return newConversation;\n\n const agentChunk = chunk.payload as any;\n const parts = [...lastMessage.parts];\n const toolPartIndex = parts.findIndex(part => part.type === 'dynamic-tool');\n\n if (toolPartIndex === -1) return newConversation;\n const toolPart = parts[toolPartIndex];\n\n // if (toolPart.type !== 'dynamic-tool') return newConversation;\n\n if (agentChunk.type === 'text-delta') {\n const childMessages = (toolPart as any)?.output?.childMessages || [];\n const lastChildMessage = childMessages[childMessages.length - 1];\n\n const textMessage = { type: 'text', content: (lastChildMessage?.content || '') + agentChunk.payload.text };\n\n const nextMessages =\n lastChildMessage?.type === 'text'\n ? [...childMessages.slice(0, -1), textMessage]\n : [...childMessages, textMessage];\n\n parts[toolPartIndex] = {\n ...toolPart,\n output: {\n childMessages: nextMessages,\n },\n } as any;\n } else if (agentChunk.type === 'tool-call') {\n const childMessages = (toolPart as any)?.output?.childMessages || [];\n\n parts[toolPartIndex] = {\n ...toolPart,\n output: {\n ...(toolPart as any)?.output,\n childMessages: [\n ...childMessages,\n {\n type: 'tool',\n toolCallId: agentChunk.payload.toolCallId,\n toolName: agentChunk.payload.toolName,\n args: agentChunk.payload.args,\n },\n ],\n },\n } as any;\n } else if (agentChunk.type === 'tool-output') {\n if (agentChunk.payload?.output?.type?.startsWith('workflow-')) {\n const childMessages = (toolPart as any)?.output?.childMessages || [];\n const lastToolIndex = childMessages.length - 1;\n\n const currentMessage = childMessages[lastToolIndex];\n const actualExistingWorkflowState = (currentMessage as any)?.toolOutput || {};\n const updatedWorkflowState = mapWorkflowStreamChunkToWatchResult(\n actualExistingWorkflowState,\n agentChunk.payload.output,\n );\n\n if (lastToolIndex >= 0 && childMessages[lastToolIndex]?.type === 'tool') {\n parts[toolPartIndex] = {\n ...toolPart,\n output: {\n ...(toolPart as any)?.output,\n childMessages: [\n ...childMessages.slice(0, -1),\n {\n ...currentMessage,\n toolOutput: updatedWorkflowState,\n },\n ],\n },\n } as any;\n }\n }\n } else if (agentChunk.type === 'tool-result') {\n const childMessages = (toolPart as any)?.output?.childMessages || [];\n\n const lastToolIndex = childMessages.length - 1;\n const isWorkflow = Boolean(agentChunk.payload?.result?.result?.steps);\n\n if (lastToolIndex >= 0 && childMessages[lastToolIndex]?.type === 'tool') {\n parts[toolPartIndex] = {\n ...toolPart,\n output: {\n ...(toolPart as any)?.output,\n childMessages: [\n ...childMessages.slice(0, -1),\n {\n ...childMessages[lastToolIndex],\n toolOutput: isWorkflow ? agentChunk.payload.result.result : agentChunk.payload.result,\n },\n ],\n },\n } as any;\n }\n }\n\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n return newConversation;\n };\n\n private handleWorkflowConversation = (\n chunk: NetworkChunkType,\n newConversation: MastraUIMessage[],\n metadata: MastraUIMessageMetadata,\n ): MastraUIMessage[] => {\n if (chunk.type === 'workflow-execution-start') {\n const primitiveId = chunk.payload?.args?.primitiveId;\n const runId = chunk.payload.runId;\n\n if (!primitiveId || !runId) return newConversation;\n\n let agentInput;\n\n try {\n agentInput = JSON.parse(chunk?.payload?.args?.prompt);\n } catch (e) {\n agentInput = chunk?.payload?.args?.prompt;\n }\n\n const newMessage: MastraUIMessage = {\n id: `workflow-start-${runId}-${Date.now()}`,\n role: 'assistant',\n parts: [\n {\n type: 'dynamic-tool',\n toolName: primitiveId,\n toolCallId: runId,\n state: 'input-available',\n input: chunk.payload.args,\n },\n ],\n metadata: {\n ...metadata,\n selectionReason: chunk.payload?.args?.selectionReason || '',\n from: 'WORKFLOW',\n mode: 'network',\n agentInput,\n },\n };\n\n return [...newConversation, newMessage];\n }\n\n if (chunk.type.startsWith('workflow-execution-event-')) {\n const lastMessage = newConversation[newConversation.length - 1];\n\n if (!lastMessage || lastMessage.role !== 'assistant') return newConversation;\n\n const parts = [...lastMessage.parts];\n const toolPartIndex = parts.findIndex(part => part.type === 'dynamic-tool');\n\n if (toolPartIndex === -1) return newConversation;\n\n const toolPart = parts[toolPartIndex];\n if (toolPart.type !== 'dynamic-tool') return newConversation;\n\n // Accumulate workflow state in output field\n const existingWorkflowState =\n (toolPart.output as WorkflowStreamResult<any, any, any, any>) ||\n ({} as WorkflowStreamResult<any, any, any, any>);\n\n const updatedWorkflowState = mapWorkflowStreamChunkToWatchResult(existingWorkflowState, chunk.payload as any);\n\n parts[toolPartIndex] = {\n ...toolPart,\n output: updatedWorkflowState as any,\n };\n\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n return newConversation;\n };\n\n private handleToolConversation = (\n chunk: NetworkChunkType,\n newConversation: MastraUIMessage[],\n metadata: MastraUIMessageMetadata,\n ): MastraUIMessage[] => {\n if (chunk.type === 'tool-execution-start') {\n const { args: argsData } = chunk.payload;\n const lastMessage = newConversation[newConversation.length - 1];\n\n const nestedArgs = argsData.args || {};\n\n if (!lastMessage || lastMessage.role !== 'assistant') {\n // Create new message if none exists\n const newMessage: MastraUIMessage = {\n id: `tool-start-${chunk.runId}-${Date.now()}`,\n role: 'assistant',\n parts: [\n {\n type: 'dynamic-tool',\n toolName: argsData.toolName || 'unknown',\n toolCallId: argsData.toolCallId || 'unknown',\n state: 'input-available',\n input: nestedArgs,\n },\n ],\n metadata: {\n ...metadata,\n selectionReason: metadata?.mode === 'network' ? metadata.selectionReason || argsData.selectionReason : '',\n mode: 'network',\n agentInput: nestedArgs,\n },\n };\n return [...newConversation, newMessage];\n }\n\n // Add tool call to the current message\n const parts = [...lastMessage.parts];\n\n parts.push({\n type: 'dynamic-tool',\n toolName: argsData.toolName || 'unknown',\n toolCallId: argsData.toolCallId || 'unknown',\n state: 'input-available',\n input: nestedArgs,\n });\n\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n // Handle tool execution end\n if (chunk.type === 'tool-execution-end') {\n const lastMessage = newConversation[newConversation.length - 1];\n\n if (!lastMessage || lastMessage.role !== 'assistant') return newConversation;\n\n const parts = [...lastMessage.parts];\n const toolPartIndex = parts.findIndex(\n part => part.type === 'dynamic-tool' && 'toolCallId' in part && part.toolCallId === chunk.payload.toolCallId,\n );\n\n if (toolPartIndex !== -1) {\n const toolPart = parts[toolPartIndex];\n if (toolPart.type === 'dynamic-tool') {\n const currentOutput = toolPart.output as any;\n parts[toolPartIndex] = {\n type: 'dynamic-tool',\n toolName: toolPart.toolName,\n toolCallId: toolPart.toolCallId,\n state: 'output-available',\n input: toolPart.input,\n output: currentOutput?.result || chunk.payload?.result || '',\n };\n }\n }\n\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n return newConversation;\n };\n}\n","import { CoreUserMessage } from '@mastra/core/llm';\nimport type { MastraUIMessage } from '../types';\n\n/**\n * Converts a CoreUserMessage to a MastraUIMessage (UIMessage format).\n *\n * Handles all CoreUserMessage content types:\n * - String content → single text part\n * - Array content with text/image/file parts → corresponding UIMessage parts\n */\nexport const fromCoreUserMessageToUIMessage = (coreUserMessage: CoreUserMessage): MastraUIMessage => {\n // Generate unique ID for the message\n const id = `user-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;\n\n // Convert content to parts array\n const parts: MastraUIMessage['parts'] =\n typeof coreUserMessage.content === 'string'\n ? [\n {\n type: 'text' as const,\n text: coreUserMessage.content,\n },\n ]\n : coreUserMessage.content.map((part): MastraUIMessage['parts'][number] => {\n switch (part.type) {\n case 'text': {\n return {\n type: 'text' as const,\n text: part.text,\n };\n }\n\n case 'image': {\n // UIMessage represents images as file parts, not image parts\n const url =\n typeof part.image === 'string'\n ? part.image // Assume it's already a URL or data URL\n : part.image instanceof URL\n ? part.image.toString()\n : ''; // For Uint8Array/ArrayBuffer, would need conversion\n\n return {\n type: 'file' as const,\n mediaType: part.mimeType ?? 'image/*',\n url,\n };\n }\n\n case 'file': {\n // Convert CoreUserMessage file format (data, mimeType, filename)\n // to UIMessage file format (url, mediaType, filename)\n const url =\n typeof part.data === 'string'\n ? part.data // Assume it's already a URL or data URL\n : part.data instanceof URL\n ? part.data.toString()\n : ''; // For Uint8Array/ArrayBuffer, would need conversion\n\n return {\n type: 'file' as const,\n mediaType: part.mimeType,\n url,\n ...(part.filename !== undefined ? { filename: part.filename } : {}),\n };\n }\n\n default: {\n // Exhaustiveness check - TypeScript will error if a case is missing\n const exhaustiveCheck: never = part;\n throw new Error(`Unhandled content part type: ${(exhaustiveCheck as { type: string }).type}`);\n }\n }\n });\n\n return {\n id,\n role: 'user',\n parts,\n };\n};\n","import { ModelSettings } from './types';\nimport { useMastraClient } from '@/mastra-client-context';\nimport { UIMessage } from '@ai-sdk/react';\nimport { ExtendedMastraUIMessage, MastraUIMessage } from '../lib/ai-sdk';\nimport { MastraClient } from '@mastra/client-js';\nimport { CoreUserMessage } from '@mastra/core/llm';\nimport { RequestContext } from '@mastra/core/request-context';\nimport { ChunkType, NetworkChunkType } from '@mastra/core/stream';\nimport { useRef, useState } from 'react';\nimport { toUIMessage } from '@/lib/ai-sdk';\nimport { AISdkNetworkTransformer } from '@/lib/ai-sdk/transformers/AISdkNetworkTransformer';\nimport { resolveInitialMessages } from '@/lib/ai-sdk/memory/resolveInitialMessages';\nimport { fromCoreUserMessageToUIMessage } from '@/lib/ai-sdk/utils/fromCoreUserMessageToUIMessage';\nimport { v4 as uuid } from '@lukeed/uuid';\n\nexport interface MastraChatProps {\n agentId: string;\n resourceId?: string;\n initializeMessages?: () => MastraUIMessage[];\n}\n\ninterface SharedArgs {\n coreUserMessages: CoreUserMessage[];\n requestContext?: RequestContext;\n threadId?: string;\n modelSettings?: ModelSettings;\n signal?: AbortSignal;\n}\n\nexport type SendMessageArgs = { message: string; coreUserMessages?: CoreUserMessage[] } & (\n | ({ mode: 'generate' } & Omit<GenerateArgs, 'coreUserMessages'>)\n | ({ mode: 'stream' } & Omit<StreamArgs, 'coreUserMessages'>)\n | ({ mode: 'network' } & Omit<NetworkArgs, 'coreUserMessages'>)\n | ({ mode?: undefined } & Omit<StreamArgs, 'coreUserMessages'>)\n);\n\nexport type GenerateArgs = SharedArgs & { onFinish?: (messages: UIMessage[]) => Promise<void> };\n\nexport type StreamArgs = SharedArgs & {\n onChunk?: (chunk: ChunkType) => Promise<void>;\n};\n\nexport type NetworkArgs = SharedArgs & {\n onNetworkChunk?: (chunk: NetworkChunkType) => Promise<void>;\n};\n\nexport const useChat = ({ agentId, resourceId, initializeMessages }: MastraChatProps) => {\n // Extract runId from any pending suspensions in initial messages\n const extractRunIdFromMessages = (messages: ExtendedMastraUIMessage[]): string | undefined => {\n for (const message of messages) {\n const pendingToolApprovals = message.metadata?.pendingToolApprovals as Record<string, any> | undefined;\n if (pendingToolApprovals && typeof pendingToolApprovals === 'object') {\n const suspensionData = Object.values(pendingToolApprovals)[0];\n if (suspensionData?.runId) {\n return suspensionData.runId;\n }\n }\n }\n return undefined;\n };\n\n const initialMessages = initializeMessages?.() || [];\n const initialRunId = extractRunIdFromMessages(initialMessages);\n\n const _currentRunId = useRef<string | undefined>(initialRunId);\n const _onChunk = useRef<((chunk: ChunkType) => Promise<void>) | undefined>(undefined);\n const [messages, setMessages] = useState<MastraUIMessage[]>(() => resolveInitialMessages(initialMessages));\n const [toolCallApprovals, setToolCallApprovals] = useState<{\n [toolCallId: string]: { status: 'approved' | 'declined' };\n }>({});\n\n const baseClient = useMastraClient();\n const [isRunning, setIsRunning] = useState(false);\n\n const generate = async ({\n coreUserMessages,\n requestContext,\n threadId,\n modelSettings,\n signal,\n onFinish,\n }: GenerateArgs) => {\n const {\n frequencyPenalty,\n presencePenalty,\n maxRetries,\n maxTokens,\n temperature,\n topK,\n topP,\n instructions,\n providerOptions,\n maxSteps,\n } = modelSettings || {};\n setIsRunning(true);\n\n // Create a new client instance with the abort signal\n // We can't use useMastraClient hook here, so we'll create the client directly\n const clientWithAbort = new MastraClient({\n ...baseClient!.options,\n abortSignal: signal,\n });\n\n const agent = clientWithAbort.getAgent(agentId);\n\n const response = await agent.generate({\n messages: coreUserMessages,\n runId: uuid(),\n maxSteps,\n modelSettings: {\n frequencyPenalty,\n presencePenalty,\n maxRetries,\n maxOutputTokens: maxTokens,\n temperature,\n topK,\n topP,\n },\n instructions,\n requestContext,\n ...(threadId ? { threadId, resourceId: resourceId || agentId } : {}),\n providerOptions: providerOptions as any,\n });\n\n setIsRunning(false);\n\n if (response && 'uiMessages' in response.response && response.response.uiMessages) {\n onFinish?.(response.response.uiMessages);\n const mastraUIMessages: MastraUIMessage[] = (response.response.uiMessages || []).map(message => ({\n ...message,\n metadata: {\n mode: 'generate',\n },\n }));\n\n setMessages(prev => [...prev, ...mastraUIMessages]);\n }\n };\n\n const stream = async ({ coreUserMessages, requestContext, threadId, onChunk, modelSettings, signal }: StreamArgs) => {\n const {\n frequencyPenalty,\n presencePenalty,\n maxRetries,\n maxTokens,\n temperature,\n topK,\n topP,\n instructions,\n providerOptions,\n maxSteps,\n requireToolApproval,\n } = modelSettings || {};\n\n setIsRunning(true);\n\n // Create a new client instance with the abort signal\n // We can't use useMastraClient hook here, so we'll create the client directly\n const clientWithAbort = new MastraClient({\n ...baseClient!.options,\n abortSignal: signal,\n });\n\n const agent = clientWithAbort.getAgent(agentId);\n\n const runId = uuid();\n\n const response = await agent.stream({\n messages: coreUserMessages,\n runId,\n maxSteps,\n modelSettings: {\n frequencyPenalty,\n presencePenalty,\n maxRetries,\n maxOutputTokens: maxTokens,\n temperature,\n topK,\n topP,\n },\n instructions,\n requestContext,\n ...(threadId ? { threadId, resourceId: resourceId || agentId } : {}),\n providerOptions: providerOptions as any,\n requireToolApproval,\n });\n\n _onChunk.current = onChunk;\n _currentRunId.current = runId;\n\n await response.processDataStream({\n onChunk: async (chunk: ChunkType) => {\n // Without this, React might batch intermediate chunks which would break the message reconstruction over time\n\n setMessages(prev => toUIMessage({ chunk, conversation: prev, metadata: { mode: 'stream' } }));\n\n onChunk?.(chunk);\n },\n });\n\n setIsRunning(false);\n };\n\n const network = async ({\n coreUserMessages,\n requestContext,\n threadId,\n onNetworkChunk,\n modelSettings,\n signal,\n }: NetworkArgs) => {\n const { frequencyPenalty, presencePenalty, maxRetries, maxTokens, temperature, topK, topP, maxSteps } =\n modelSettings || {};\n\n setIsRunning(true);\n\n // Create a new client instance with the abort signal\n // We can't use useMastraClient hook here, so we'll create the client directly\n const clientWithAbort = new MastraClient({\n ...baseClient!.options,\n abortSignal: signal,\n });\n\n const agent = clientWithAbort.getAgent(agentId);\n\n const runId = uuid();\n\n const response = await agent.network({\n messages: coreUserMessages,\n maxSteps,\n modelSettings: {\n frequencyPenalty,\n presencePenalty,\n maxRetries,\n maxOutputTokens: maxTokens,\n temperature,\n topK,\n topP,\n },\n runId,\n requestContext,\n ...(threadId ? { thread: threadId, resourceId: resourceId || agentId } : {}),\n });\n\n const transformer = new AISdkNetworkTransformer();\n\n await response.processDataStream({\n onChunk: async (chunk: NetworkChunkType) => {\n setMessages(prev => transformer.transform({ chunk, conversation: prev, metadata: { mode: 'network' } }));\n onNetworkChunk?.(chunk);\n },\n });\n\n setIsRunning(false);\n };\n\n const handleCancelRun = () => {\n setIsRunning(false);\n _currentRunId.current = undefined;\n _onChunk.current = undefined;\n };\n\n const approveToolCall = async (toolCallId: string) => {\n const onChunk = _onChunk.current;\n const currentRunId = _currentRunId.current;\n\n if (!currentRunId)\n return console.info('[approveToolCall] approveToolCall can only be called after a stream has started');\n\n setIsRunning(true);\n setToolCallApprovals(prev => ({ ...prev, [toolCallId]: { status: 'approved' } }));\n\n const agent = baseClient.getAgent(agentId);\n const response = await agent.approveToolCall({ runId: currentRunId, toolCallId });\n\n await response.processDataStream({\n onChunk: async (chunk: ChunkType) => {\n // Without this, React might batch intermediate chunks which would break the message reconstruction over time\n\n setMessages(prev => toUIMessage({ chunk, conversation: prev, metadata: { mode: 'stream' } }));\n\n onChunk?.(chunk);\n },\n });\n setIsRunning(false);\n };\n\n const declineToolCall = async (toolCallId: string) => {\n const onChunk = _onChunk.current;\n const currentRunId = _currentRunId.current;\n\n if (!currentRunId)\n return console.info('[declineToolCall] declineToolCall can only be called after a stream has started');\n\n setIsRunning(true);\n setToolCallApprovals(prev => ({ ...prev, [toolCallId]: { status: 'declined' } }));\n const agent = baseClient.getAgent(agentId);\n const response = await agent.declineToolCall({ runId: currentRunId, toolCallId });\n\n await response.processDataStream({\n onChunk: async (chunk: ChunkType) => {\n // Without this, React might batch intermediate chunks which would break the message reconstruction over time\n\n setMessages(prev => toUIMessage({ chunk, conversation: prev, metadata: { mode: 'stream' } }));\n\n onChunk?.(chunk);\n },\n });\n setIsRunning(false);\n };\n\n const sendMessage = async ({ mode = 'stream', ...args }: SendMessageArgs) => {\n const nextMessage: Omit<CoreUserMessage, 'id'> = { role: 'user', content: [{ type: 'text', text: args.message }] };\n const coreUserMessages = [nextMessage];\n\n if (args.coreUserMessages) {\n coreUserMessages.push(...args.coreUserMessages);\n }\n\n const uiMessages = coreUserMessages.map(fromCoreUserMessageToUIMessage);\n setMessages(s => [...s, ...uiMessages] as MastraUIMessage[]);\n\n if (mode === 'generate') {\n await generate({ ...args, coreUserMessages });\n } else if (mode === 'stream') {\n await stream({ ...args, coreUserMessages });\n } else if (mode === 'network') {\n await network({ ...args, coreUserMessages });\n }\n };\n\n return {\n setMessages,\n sendMessage,\n isRunning,\n messages,\n approveToolCall,\n declineToolCall,\n cancelRun: handleCancelRun,\n toolCallApprovals,\n };\n};\n","import { createContext, useContext } from 'react';\nimport { EntityVariant } from './types';\n\nexport type EntityContextType = {\n expanded: boolean;\n setExpanded: (expanded: boolean) => void;\n variant: EntityVariant;\n disabled: boolean;\n};\n\nexport const EntityContext = createContext<EntityContextType>({\n expanded: false,\n setExpanded: () => {},\n variant: 'initial',\n disabled: false,\n});\n\nexport const EntityProvider = EntityContext.Provider;\n\nexport const useEntity = () => useContext(EntityContext);\n","import React from 'react';\n\nexport interface IconProps extends React.ComponentPropsWithoutRef<'div'> {\n children: React.ReactNode;\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport const IconSizes = {\n sm: 'mastra:[&>svg]:size-3',\n md: 'mastra:[&>svg]:size-4',\n lg: 'mastra:[&>svg]:size-5',\n};\n\nexport const Icon = ({ children, className, size = 'md', ...props }: IconProps) => {\n return (\n <div className={className || IconSizes[size]} {...props}>\n {children}\n </div>\n );\n};\n","import { ElementType, useState } from 'react';\nimport { EntityProvider, useEntity } from './context';\nimport { Icon } from '../Icon/Icon';\nimport { ChevronDownIcon } from 'lucide-react';\n\nimport { twMerge } from 'tailwind-merge';\nimport { EntityVariant } from './types';\n\nexport interface EntityProps extends React.ComponentPropsWithoutRef<'div'> {\n variant?: EntityVariant;\n initialExpanded?: boolean;\n disabled?: boolean;\n}\n\nexport const Entity = ({\n className,\n variant = 'initial',\n initialExpanded = false,\n disabled = false,\n ...props\n}: EntityProps) => {\n const [expanded, setExpanded] = useState(initialExpanded);\n\n return (\n <EntityProvider value={{ expanded, setExpanded, variant, disabled }}>\n <div className={className} {...props} />\n </EntityProvider>\n );\n};\n\nexport const EntityTriggerClass = twMerge(\n 'mastra:aria-disabled:cursor-not-allowed mastra:aria-disabled:bg-surface5 mastra:aria-disabled:text-text3',\n 'mastra:aria-expanded:rounded-b-none mastra:aria-expanded:border-b-0',\n 'mastra:bg-surface3 mastra:text-text6 mastra:hover:bg-surface4 mastra:active:bg-surface5',\n 'mastra:rounded-lg mastra:py-2 mastra:px-4 mastra:border mastra:border-border1',\n 'mastra:cursor-pointer mastra:inline-flex mastra:items-center mastra:gap-1 mastra:font-mono',\n);\n\nexport const EntityTriggerVariantClasses: Record<EntityVariant, string> = {\n agent: 'mastra:[&_svg.mastra-icon]:text-accent1',\n workflow: 'mastra:[&_svg.mastra-icon]:text-accent3',\n tool: 'mastra:[&_svg.mastra-icon]:text-accent6',\n memory: 'mastra:[&_svg.mastra-icon]:text-accent2',\n initial: 'mastra:[&_svg.mastra-icon]:text-text3',\n};\n\nexport const EntityTrigger = ({ className, children, ...props }: React.ComponentPropsWithoutRef<'button'>) => {\n const { expanded, setExpanded, variant, disabled } = useEntity();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return;\n setExpanded(!expanded);\n props?.onClick?.(e);\n };\n\n return (\n <button\n className={className || twMerge(EntityTriggerClass, !disabled && EntityTriggerVariantClasses[variant])}\n {...props}\n onClick={handleClick}\n aria-expanded={expanded}\n aria-disabled={disabled}\n >\n {children}\n </button>\n );\n};\n\nexport const EntityContentClass = twMerge(\n 'mastra:space-y-4',\n 'mastra:rounded-lg mastra:rounded-tl-none mastra:p-4 mastra:border mastra:border-border1 mastra:-mt-[0.5px]',\n 'mastra:bg-surface3 mastra:text-text6',\n);\n\nexport const EntityContent = ({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) => {\n const { expanded } = useEntity();\n\n if (!expanded) return null;\n\n return <div className={className || EntityContentClass} {...props} />;\n};\n\nexport const EntityCaret = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => {\n const { expanded } = useEntity();\n\n return (\n <Icon>\n <ChevronDownIcon\n className={twMerge(\n `mastra:text-text3 mastra:transition-transform mastra:duration-200 mastra:ease-in-out`,\n expanded ? 'mastra:rotate-0' : 'mastra:-rotate-90',\n className,\n )}\n {...props}\n />\n </Icon>\n );\n};\n","import { twMerge } from 'tailwind-merge';\n\nexport const ToolApprovalClass = twMerge(\n 'mastra:rounded-lg mastra:border mastra:border-border1 mastra:max-w-1/2 mastra:mt-2',\n 'mastra:bg-surface3 mastra:text-text6',\n);\n\nexport const ToolApproval = ({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) => {\n return <div className={className || ToolApprovalClass} {...props} />;\n};\n\nexport const ToolApprovalTitleClass = twMerge('mastra:text-text6 mastra:inline-flex mastra:items-center mastra:gap-1');\nexport const ToolApprovalTitle = ({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) => {\n return <div className={className || ToolApprovalTitleClass} {...props} />;\n};\n\nexport const ToolApprovalHeaderClass = twMerge(\n 'mastra:flex mastra:justify-between mastra:items-center mastra:gap-2',\n 'mastra:border-b mastra:border-border1 mastra:px-4 mastra:py-2',\n);\nexport const ToolApprovalHeader = ({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) => {\n return <div className={className || ToolApprovalHeaderClass} {...props} />;\n};\n\nexport const ToolApprovalContentClass = twMerge('mastra:text-text6 mastra:p-4');\nexport const ToolApprovalContent = ({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) => {\n return <div className={className || ToolApprovalContentClass} {...props} />;\n};\n\nexport const ToolApprovalActionsClass = twMerge('mastra:flex mastra:gap-2 mastra:items-center');\nexport const ToolApprovalActions = ({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) => {\n return <div className={className || ToolApprovalActionsClass} {...props} />;\n};\n","import { ElementType } from 'react';\n\nexport const EntryClass = 'mastra:space-y-2';\nexport const Entry = ({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) => {\n return <div className={className || EntryClass} {...props} />;\n};\n\ntype EntryTitleProps = React.ComponentPropsWithoutRef<'div'> & {\n as?: ElementType;\n};\n\nexport const EntryTitleClass = 'mastra:font-mono mastra:text-sm mastra:text-text3';\nexport const EntryTitle = ({ className, as: Root = 'h3', ...props }: EntryTitleProps) => {\n return <Root className={className || EntryTitleClass} {...props} />;\n};\n","import type { JSX } from 'react';\nimport type { BundledLanguage } from 'shiki/bundle/web';\nimport { toJsxRuntime } from 'hast-util-to-jsx-runtime';\nimport { Fragment } from 'react';\nimport { jsx, jsxs } from 'react/jsx-runtime';\nimport { codeToHast } from 'shiki/bundle/web';\n\nexport async function highlight(code: string, lang: BundledLanguage) {\n const out = await codeToHast(code, {\n lang,\n theme: 'dracula-soft',\n });\n\n return toJsxRuntime(out, {\n Fragment,\n jsx,\n jsxs,\n }) as JSX.Element;\n}\n","import {\n TooltipTrigger as RTooltipTrigger,\n TooltipProvider as RTooltipProvider,\n Root as RTooltipRoot,\n TooltipPortal as RTooltipPortal,\n TooltipContent as RTooltipContent,\n TooltipTriggerProps,\n TooltipContentProps,\n} from '@radix-ui/react-tooltip';\n\nexport interface TooltipProps extends React.ComponentPropsWithoutRef<'div'> {\n children: React.ReactNode;\n}\n\nexport const Tooltip = ({ children }: TooltipProps) => {\n return (\n <RTooltipProvider>\n <RTooltipRoot>{children}</RTooltipRoot>\n </RTooltipProvider>\n );\n};\n\nexport const TooltipContentClass =\n 'mastra:bg-surface4 mastra:text-text6 mastra mastra:rounded-lg mastra:py-1 mastra:px-2 mastra:text-xs mastra:border mastra:border-border1 mastra-tooltip-enter';\nexport const TooltipContent = ({ children, className, ...props }: TooltipContentProps) => {\n return (\n <RTooltipPortal>\n <RTooltipContent className={className || TooltipContentClass} {...props}>\n {children}\n </RTooltipContent>\n </RTooltipPortal>\n );\n};\n\nexport const TooltipTrigger = (props: TooltipTriggerProps) => {\n return <RTooltipTrigger {...props} asChild />;\n};\n","import { Tooltip, TooltipContent, TooltipTrigger } from '../Tooltip/Tooltip';\nimport { Icon, IconProps } from '../Icon/Icon';\nimport { twMerge } from 'tailwind-merge';\n\nexport interface IconButtonProps extends React.ComponentPropsWithoutRef<'button'> {\n children: React.ReactNode;\n tooltip: React.ReactNode;\n size?: IconProps['size'];\n}\n\nexport const IconButtonClass =\n 'mastra:text-text3 mastra:hover:text-text6 mastra:active:text-text6 mastra:hover:bg-surface4 mastra:active:bg-surface5 mastra:rounded-md mastra:cursor-pointer';\n\nexport const IconButton = ({ children, tooltip, size = 'md', className, ...props }: IconButtonProps) => {\n return (\n <Tooltip>\n <TooltipTrigger>\n <button\n {...props}\n className={\n className || twMerge(IconButtonClass, size === 'md' && 'mastra:p-0.5', size === 'lg' && 'mastra:p-1')\n }\n >\n <Icon size={size}>{children}</Icon>\n </button>\n </TooltipTrigger>\n\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n );\n};\n","import { JSX, useLayoutEffect, useState } from 'react';\nimport { highlight } from './highlight';\nimport { BundledLanguage } from 'shiki/bundle/web';\nimport { IconButton } from '../IconButton/IconButton';\nimport { CheckIcon, CopyIcon } from 'lucide-react';\n\nexport interface CodeBlockProps {\n code: string;\n language: BundledLanguage;\n className?: string;\n cta?: React.ReactNode;\n}\n\nexport const CodeBlockClass =\n 'mastra:rounded-lg mastra:[&>pre]:p-4 mastra:overflow-hidden mastra:[&>pre]:!bg-surface4 mastra:[&>pre>code]:leading-5 mastra:relative';\n\nexport const CodeBlock = ({ code, language, className, cta }: CodeBlockProps) => {\n const [nodes, setNodes] = useState<JSX.Element | null>(null);\n\n useLayoutEffect(() => {\n void highlight(code, language).then(setNodes);\n }, [language]);\n\n return (\n <div className={className || CodeBlockClass}>\n {nodes ?? null}\n {cta}\n </div>\n );\n};\n\nexport interface CodeCopyButtonProps {\n code: string;\n}\n\nexport const CodeCopyButton = ({ code }: CodeCopyButtonProps) => {\n const [isCopied, setIsCopied] = useState(false);\n\n const handleCopy = () => {\n navigator.clipboard.writeText(code);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n };\n return (\n <div className=\"mastra:absolute mastra:top-2 mastra:right-2\">\n <IconButton tooltip=\"Copy\" onClick={handleCopy}>\n {isCopied ? <CheckIcon /> : <CopyIcon />}\n </IconButton>\n </div>\n );\n};\n","import React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport const AgentIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n <svg\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n className={twMerge('mastra-icon', className)}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.5 15C10.3565 15 12.137 14.2625 13.4497 12.9497C14.7625 11.637 15.5 9.85652 15.5 8C15.5 6.14348 14.7625 4.36301 13.4497 3.05025C12.137 1.7375 10.3565 1 8.5 1C6.64348 1 4.86301 1.7375 3.55025 3.05025C2.2375 4.36301 1.5 6.14348 1.5 8C1.5 9.85652 2.2375 11.637 3.55025 12.9497C4.86301 14.2625 6.64348 15 8.5 15ZM5.621 10.879L4.611 11.889C3.84179 11.1198 3.31794 10.1398 3.1057 9.07291C2.89346 8.00601 3.00236 6.90013 3.41864 5.89512C3.83491 4.89012 4.53986 4.03112 5.44434 3.42676C6.34881 2.8224 7.41219 2.49983 8.5 2.49983C9.58781 2.49983 10.6512 2.8224 11.5557 3.42676C12.4601 4.03112 13.1651 4.89012 13.5814 5.89512C13.9976 6.90013 14.1065 8.00601 13.8943 9.07291C13.6821 10.1398 13.1582 11.1198 12.389 11.889L11.379 10.879C11.1004 10.6003 10.7696 10.3792 10.4055 10.2284C10.0414 10.0776 9.6511 9.99995 9.257 10H7.743C7.3489 9.99995 6.95865 10.0776 6.59455 10.2284C6.23045 10.3792 5.89963 10.6003 5.621 10.879Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M8.5 4C7.96957 4 7.46086 4.21071 7.08579 4.58579C6.71071 4.96086 6.5 5.46957 6.5 6V6.5C6.5 7.03043 6.71071 7.53914 7.08579 7.91421C7.46086 8.28929 7.96957 8.5 8.5 8.5C9.03043 8.5 9.53914 8.28929 9.91421 7.91421C10.2893 7.53914 10.5 7.03043 10.5 6.5V6C10.5 5.46957 10.2893 4.96086 9.91421 4.58579C9.53914 4.21071 9.03043 4 8.5 4Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport const ToolsIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n <svg\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n className={twMerge('mastra-icon', className)}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.5605 1.42351C8.0791 0.904904 8.92215 0.906157 9.4395 1.42351L10.6922 2.67617C11.2108 3.19477 11.2095 4.03782 10.6922 4.55517L9.4395 5.80783C8.9209 6.32643 8.07785 6.32518 7.5605 5.80783L6.30784 4.55517C5.78923 4.03656 5.79049 3.19352 6.30784 2.67617L7.5605 1.42351ZM3.17618 5.80783C3.69478 5.28923 4.53782 5.29048 5.05517 5.80783L6.30784 7.0605C6.82644 7.5791 6.82519 8.42214 6.30784 8.93949L5.05517 10.1922C4.53657 10.7108 3.69353 10.7095 3.17618 10.1922L1.92351 8.93949C1.40491 8.42089 1.40616 7.57785 1.92351 7.0605L3.17618 5.80783ZM11.9448 5.80783C12.4634 5.28923 13.3065 5.29048 13.8238 5.80783L15.0765 7.0605C15.5951 7.5791 15.5938 8.42214 15.0765 8.93949L13.8238 10.1922C13.3052 10.7108 12.4622 10.7095 11.9448 10.1922L10.6922 8.93949C10.1736 8.42089 10.1748 7.57785 10.6922 7.0605L11.9448 5.80783ZM7.5605 10.1922C8.0791 9.67355 8.92215 9.67481 9.4395 10.1922L10.6922 11.4448C11.2108 11.9634 11.2095 12.8065 10.6922 13.3238L9.4395 14.5765C8.9209 15.0951 8.07785 15.0938 7.5605 14.5765L6.30784 13.3238C5.78923 12.8052 5.79049 11.9622 6.30784 11.4448L7.5605 10.1922Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport const WorkflowIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n <svg\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n className={twMerge('mastra-icon', className)}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.24388 2.4018C6.24388 2.0394 6.53767 1.74561 6.90008 1.74561H10.0991C10.4614 1.74561 10.7553 2.0394 10.7553 2.4018V4.57546C10.7553 4.93787 10.4614 5.23166 10.0991 5.23166H9.31982V7.35469L10.0033 9.22664C9.90442 9.20146 9.80035 9.1761 9.6915 9.14986L9.62652 9.13422C9.30473 9.05687 8.92256 8.96501 8.61993 8.84491C8.5819 8.82981 8.54147 8.81292 8.49957 8.79391C8.45767 8.81292 8.41724 8.82981 8.3792 8.84491C8.07657 8.96501 7.6944 9.05687 7.37261 9.13422L7.30763 9.14986C7.19879 9.1761 7.09471 9.20146 6.99577 9.22664L7.67932 7.35469V5.23166H6.90008C6.53767 5.23166 6.24388 4.93787 6.24388 4.57546V2.4018ZM6.99577 9.22664C6.99577 9.22664 6.99578 9.22664 6.99577 9.22664L6.43283 10.7683H6.81806C7.18047 10.7683 7.47426 11.0622 7.47426 11.4245V13.5982C7.47426 13.9606 7.18047 14.2544 6.81806 14.2544H3.61909C3.25668 14.2544 2.96289 13.9606 2.96289 13.5982V11.4245C2.96289 11.0622 3.25668 10.7683 3.61909 10.7683H4.26617C4.2921 10.4663 4.32783 10.1494 4.37744 9.85171C4.43762 9.49063 4.52982 9.08135 4.68998 8.76102C4.93975 8.2615 5.44743 8.01751 5.7771 7.88788C6.14684 7.74249 6.57537 7.63889 6.92317 7.55505C7.24707 7.47696 7.49576 7.41679 7.67932 7.35469L6.99577 9.22664ZM6.43283 10.7683L6.99577 9.22664C6.75846 9.28705 6.55067 9.34646 6.37745 9.41458C6.22784 9.47341 6.1623 9.51712 6.14023 9.53254C6.09752 9.63631 6.04409 9.83055 5.99562 10.1214C5.96201 10.3231 5.93498 10.5439 5.91341 10.7683H6.43283ZM10.0033 9.22664L9.31982 7.35469C9.50338 7.41679 9.75206 7.47696 10.076 7.55505C10.4238 7.63889 10.8523 7.74249 11.2221 7.88788C11.5517 8.01751 12.0594 8.2615 12.3091 8.76102C12.4693 9.08135 12.5615 9.49063 12.6217 9.85171C12.6713 10.1494 12.707 10.4663 12.733 10.7683H13.38C13.7424 10.7683 14.0362 11.0622 14.0362 11.4245V13.5982C14.0362 13.9606 13.7424 14.2544 13.38 14.2544H10.1811C9.81867 14.2544 9.52488 13.9606 9.52488 13.5982V11.4245C9.52488 11.0622 9.81867 10.7683 10.1811 10.7683H10.5663L10.0033 9.22664ZM10.0033 9.22664L10.5663 10.7683H11.0857C11.0642 10.5439 11.0372 10.3231 11.0035 10.1214C10.9551 9.83055 10.9016 9.63631 10.8589 9.53254C10.8369 9.51712 10.7713 9.47341 10.6217 9.41458C10.4485 9.34646 10.2407 9.28705 10.0033 9.22664Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import { Dot } from 'lucide-react';\nimport { Icon } from '../Icon/Icon';\nimport { HTMLAttributes, useEffect, useRef } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport interface MessageProps extends HTMLAttributes<HTMLDivElement> {\n position: 'left' | 'right';\n}\n\nexport const MessageClass = 'mastra:flex mastra:flex-col mastra:w-full mastra:py-4 mastra:gap-2 mastra:group';\nexport const Message = ({ position, className, children, ...props }: MessageProps) => {\n return (\n <div\n className={\n className ||\n twMerge(\n MessageClass,\n position === 'left'\n ? ''\n : 'mastra:items-end mastra:[&_.mastra-message-content]:bg-surface4 mastra:[&_.mastra-message-content]:px-4',\n )\n }\n {...props}\n >\n {children}\n </div>\n );\n};\n\nexport interface MessageContentProps extends HTMLAttributes<HTMLDivElement> {\n isStreaming?: boolean;\n}\nexport const MessageContentClass =\n 'mastra:max-w-4/5 mastra:py-2 mastra:text-text6 mastra:rounded-lg mastra-message-content mastra:text-md';\nexport const MessageContent = ({ children, className, isStreaming, ...props }: MessageContentProps) => {\n return (\n <div className={className || MessageContentClass} {...props}>\n {children}\n {isStreaming && <MessageStreaming />}\n </div>\n );\n};\n\nexport const MessageActionsClass =\n 'mastra:gap-2 mastra:flex mastra:opacity-0 mastra:group-hover:opacity-100 mastra:group-focus-within:opacity-100 mastra:items-center';\nexport const MessageActions = ({ children, className, ...props }: HTMLAttributes<HTMLDivElement>) => {\n return (\n <div className={className || MessageActionsClass} {...props}>\n {children}\n </div>\n );\n};\n\nexport const MessageUsagesClass = 'mastra:flex mastra:gap-2 mastra:items-center';\nexport const MessageUsages = ({ children, className, ...props }: HTMLAttributes<HTMLDivElement>) => {\n return (\n <div className={className || MessageUsagesClass} {...props}>\n {children}\n </div>\n );\n};\n\nexport const MessageUsageClass =\n 'mastra:flex mastra:gap-2 mastra:items-center mastra:font-mono mastra:text-xs mastra:bg-surface3 mastra:rounded-lg mastra:px-2 mastra:py-1';\nexport const MessageUsage = ({ children, className, ...props }: HTMLAttributes<HTMLDListElement>) => {\n return (\n <dl className={className || MessageUsageClass} {...props}>\n {children}\n </dl>\n );\n};\n\nexport const MessageUsageEntryClass = 'mastra:text-text3 mastra:text-xs mastra:flex mastra:gap-1 mastra:items-center';\nexport const MessageUsageEntry = ({ children, className, ...props }: HTMLAttributes<HTMLSpanElement>) => {\n return (\n <dt className={className || MessageUsageEntryClass} {...props}>\n {children}\n </dt>\n );\n};\n\nexport const MessageUsageValueClass = 'mastra:text-text6 mastra:text-xs';\nexport const MessageUsageValue = ({ children, className, ...props }: HTMLAttributes<HTMLSpanElement>) => {\n return (\n <dd className={className || MessageUsageValueClass} {...props}>\n {children}\n </dd>\n );\n};\n\nexport const MessageListClass = 'mastra:overflow-y-auto mastra:h-full mastra-list';\n\nexport const MessageList = ({ children, className, ...props }: HTMLAttributes<HTMLDivElement>) => {\n const listRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n // Force scroll to bottom after DOM update\n const scrollToBottom = () => {\n if (!listRef.current) return;\n listRef.current.scrollTo({ top: listRef.current.scrollHeight, behavior: 'smooth' });\n };\n\n requestAnimationFrame(scrollToBottom);\n });\n\n return (\n <div className={className || MessageListClass} {...props} ref={listRef}>\n {children}\n </div>\n );\n};\n\nexport const MessageStreamingClass =\n 'mastra:inline-block mastra:w-[2px] mastra:h-[1em] mastra:bg-text5 mastra:ml-0.5 mastra:align-text-bottom mastra:animate-pulse';\n\nexport const MessageStreaming = ({ className, ...props }: HTMLAttributes<HTMLSpanElement>) => {\n return <span className={className || MessageStreamingClass} {...props} />;\n};\n"],"names":["message","messages","uuid","RTooltipProvider","RTooltipRoot","RTooltipPortal","RTooltipContent","RTooltipTrigger"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/mastra-client-context.tsx","../src/mastra-react-provider.tsx","../src/lib/ai-sdk/utils/toUIMessage.ts","../src/lib/ai-sdk/utils/toAssistantUIMessage.ts","../src/lib/ai-sdk/memory/resolveInitialMessages.ts","../src/lib/ai-sdk/transformers/AISdkNetworkTransformer.ts","../src/lib/ai-sdk/utils/fromCoreUserMessageToUIMessage.tsx","../src/agent/hooks.ts","../src/ui/Entity/context.tsx","../src/ui/Icon/Icon.tsx","../src/ui/Entity/Entity.tsx","../src/ui/Entity/ToolApproval.tsx","../src/ui/Entity/Entry.tsx","../src/ui/Code/highlight.ts","../src/ui/Tooltip/Tooltip.tsx","../src/ui/IconButton/IconButton.tsx","../src/ui/Code/Code.tsx","../src/ui/Icons/AgentIcon.tsx","../src/ui/Icons/ToolsIcon.tsx","../src/ui/Icons/WorkflowIcon.tsx","../src/ui/Message/Message.tsx"],"sourcesContent":["import { createContext, useContext, ReactNode } from 'react';\nimport { MastraClient } from '@mastra/client-js';\n\nexport type MastraClientContextType = MastraClient;\n\nconst MastraClientContext = createContext<MastraClientContextType>({} as MastraClientContextType);\n\nexport interface MastraClientProviderProps {\n children: ReactNode;\n baseUrl?: string;\n headers?: Record<string, string>;\n}\n\nexport const MastraClientProvider = ({ children, baseUrl, headers }: MastraClientProviderProps) => {\n const client = createMastraClient(baseUrl, headers);\n\n return <MastraClientContext.Provider value={client}>{children}</MastraClientContext.Provider>;\n};\n\nexport const useMastraClient = () => useContext(MastraClientContext);\n\nconst createMastraClient = (baseUrl?: string, mastraClientHeaders: Record<string, string> = {}) => {\n return new MastraClient({\n baseUrl: baseUrl || '',\n // only add the header if the baseUrl is not provided i.e it's a local dev environment\n headers: !baseUrl ? { ...mastraClientHeaders, 'x-mastra-dev-playground': 'true' } : mastraClientHeaders,\n });\n};\n","import { MastraClientProvider, MastraClientProviderProps } from '@/mastra-client-context';\ntype MastraReactProviderProps = MastraClientProviderProps;\n\nexport const MastraReactProvider = ({ children, baseUrl, headers }: MastraReactProviderProps) => {\n return (\n <MastraClientProvider baseUrl={baseUrl} headers={headers}>\n {children}\n </MastraClientProvider>\n );\n};\n","import { AgentChunkType, ChunkType } from '@mastra/core/stream';\nimport { MastraUIMessage, MastraUIMessageMetadata } from '../types';\nimport { WorkflowStreamResult, StepResult } from '@mastra/core/workflows';\n\ntype StreamChunk = {\n type: string;\n payload: any;\n runId: string;\n from: 'AGENT' | 'WORKFLOW';\n};\n\n// Helper function to map workflow stream chunks to watch result format\n// Based on the pattern from packages/playground-ui/src/domains/workflows/utils.ts\n\nexport const mapWorkflowStreamChunkToWatchResult = (\n prev: WorkflowStreamResult<any, any, any, any>,\n chunk: StreamChunk,\n): WorkflowStreamResult<any, any, any, any> => {\n if (chunk.type === 'workflow-start') {\n return {\n input: prev?.input,\n status: 'running',\n steps: prev?.steps || {},\n };\n }\n\n if (chunk.type === 'workflow-canceled') {\n return {\n ...prev,\n status: 'canceled',\n };\n }\n\n if (chunk.type === 'workflow-finish') {\n const finalStatus = chunk.payload.workflowStatus;\n const prevSteps = prev?.steps ?? {};\n const lastStep = Object.values(prevSteps).pop();\n return {\n ...prev,\n status: chunk.payload.workflowStatus,\n ...(finalStatus === 'success' && lastStep?.status === 'success'\n ? { result: lastStep?.output }\n : finalStatus === 'failed' && lastStep?.status === 'failed'\n ? { error: lastStep?.error }\n : {}),\n };\n }\n\n const { stepCallId, stepName, ...newPayload } = chunk.payload ?? {};\n\n const newSteps = {\n ...prev?.steps,\n [chunk.payload.id]: {\n ...prev?.steps?.[chunk.payload.id],\n ...newPayload,\n },\n };\n\n if (chunk.type === 'workflow-step-start') {\n return {\n ...prev,\n steps: newSteps,\n };\n }\n\n if (chunk.type === 'workflow-step-suspended') {\n const suspendedStepIds = Object.entries(newSteps as Record<string, StepResult<any, any, any, any>>).flatMap(\n ([stepId, stepResult]) => {\n if (stepResult?.status === 'suspended') {\n const nestedPath = stepResult?.suspendPayload?.__workflow_meta?.path;\n return nestedPath ? [[stepId, ...nestedPath]] : [[stepId]];\n }\n\n return [];\n },\n );\n return {\n ...prev,\n status: 'suspended',\n steps: newSteps,\n suspendPayload: chunk.payload.suspendPayload,\n suspended: suspendedStepIds as any,\n };\n }\n\n if (chunk.type === 'workflow-step-waiting') {\n return {\n ...prev,\n status: 'waiting',\n steps: newSteps,\n };\n }\n\n if (chunk.type === 'workflow-step-result') {\n return {\n ...prev,\n steps: newSteps,\n };\n }\n\n return prev;\n};\n\nexport interface ToUIMessageArgs {\n chunk: ChunkType;\n conversation: MastraUIMessage[];\n metadata: MastraUIMessageMetadata;\n}\n\nexport const toUIMessage = ({ chunk, conversation, metadata }: ToUIMessageArgs): MastraUIMessage[] => {\n // Always return a new array reference for React\n const result = [...conversation];\n\n switch (chunk.type) {\n case 'tripwire': {\n // Create a new assistant message\n const newMessage: MastraUIMessage = {\n id: `tripwire-${chunk.runId + Date.now()}`,\n role: 'assistant',\n parts: [\n {\n type: 'text',\n text: chunk.payload.tripwireReason,\n },\n ],\n metadata: {\n ...metadata,\n status: 'warning',\n },\n };\n\n return [...result, newMessage];\n }\n\n case 'start': {\n // Create a new assistant message\n const newMessage: MastraUIMessage = {\n id: `start-${chunk.runId + Date.now()}`,\n role: 'assistant',\n parts: [],\n metadata,\n };\n\n return [...result, newMessage];\n }\n\n case 'text-start':\n case 'text-delta': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return result;\n\n // Find or create a text part\n const parts = [...lastMessage.parts];\n let textPartIndex = parts.findIndex(part => part.type === 'text');\n\n if (chunk.type === 'text-start') {\n // Add a new text part if it doesn't exist\n if (textPartIndex === -1) {\n parts.push({\n type: 'text',\n text: '',\n state: 'streaming',\n providerMetadata: chunk.payload.providerMetadata,\n });\n }\n } else {\n // text-delta: append to existing text part or create if missing\n if (textPartIndex === -1) {\n parts.push({\n type: 'text',\n text: chunk.payload.text,\n state: 'streaming',\n providerMetadata: chunk.payload.providerMetadata,\n });\n } else {\n const textPart = parts[textPartIndex];\n if (textPart.type === 'text') {\n parts[textPartIndex] = {\n ...textPart,\n text: textPart.text + chunk.payload.text,\n state: 'streaming',\n };\n }\n }\n }\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n case 'reasoning-delta': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') {\n // Create new message if none exists\n const newMessage: MastraUIMessage = {\n id: `reasoning-${chunk.runId + Date.now()}`,\n role: 'assistant',\n parts: [\n {\n type: 'reasoning',\n text: chunk.payload.text,\n state: 'streaming',\n providerMetadata: chunk.payload.providerMetadata,\n },\n ],\n metadata,\n };\n return [...result, newMessage];\n }\n\n // Find or create reasoning part\n const parts = [...lastMessage.parts];\n let reasoningPartIndex = parts.findIndex(part => part.type === 'reasoning');\n\n if (reasoningPartIndex === -1) {\n parts.push({\n type: 'reasoning',\n text: chunk.payload.text,\n state: 'streaming',\n providerMetadata: chunk.payload.providerMetadata,\n });\n } else {\n const reasoningPart = parts[reasoningPartIndex];\n if (reasoningPart.type === 'reasoning') {\n parts[reasoningPartIndex] = {\n ...reasoningPart,\n text: reasoningPart.text + chunk.payload.text,\n state: 'streaming',\n };\n }\n }\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n case 'tool-call': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') {\n // Create new message if none exists\n const newMessage: MastraUIMessage = {\n id: `tool-call-${chunk.runId + Date.now()}`,\n role: 'assistant',\n parts: [\n {\n type: 'dynamic-tool',\n toolName: chunk.payload.toolName,\n toolCallId: chunk.payload.toolCallId,\n state: 'input-available',\n input: chunk.payload.args,\n callProviderMetadata: chunk.payload.providerMetadata,\n },\n ],\n metadata,\n };\n return [...result, newMessage];\n }\n\n // Add tool call to existing message\n const parts = [...lastMessage.parts];\n parts.push({\n type: 'dynamic-tool',\n toolName: chunk.payload.toolName,\n toolCallId: chunk.payload.toolCallId,\n state: 'input-available',\n input: chunk.payload.args,\n callProviderMetadata: chunk.payload.providerMetadata,\n });\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n case 'tool-error':\n case 'tool-result': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return result;\n\n // Find and update the corresponding tool call\n const parts = [...lastMessage.parts];\n const toolPartIndex = parts.findIndex(\n part =>\n (part.type === 'dynamic-tool' || (typeof part.type === 'string' && part.type.startsWith('tool-'))) &&\n 'toolCallId' in part &&\n part.toolCallId === chunk.payload.toolCallId,\n );\n\n if (toolPartIndex !== -1) {\n const toolPart = parts[toolPartIndex];\n if (\n toolPart.type === 'dynamic-tool' ||\n (typeof toolPart.type === 'string' && toolPart.type.startsWith('tool-'))\n ) {\n const toolName =\n 'toolName' in toolPart && typeof toolPart.toolName === 'string'\n ? toolPart.toolName\n : toolPart.type.startsWith('tool-')\n ? toolPart.type.substring(5)\n : '';\n\n const toolCallId = (toolPart as any).toolCallId;\n\n if ((chunk.type === 'tool-result' && chunk.payload.isError) || chunk.type === 'tool-error') {\n const error = chunk.type === 'tool-error' ? chunk.payload.error : chunk.payload.result;\n parts[toolPartIndex] = {\n type: 'dynamic-tool',\n toolName,\n toolCallId,\n state: 'output-error',\n input: (toolPart as any).input,\n errorText: String(error),\n callProviderMetadata: chunk.payload.providerMetadata,\n };\n } else {\n const isWorkflow = Boolean((chunk.payload.result as any)?.result?.steps);\n const isAgent = chunk?.from === 'AGENT';\n let output;\n if (isWorkflow) {\n output = (chunk.payload.result as any)?.result;\n } else if (isAgent) {\n output = (parts[toolPartIndex] as any).output ?? chunk.payload.result;\n } else {\n output = chunk.payload.result;\n }\n parts[toolPartIndex] = {\n type: 'dynamic-tool',\n toolName,\n toolCallId,\n state: 'output-available',\n input: (toolPart as any).input,\n output,\n callProviderMetadata: chunk.payload.providerMetadata,\n };\n }\n }\n }\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n case 'tool-output': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return result;\n\n // Find and update the corresponding tool call\n const parts = [...lastMessage.parts];\n const toolPartIndex = parts.findIndex(\n part =>\n (part.type === 'dynamic-tool' || (typeof part.type === 'string' && part.type.startsWith('tool-'))) &&\n 'toolCallId' in part &&\n part.toolCallId === chunk.payload.toolCallId,\n );\n\n if (toolPartIndex !== -1) {\n const toolPart = parts[toolPartIndex];\n // Handle dynamic-tool and tool-* part types\n if (\n toolPart.type === 'dynamic-tool' ||\n (typeof toolPart.type === 'string' && toolPart.type.startsWith('tool-'))\n ) {\n // Extract toolName, toolCallId, input from different part structures\n const toolName =\n 'toolName' in toolPart && typeof toolPart.toolName === 'string'\n ? toolPart.toolName\n : typeof toolPart.type === 'string' && toolPart.type.startsWith('tool-')\n ? toolPart.type.substring(5)\n : '';\n const toolCallId = (toolPart as any).toolCallId;\n const input = (toolPart as any).input;\n\n // Handle workflow-related output chunks\n if (chunk.payload.output?.type?.startsWith('workflow-')) {\n // Get existing workflow state from the output field\n const existingWorkflowState =\n ((toolPart as any).output as WorkflowStreamResult<any, any, any, any>) ||\n ({} as WorkflowStreamResult<any, any, any, any>);\n\n // Use the mapWorkflowStreamChunkToWatchResult pattern for accumulation\n const updatedWorkflowState = mapWorkflowStreamChunkToWatchResult(\n existingWorkflowState,\n chunk.payload.output,\n );\n\n parts[toolPartIndex] = {\n type: 'dynamic-tool',\n toolName,\n toolCallId,\n state: 'input-streaming',\n input,\n output: updatedWorkflowState as any,\n };\n } else if (\n chunk.payload.output?.from === 'AGENT' ||\n (chunk.payload.output?.from === 'USER' &&\n chunk.payload.output?.payload?.output?.type?.startsWith('workflow-'))\n ) {\n return toUIMessageFromAgent(chunk.payload.output, conversation, metadata);\n } else {\n // Handle regular tool output\n const currentOutput = ((toolPart as any).output as any) || [];\n const existingOutput = Array.isArray(currentOutput) ? currentOutput : [];\n\n parts[toolPartIndex] = {\n type: 'dynamic-tool',\n toolName,\n toolCallId,\n state: 'input-streaming',\n input,\n output: [...existingOutput, chunk.payload.output] as any,\n };\n }\n }\n }\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n case 'source': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return result;\n\n const parts = [...lastMessage.parts];\n\n // Add source part based on sourceType\n if (chunk.payload.sourceType === 'url') {\n parts.push({\n type: 'source-url',\n sourceId: chunk.payload.id,\n url: chunk.payload.url || '',\n title: chunk.payload.title,\n providerMetadata: chunk.payload.providerMetadata,\n });\n } else if (chunk.payload.sourceType === 'document') {\n parts.push({\n type: 'source-document',\n sourceId: chunk.payload.id,\n mediaType: chunk.payload.mimeType || 'application/octet-stream',\n title: chunk.payload.title,\n filename: chunk.payload.filename,\n providerMetadata: chunk.payload.providerMetadata,\n });\n }\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n case 'file': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return result;\n\n const parts = [...lastMessage.parts];\n\n // Create data URL for file content\n let url: string;\n if (typeof chunk.payload.data === 'string') {\n url = chunk.payload.base64\n ? `data:${chunk.payload.mimeType};base64,${chunk.payload.data}`\n : `data:${chunk.payload.mimeType},${encodeURIComponent(chunk.payload.data)}`;\n } else {\n // For Uint8Array, convert to base64\n const base64 = btoa(String.fromCharCode(...chunk.payload.data));\n url = `data:${chunk.payload.mimeType};base64,${base64}`;\n }\n\n parts.push({\n type: 'file',\n mediaType: chunk.payload.mimeType,\n url,\n providerMetadata: chunk.payload.providerMetadata,\n });\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n case 'tool-call-approval': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return result;\n\n // Find and update the corresponding tool call\n\n const lastRequireApprovalMetadata =\n lastMessage.metadata?.mode === 'stream' ? lastMessage.metadata?.requireApprovalMetadata : {};\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n metadata: {\n ...lastMessage.metadata,\n mode: 'stream',\n requireApprovalMetadata: {\n ...lastRequireApprovalMetadata,\n [chunk.payload.toolCallId]: {\n toolCallId: chunk.payload.toolCallId,\n toolName: chunk.payload.toolName,\n args: chunk.payload.args,\n },\n },\n },\n },\n ];\n }\n\n case 'finish': {\n const lastMessage = result[result.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return result;\n\n // Mark streaming parts as done\n const parts = lastMessage.parts.map(part => {\n if (\n typeof part === 'object' &&\n part !== null &&\n 'type' in part &&\n 'state' in part &&\n part.state === 'streaming'\n ) {\n if (part.type === 'text' || part.type === 'reasoning') {\n return { ...part, state: 'done' as const };\n }\n }\n return part;\n });\n\n return [\n ...result.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n case 'error': {\n const newMessage: MastraUIMessage = {\n id: `error-${chunk.runId + Date.now()}`,\n role: 'assistant',\n parts: [\n {\n type: 'text',\n text: typeof chunk.payload.error === 'string' ? chunk.payload.error : JSON.stringify(chunk.payload.error),\n },\n ],\n metadata: {\n ...metadata,\n status: 'error',\n },\n };\n\n return [...result, newMessage];\n }\n\n // For all other chunk types, return conversation unchanged\n default:\n return result;\n }\n};\n\nconst toUIMessageFromAgent = (\n chunk: AgentChunkType,\n conversation: MastraUIMessage[],\n metadata: MastraUIMessageMetadata,\n): MastraUIMessage[] => {\n const lastMessage = conversation[conversation.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return conversation;\n\n const parts = [...lastMessage.parts];\n\n if (chunk.type === 'text-delta') {\n const agentChunk = chunk.payload;\n const toolPartIndex = parts.findIndex(part => part.type === 'dynamic-tool');\n\n if (toolPartIndex === -1) return conversation;\n const toolPart = parts[toolPartIndex];\n\n // if (toolPart.type !== 'dynamic-tool') return newConversation;\n const childMessages = (toolPart as any)?.output?.childMessages || [];\n const lastChildMessage = childMessages[childMessages.length - 1];\n\n const textMessage = { type: 'text', content: (lastChildMessage?.content || '') + agentChunk.text };\n\n const nextMessages =\n lastChildMessage?.type === 'text'\n ? [...childMessages.slice(0, -1), textMessage]\n : [...childMessages, textMessage];\n\n parts[toolPartIndex] = {\n ...toolPart,\n output: {\n childMessages: nextMessages,\n },\n } as any;\n } else if (chunk.type === 'tool-call') {\n const agentChunk = chunk.payload;\n const toolPartIndex = parts.findIndex(part => part.type === 'dynamic-tool');\n\n if (toolPartIndex === -1) return conversation;\n const toolPart = parts[toolPartIndex];\n const childMessages = (toolPart as any)?.output?.childMessages || [];\n\n parts[toolPartIndex] = {\n ...toolPart,\n output: {\n ...(toolPart as any)?.output,\n childMessages: [\n ...childMessages,\n {\n type: 'tool',\n toolCallId: agentChunk.toolCallId,\n toolName: agentChunk.toolName,\n args: agentChunk.args,\n },\n ],\n },\n } as any;\n } else if (chunk.type === 'tool-output') {\n const agentChunk = chunk.payload;\n const toolPartIndex = parts.findIndex(part => part.type === 'dynamic-tool');\n\n if (toolPartIndex === -1) return conversation;\n const toolPart = parts[toolPartIndex];\n if (agentChunk?.output?.type?.startsWith('workflow-')) {\n const childMessages = (toolPart as any)?.output?.childMessages || [];\n const lastToolIndex = childMessages.length - 1;\n\n const currentMessage = childMessages[lastToolIndex];\n const actualExistingWorkflowState = (currentMessage as any)?.toolOutput || {};\n const updatedWorkflowState = mapWorkflowStreamChunkToWatchResult(actualExistingWorkflowState, agentChunk.output);\n\n if (lastToolIndex >= 0 && childMessages[lastToolIndex]?.type === 'tool') {\n parts[toolPartIndex] = {\n ...toolPart,\n output: {\n ...(toolPart as any)?.output,\n childMessages: [\n ...childMessages.slice(0, -1),\n {\n ...currentMessage,\n toolOutput: { ...updatedWorkflowState, runId: agentChunk.output.runId },\n },\n ],\n },\n } as any;\n }\n }\n } else if (chunk.type === 'tool-result') {\n const agentChunk = chunk.payload;\n const toolPartIndex = parts.findIndex(part => part.type === 'dynamic-tool');\n\n if (toolPartIndex === -1) return conversation;\n const toolPart = parts[toolPartIndex];\n const childMessages = (toolPart as any)?.output?.childMessages || [];\n\n const lastToolIndex = childMessages.length - 1;\n const isWorkflow = agentChunk?.toolName?.startsWith('workflow-');\n\n if (lastToolIndex >= 0 && childMessages[lastToolIndex]?.type === 'tool') {\n parts[toolPartIndex] = {\n ...toolPart,\n output: {\n ...(toolPart as any)?.output,\n childMessages: [\n ...childMessages.slice(0, -1),\n {\n ...childMessages[lastToolIndex],\n toolOutput: isWorkflow\n ? { ...(agentChunk.result as any)?.result, runId: (agentChunk.result as any)?.runId }\n : agentChunk.result,\n },\n ],\n },\n } as any;\n }\n }\n\n return [\n ...conversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n};\n","import { ThreadMessageLike, MessageStatus } from '@assistant-ui/react';\nimport { ExtendedMastraUIMessage, MastraUIMessage } from '../types';\nimport { ReadonlyJSONObject } from '@mastra/core/stream';\n\ntype ContentPart = { metadata?: Record<string, unknown> } & (Exclude<\n ThreadMessageLike['content'],\n string\n> extends readonly (infer T)[]\n ? T\n : never);\n\n/**\n * Converts a Mastra UIMessage (from AI SDK) to a ThreadMessageLike format compatible with @assistant-ui/react.\n *\n * This function handles UIMessages from three sources:\n * - agent.generate: Full output with all message parts\n * - toUIMessage: Streaming chunks accumulated into UIMessages\n * - toNetworkUIMessage: Network execution events accumulated into UIMessages\n *\n * @param message - The MastraUIMessage to convert\n * @returns A ThreadMessageLike compatible with @assistant-ui/react\n */\nexport const toAssistantUIMessage = (message: MastraUIMessage): ThreadMessageLike => {\n const extendedMessage = message as ExtendedMastraUIMessage;\n\n // Convert parts array to content array\n\n const content: ThreadMessageLike['content'] = message.parts.map((part): ContentPart => {\n // Handle text parts\n if (part.type === 'text') {\n return {\n type: 'text',\n text: part.text,\n metadata: message.metadata,\n };\n }\n\n // Handle reasoning parts (extended thinking)\n if (part.type === 'reasoning') {\n return {\n type: 'reasoning',\n text: part.text,\n metadata: message.metadata,\n };\n }\n\n // Handle source-url parts\n if (part.type === 'source-url') {\n return {\n type: 'source',\n sourceType: 'url',\n id: part.sourceId,\n url: part.url,\n title: part.title,\n metadata: message.metadata,\n };\n }\n\n // Handle source-document parts (not directly supported by ThreadMessageLike)\n // Convert to file part for compatibility\n if (part.type === 'source-document') {\n return {\n type: 'file',\n filename: part.filename,\n mimeType: part.mediaType,\n data: '', // Source documents don't have inline data\n metadata: message.metadata,\n };\n }\n\n // Handle file parts\n if (part.type === 'file') {\n const type = part.mediaType.includes('image/') ? 'image' : 'file';\n\n if (type === 'file') {\n return {\n type,\n mimeType: part.mediaType,\n data: part.url, // Use URL as data source\n metadata: message.metadata,\n };\n }\n\n if (type === 'image') {\n return {\n type,\n image: part.url,\n metadata: message.metadata,\n };\n }\n }\n\n // Handle dynamic-tool parts (tool calls)\n if (part.type === 'dynamic-tool') {\n // Build the tool call matching the inline type from ThreadMessageLike\n const baseToolCall: ContentPart = {\n type: 'tool-call' as const,\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n argsText: JSON.stringify(part.input),\n args: part.input as ReadonlyJSONObject,\n metadata: message.metadata,\n };\n\n if (part.state === 'output-error' && 'errorText' in part) {\n return { ...baseToolCall, result: part.errorText, isError: true };\n }\n\n // Only add result and isError if the tool has completed\n if ('output' in part) {\n return { ...baseToolCall, result: part.output };\n }\n\n return baseToolCall;\n }\n\n // Handle typed tool parts (tool-{NAME} pattern from AI SDK)\n if (part.type.startsWith('tool-') && (part as any).state !== 'input-available') {\n const toolName = 'toolName' in part && typeof part.toolName === 'string' ? part.toolName : part.type.substring(5);\n\n const baseToolCall: ContentPart = {\n type: 'tool-call' as const,\n toolCallId: 'toolCallId' in part && typeof part.toolCallId === 'string' ? part.toolCallId : '',\n toolName,\n argsText: 'input' in part ? JSON.stringify(part.input) : '{}',\n args: 'input' in part ? part.input : {},\n metadata: message.metadata,\n };\n\n // Add result if available\n if ('output' in part) {\n return { ...baseToolCall, result: part.output };\n } else if ('error' in part) {\n return { ...baseToolCall, result: part.error, isError: true };\n }\n\n return baseToolCall;\n }\n\n // Extract requireApprovalMetadata from message metadata (if any)\n const requireApprovalMetadata = extendedMessage.metadata?.requireApprovalMetadata as\n | Record<string, any>\n | undefined;\n\n // Check if this part has a toolCallId that matches requireApprovalMetadata\n const partToolCallId = 'toolCallId' in part && typeof part.toolCallId === 'string' ? part.toolCallId : undefined;\n const suspensionData = partToolCallId ? requireApprovalMetadata?.[partToolCallId] : undefined;\n if (suspensionData) {\n const toolName =\n 'toolName' in part && typeof part.toolName === 'string'\n ? part.toolName\n : part.type.startsWith('tool-')\n ? part.type.substring(5)\n : '';\n\n return {\n type: 'tool-call' as const,\n toolCallId: partToolCallId!,\n toolName,\n argsText: 'input' in part ? JSON.stringify(part.input) : '{}',\n args: ('input' in part ? part.input : {}) as ReadonlyJSONObject,\n metadata: extendedMessage.metadata,\n };\n }\n\n // For any other part types, return a minimal text part\n // This ensures forward compatibility with new part types\n return {\n type: 'text',\n text: '',\n metadata: message.metadata,\n };\n });\n\n // Determine status for assistant messages\n let status: MessageStatus | undefined;\n if (message.role === 'assistant' && content.length > 0) {\n // Check for streaming parts\n const hasStreamingParts = message.parts.some(\n part =>\n (part.type === 'text' && 'state' in part && part.state === 'streaming') ||\n (part.type === 'reasoning' && 'state' in part && part.state === 'streaming'),\n );\n\n // Check for tool calls (both dynamic-tool and tool-{NAME} patterns)\n const hasToolCalls = message.parts.some(part => part.type === 'dynamic-tool' || part.type.startsWith('tool-'));\n\n const hasInputAvailableTools = message.parts.some(\n part => part.type === 'dynamic-tool' && part.state === 'input-available',\n );\n\n const hasErrorTools = message.parts.some(\n part =>\n (part.type === 'dynamic-tool' && part.state === 'output-error') ||\n (part.type.startsWith('tool-') && 'error' in part),\n );\n\n // Determine message status based on part states\n if (hasStreamingParts) {\n status = { type: 'running' };\n } else if (hasInputAvailableTools && hasToolCalls) {\n status = { type: 'requires-action', reason: 'tool-calls' };\n } else if (hasErrorTools) {\n status = { type: 'incomplete', reason: 'error' };\n } else {\n status = { type: 'complete', reason: 'stop' };\n }\n }\n\n // Build the ThreadMessageLike object\n const threadMessage: ThreadMessageLike = {\n role: message.role,\n content,\n id: message.id,\n createdAt: extendedMessage.createdAt,\n status,\n attachments: extendedMessage.experimental_attachments,\n };\n\n return threadMessage;\n};\n","import { ExtendedMastraUIMessage, MastraUIMessage } from '../types';\n\n// Type definitions for parsing network execution data\ninterface ToolCallPayload {\n toolCallId: string;\n toolName: string;\n args: Record<string, unknown>;\n providerMetadata?: Record<string, unknown>;\n}\n\ninterface ToolCall {\n type: string;\n runId: string;\n from: string;\n payload: ToolCallPayload;\n}\n\ninterface NestedMessage {\n role: string;\n id: string;\n createdAt: string;\n type: string;\n content?: string | ToolResultContent[];\n}\n\ninterface ToolResultContent {\n type: string;\n toolCallId: string;\n toolName: string;\n result?: {\n result?: Record<string, unknown>;\n };\n}\n\ninterface FinalResult {\n text?: string;\n toolCalls?: ToolCall[];\n messages?: NestedMessage[];\n}\n\ninterface NetworkExecutionData {\n isNetwork: boolean;\n selectionReason?: string;\n primitiveType?: string;\n primitiveId?: string;\n input?: string;\n finalResult?: FinalResult;\n toolCalls?: ToolCall[];\n messages?: NestedMessage[];\n}\n\ninterface ChildMessage {\n type: 'tool' | 'text';\n toolCallId?: string;\n toolName?: string;\n args?: Record<string, unknown>;\n toolOutput?: Record<string, unknown>;\n content?: string;\n}\n\nexport const resolveInitialMessages = (messages: MastraUIMessage[]): MastraUIMessage[] => {\n return messages.map(message => {\n // Check if message contains network execution data\n const networkPart = message.parts.find(\n (part): part is { type: 'text'; text: string } =>\n typeof part === 'object' &&\n part !== null &&\n 'type' in part &&\n part.type === 'text' &&\n 'text' in part &&\n typeof part.text === 'string' &&\n part.text.includes('\"isNetwork\":true'),\n );\n\n if (networkPart && networkPart.type === 'text') {\n try {\n const json: NetworkExecutionData = JSON.parse(networkPart.text);\n\n if (json.isNetwork === true) {\n // Extract network execution data\n const selectionReason = json.selectionReason || '';\n const primitiveType = json.primitiveType || '';\n const primitiveId = json.primitiveId || '';\n const finalResult = json.finalResult;\n const toolCalls = finalResult?.toolCalls || [];\n\n // Build child messages from nested messages\n const childMessages: ChildMessage[] = [];\n\n // Process tool calls from the network agent\n for (const toolCall of toolCalls) {\n if (toolCall.type === 'tool-call' && toolCall.payload) {\n const toolCallId = toolCall.payload.toolCallId;\n\n let toolResult;\n\n for (const message of finalResult?.messages || []) {\n for (const part of message.content || []) {\n if (typeof part === 'object' && part.type === 'tool-result' && part.toolCallId === toolCallId) {\n toolResult = part;\n break;\n }\n }\n }\n\n const isWorkflow = Boolean(toolResult?.result?.result?.steps);\n\n childMessages.push({\n type: 'tool' as const,\n toolCallId: toolCall.payload.toolCallId,\n toolName: toolCall.payload.toolName,\n args: toolCall.payload.args,\n toolOutput: isWorkflow ? toolResult?.result?.result : toolResult?.result,\n });\n }\n }\n\n // Add the final text result if available\n if (finalResult && finalResult.text) {\n childMessages.push({\n type: 'text' as const,\n content: finalResult.text,\n });\n }\n\n // Build the result object\n const result = {\n childMessages: childMessages,\n result: finalResult?.text || '',\n };\n\n // Return the transformed message with dynamic-tool part\n const nextMessage = {\n role: 'assistant' as const,\n parts: [\n {\n type: 'dynamic-tool',\n toolCallId: primitiveId,\n toolName: primitiveId,\n state: 'output-available',\n input: json.input,\n output: result,\n },\n ],\n id: message.id,\n metadata: {\n ...message.metadata,\n mode: 'network' as const,\n selectionReason: selectionReason,\n agentInput: json.input,\n from: primitiveType === 'agent' ? ('AGENT' as const) : ('WORKFLOW' as const),\n },\n } as MastraUIMessage;\n\n return nextMessage;\n }\n } catch (error) {\n // If parsing fails, return the original message\n return message;\n }\n }\n\n const extendedMessage = message as ExtendedMastraUIMessage;\n\n // Convert pendingToolApprovals from DB format to stream format\n const pendingToolApprovals = extendedMessage.metadata?.pendingToolApprovals as Record<string, any> | undefined;\n if (pendingToolApprovals && typeof pendingToolApprovals === 'object') {\n return {\n ...message,\n metadata: {\n ...message.metadata,\n mode: 'stream' as const,\n requireApprovalMetadata: pendingToolApprovals,\n },\n };\n }\n\n // Return original message if it's not a network message\n return message;\n });\n};\n\nexport const resolveToChildMessages = (messages: MastraUIMessage[]): ChildMessage[] => {\n const assistantMessage = messages.find(message => message.role === 'assistant');\n\n if (!assistantMessage) return [];\n\n const parts = assistantMessage.parts;\n\n let childMessages: ChildMessage[] = [];\n\n for (const part of parts) {\n const toolPart = part as any;\n if (part.type.startsWith('tool-')) {\n const toolName = part.type.substring('tool-'.length);\n const isWorkflow = toolName.startsWith('workflow-');\n childMessages.push({\n type: 'tool',\n toolCallId: toolPart.toolCallId,\n toolName: toolName,\n args: toolPart.input,\n toolOutput: isWorkflow ? { ...toolPart.output?.result, runId: toolPart.output?.runId } : toolPart.output,\n });\n }\n\n if (part.type === 'text') {\n childMessages.push({\n type: 'text',\n content: toolPart.text,\n });\n }\n }\n\n return childMessages;\n};\n","import { NetworkChunkType } from '@mastra/core/stream';\nimport { mapWorkflowStreamChunkToWatchResult } from '../utils/toUIMessage';\nimport { Transformer, TransformerArgs } from './types';\nimport { MastraUIMessage, MastraUIMessageMetadata } from '../types';\nimport { WorkflowStreamResult } from '@mastra/core/workflows';\n\nexport class AISdkNetworkTransformer implements Transformer<NetworkChunkType> {\n transform({ chunk, conversation, metadata }: TransformerArgs<NetworkChunkType>): MastraUIMessage[] {\n const newConversation = [...conversation];\n\n if (chunk.type === 'routing-agent-text-delta') {\n return this.handleRoutingAgentConversation(chunk, newConversation);\n }\n\n if (chunk.type.startsWith('agent-execution-')) {\n return this.handleAgentConversation(chunk, newConversation, metadata);\n }\n\n if (chunk.type.startsWith('workflow-execution-')) {\n return this.handleWorkflowConversation(chunk, newConversation, metadata);\n }\n\n if (chunk.type.startsWith('tool-execution-')) {\n return this.handleToolConversation(chunk, newConversation, metadata);\n }\n\n if (chunk.type === 'network-execution-event-step-finish') {\n const lastMessage = newConversation[newConversation.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return newConversation;\n\n const agentChunk = chunk.payload as any;\n const parts = [...lastMessage.parts];\n const textPartIndex = parts.findIndex(part => part.type === 'text');\n\n if (textPartIndex === -1) {\n parts.push({\n type: 'text',\n text: agentChunk.result,\n state: 'done',\n });\n\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n const textPart = parts[textPartIndex];\n if (textPart.type === 'text') {\n parts[textPartIndex] = {\n ...textPart,\n state: 'done',\n };\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n return newConversation;\n }\n\n return newConversation;\n }\n\n private handleRoutingAgentConversation = (\n chunk: NetworkChunkType,\n newConversation: MastraUIMessage[],\n ): MastraUIMessage[] => {\n const lastMessage = newConversation[newConversation.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return newConversation;\n\n const agentChunk = chunk.payload as any;\n const parts = [...lastMessage.parts];\n const textPartIndex = parts.findIndex(part => part.type === 'text');\n\n if (textPartIndex === -1) {\n parts.push({\n type: 'text',\n text: agentChunk.text,\n state: 'streaming',\n });\n\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n const textPart = parts[textPartIndex];\n if (textPart.type === 'text') {\n parts[textPartIndex] = {\n ...textPart,\n text: textPart.text + agentChunk.text,\n state: 'streaming',\n };\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n return newConversation;\n };\n\n private handleAgentConversation = (\n chunk: NetworkChunkType,\n newConversation: MastraUIMessage[],\n metadata: MastraUIMessageMetadata,\n ): MastraUIMessage[] => {\n if (chunk.type === 'agent-execution-start') {\n const primitiveId = chunk.payload?.args?.primitiveId;\n const runId = chunk.payload.runId;\n\n if (!primitiveId || !runId) return newConversation;\n\n const newMessage: MastraUIMessage = {\n id: `agent-execution-start-${runId}-${Date.now()}`,\n role: 'assistant',\n parts: [\n {\n type: 'dynamic-tool',\n toolName: primitiveId,\n toolCallId: runId,\n state: 'input-available',\n input: chunk.payload.args,\n },\n ],\n metadata: {\n ...metadata,\n selectionReason: chunk.payload?.args?.selectionReason || '',\n agentInput: chunk.payload?.args?.task,\n mode: 'network',\n from: 'AGENT',\n },\n };\n\n return [...newConversation, newMessage];\n }\n\n if (chunk.type === 'agent-execution-end') {\n const lastMessage = newConversation[newConversation.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return newConversation;\n\n const parts = [...lastMessage.parts];\n const toolPartIndex = parts.findIndex(part => part.type === 'dynamic-tool');\n\n if (toolPartIndex !== -1) {\n const toolPart = parts[toolPartIndex];\n if (toolPart.type === 'dynamic-tool') {\n const currentOutput = toolPart.output as any;\n parts[toolPartIndex] = {\n type: 'dynamic-tool',\n toolName: toolPart.toolName,\n toolCallId: toolPart.toolCallId,\n state: 'output-available',\n input: toolPart.input,\n output: {\n ...currentOutput,\n result: currentOutput?.result || chunk.payload?.result || '',\n },\n };\n }\n }\n\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n // Handle agent execution events (text, tool calls, etc.)\n if (chunk.type.startsWith('agent-execution-event-')) {\n const lastMessage = newConversation[newConversation.length - 1];\n if (!lastMessage || lastMessage.role !== 'assistant') return newConversation;\n\n const agentChunk = chunk.payload as any;\n const parts = [...lastMessage.parts];\n const toolPartIndex = parts.findIndex(part => part.type === 'dynamic-tool');\n\n if (toolPartIndex === -1) return newConversation;\n const toolPart = parts[toolPartIndex];\n\n // if (toolPart.type !== 'dynamic-tool') return newConversation;\n\n if (agentChunk.type === 'text-delta') {\n const childMessages = (toolPart as any)?.output?.childMessages || [];\n const lastChildMessage = childMessages[childMessages.length - 1];\n\n const textMessage = { type: 'text', content: (lastChildMessage?.content || '') + agentChunk.payload.text };\n\n const nextMessages =\n lastChildMessage?.type === 'text'\n ? [...childMessages.slice(0, -1), textMessage]\n : [...childMessages, textMessage];\n\n parts[toolPartIndex] = {\n ...toolPart,\n output: {\n childMessages: nextMessages,\n },\n } as any;\n } else if (agentChunk.type === 'tool-call') {\n const childMessages = (toolPart as any)?.output?.childMessages || [];\n\n parts[toolPartIndex] = {\n ...toolPart,\n output: {\n ...(toolPart as any)?.output,\n childMessages: [\n ...childMessages,\n {\n type: 'tool',\n toolCallId: agentChunk.payload.toolCallId,\n toolName: agentChunk.payload.toolName,\n args: agentChunk.payload.args,\n },\n ],\n },\n } as any;\n } else if (agentChunk.type === 'tool-output') {\n if (agentChunk.payload?.output?.type?.startsWith('workflow-')) {\n const childMessages = (toolPart as any)?.output?.childMessages || [];\n const lastToolIndex = childMessages.length - 1;\n\n const currentMessage = childMessages[lastToolIndex];\n const actualExistingWorkflowState = (currentMessage as any)?.toolOutput || {};\n const updatedWorkflowState = mapWorkflowStreamChunkToWatchResult(\n actualExistingWorkflowState,\n agentChunk.payload.output,\n );\n\n if (lastToolIndex >= 0 && childMessages[lastToolIndex]?.type === 'tool') {\n parts[toolPartIndex] = {\n ...toolPart,\n output: {\n ...(toolPart as any)?.output,\n childMessages: [\n ...childMessages.slice(0, -1),\n {\n ...currentMessage,\n toolOutput: updatedWorkflowState,\n },\n ],\n },\n } as any;\n }\n }\n } else if (agentChunk.type === 'tool-result') {\n const childMessages = (toolPart as any)?.output?.childMessages || [];\n\n const lastToolIndex = childMessages.length - 1;\n const isWorkflow = Boolean(agentChunk.payload?.result?.result?.steps);\n\n if (lastToolIndex >= 0 && childMessages[lastToolIndex]?.type === 'tool') {\n parts[toolPartIndex] = {\n ...toolPart,\n output: {\n ...(toolPart as any)?.output,\n childMessages: [\n ...childMessages.slice(0, -1),\n {\n ...childMessages[lastToolIndex],\n toolOutput: isWorkflow ? agentChunk.payload.result.result : agentChunk.payload.result,\n },\n ],\n },\n } as any;\n }\n }\n\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n return newConversation;\n };\n\n private handleWorkflowConversation = (\n chunk: NetworkChunkType,\n newConversation: MastraUIMessage[],\n metadata: MastraUIMessageMetadata,\n ): MastraUIMessage[] => {\n if (chunk.type === 'workflow-execution-start') {\n const primitiveId = chunk.payload?.args?.primitiveId;\n const runId = chunk.payload.runId;\n\n if (!primitiveId || !runId) return newConversation;\n\n let agentInput;\n\n try {\n agentInput = JSON.parse(chunk?.payload?.args?.prompt);\n } catch (e) {\n agentInput = chunk?.payload?.args?.prompt;\n }\n\n const newMessage: MastraUIMessage = {\n id: `workflow-start-${runId}-${Date.now()}`,\n role: 'assistant',\n parts: [\n {\n type: 'dynamic-tool',\n toolName: primitiveId,\n toolCallId: runId,\n state: 'input-available',\n input: chunk.payload.args,\n },\n ],\n metadata: {\n ...metadata,\n selectionReason: chunk.payload?.args?.selectionReason || '',\n from: 'WORKFLOW',\n mode: 'network',\n agentInput,\n },\n };\n\n return [...newConversation, newMessage];\n }\n\n if (chunk.type.startsWith('workflow-execution-event-')) {\n const lastMessage = newConversation[newConversation.length - 1];\n\n if (!lastMessage || lastMessage.role !== 'assistant') return newConversation;\n\n const parts = [...lastMessage.parts];\n const toolPartIndex = parts.findIndex(part => part.type === 'dynamic-tool');\n\n if (toolPartIndex === -1) return newConversation;\n\n const toolPart = parts[toolPartIndex];\n if (toolPart.type !== 'dynamic-tool') return newConversation;\n\n // Accumulate workflow state in output field\n const existingWorkflowState =\n (toolPart.output as WorkflowStreamResult<any, any, any, any>) ||\n ({} as WorkflowStreamResult<any, any, any, any>);\n\n const updatedWorkflowState = mapWorkflowStreamChunkToWatchResult(existingWorkflowState, chunk.payload as any);\n\n parts[toolPartIndex] = {\n ...toolPart,\n output: updatedWorkflowState as any,\n };\n\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n return newConversation;\n };\n\n private handleToolConversation = (\n chunk: NetworkChunkType,\n newConversation: MastraUIMessage[],\n metadata: MastraUIMessageMetadata,\n ): MastraUIMessage[] => {\n if (chunk.type === 'tool-execution-start') {\n const { args: argsData } = chunk.payload;\n const lastMessage = newConversation[newConversation.length - 1];\n\n const nestedArgs = argsData.args || {};\n\n if (!lastMessage || lastMessage.role !== 'assistant') {\n // Create new message if none exists\n const newMessage: MastraUIMessage = {\n id: `tool-start-${chunk.runId}-${Date.now()}`,\n role: 'assistant',\n parts: [\n {\n type: 'dynamic-tool',\n toolName: argsData.toolName || 'unknown',\n toolCallId: argsData.toolCallId || 'unknown',\n state: 'input-available',\n input: nestedArgs,\n },\n ],\n metadata: {\n ...metadata,\n selectionReason: metadata?.mode === 'network' ? metadata.selectionReason || argsData.selectionReason : '',\n mode: 'network',\n agentInput: nestedArgs,\n },\n };\n return [...newConversation, newMessage];\n }\n\n // Add tool call to the current message\n const parts = [...lastMessage.parts];\n\n parts.push({\n type: 'dynamic-tool',\n toolName: argsData.toolName || 'unknown',\n toolCallId: argsData.toolCallId || 'unknown',\n state: 'input-available',\n input: nestedArgs,\n });\n\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n // Handle tool execution end\n if (chunk.type === 'tool-execution-end') {\n const lastMessage = newConversation[newConversation.length - 1];\n\n if (!lastMessage || lastMessage.role !== 'assistant') return newConversation;\n\n const parts = [...lastMessage.parts];\n const toolPartIndex = parts.findIndex(\n part => part.type === 'dynamic-tool' && 'toolCallId' in part && part.toolCallId === chunk.payload.toolCallId,\n );\n\n if (toolPartIndex !== -1) {\n const toolPart = parts[toolPartIndex];\n if (toolPart.type === 'dynamic-tool') {\n const currentOutput = toolPart.output as any;\n parts[toolPartIndex] = {\n type: 'dynamic-tool',\n toolName: toolPart.toolName,\n toolCallId: toolPart.toolCallId,\n state: 'output-available',\n input: toolPart.input,\n output: currentOutput?.result || chunk.payload?.result || '',\n };\n }\n }\n\n return [\n ...newConversation.slice(0, -1),\n {\n ...lastMessage,\n parts,\n },\n ];\n }\n\n return newConversation;\n };\n}\n","import { CoreUserMessage } from '@mastra/core/llm';\nimport type { MastraUIMessage } from '../types';\n\n/**\n * Converts a CoreUserMessage to a MastraUIMessage (UIMessage format).\n *\n * Handles all CoreUserMessage content types:\n * - String content → single text part\n * - Array content with text/image/file parts → corresponding UIMessage parts\n */\nexport const fromCoreUserMessageToUIMessage = (coreUserMessage: CoreUserMessage): MastraUIMessage => {\n // Generate unique ID for the message\n const id = `user-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;\n\n // Convert content to parts array\n const parts: MastraUIMessage['parts'] =\n typeof coreUserMessage.content === 'string'\n ? [\n {\n type: 'text' as const,\n text: coreUserMessage.content,\n },\n ]\n : coreUserMessage.content.map((part): MastraUIMessage['parts'][number] => {\n switch (part.type) {\n case 'text': {\n return {\n type: 'text' as const,\n text: part.text,\n };\n }\n\n case 'image': {\n // UIMessage represents images as file parts, not image parts\n const url =\n typeof part.image === 'string'\n ? part.image // Assume it's already a URL or data URL\n : part.image instanceof URL\n ? part.image.toString()\n : ''; // For Uint8Array/ArrayBuffer, would need conversion\n\n return {\n type: 'file' as const,\n mediaType: part.mimeType ?? 'image/*',\n url,\n };\n }\n\n case 'file': {\n // Convert CoreUserMessage file format (data, mimeType, filename)\n // to UIMessage file format (url, mediaType, filename)\n const url =\n typeof part.data === 'string'\n ? part.data // Assume it's already a URL or data URL\n : part.data instanceof URL\n ? part.data.toString()\n : ''; // For Uint8Array/ArrayBuffer, would need conversion\n\n return {\n type: 'file' as const,\n mediaType: part.mimeType,\n url,\n ...(part.filename !== undefined ? { filename: part.filename } : {}),\n };\n }\n\n default: {\n // Exhaustiveness check - TypeScript will error if a case is missing\n const exhaustiveCheck: never = part;\n throw new Error(`Unhandled content part type: ${(exhaustiveCheck as { type: string }).type}`);\n }\n }\n });\n\n return {\n id,\n role: 'user',\n parts,\n };\n};\n","import { ModelSettings } from './types';\nimport { useMastraClient } from '@/mastra-client-context';\nimport { UIMessage } from '@ai-sdk/react';\nimport { ExtendedMastraUIMessage, MastraUIMessage } from '../lib/ai-sdk';\nimport { MastraClient } from '@mastra/client-js';\nimport { CoreUserMessage } from '@mastra/core/llm';\nimport { RequestContext } from '@mastra/core/request-context';\nimport { ChunkType, NetworkChunkType } from '@mastra/core/stream';\nimport { useRef, useState } from 'react';\nimport { toUIMessage } from '@/lib/ai-sdk';\nimport { AISdkNetworkTransformer } from '@/lib/ai-sdk/transformers/AISdkNetworkTransformer';\nimport { resolveInitialMessages } from '@/lib/ai-sdk/memory/resolveInitialMessages';\nimport { fromCoreUserMessageToUIMessage } from '@/lib/ai-sdk/utils/fromCoreUserMessageToUIMessage';\nimport { v4 as uuid } from '@lukeed/uuid';\nimport { TracingOptions } from '@mastra/core/observability';\n\nexport interface MastraChatProps {\n agentId: string;\n resourceId?: string;\n initializeMessages?: () => MastraUIMessage[];\n}\n\ninterface SharedArgs {\n coreUserMessages: CoreUserMessage[];\n requestContext?: RequestContext;\n threadId?: string;\n modelSettings?: ModelSettings;\n signal?: AbortSignal;\n tracingOptions?: TracingOptions;\n}\n\nexport type SendMessageArgs = { message: string; coreUserMessages?: CoreUserMessage[] } & (\n | ({ mode: 'generate' } & Omit<GenerateArgs, 'coreUserMessages'>)\n | ({ mode: 'stream' } & Omit<StreamArgs, 'coreUserMessages'>)\n | ({ mode: 'network' } & Omit<NetworkArgs, 'coreUserMessages'>)\n | ({ mode?: undefined } & Omit<StreamArgs, 'coreUserMessages'>)\n);\n\nexport type GenerateArgs = SharedArgs & { onFinish?: (messages: UIMessage[]) => Promise<void> };\n\nexport type StreamArgs = SharedArgs & {\n onChunk?: (chunk: ChunkType) => Promise<void>;\n};\n\nexport type NetworkArgs = SharedArgs & {\n onNetworkChunk?: (chunk: NetworkChunkType) => Promise<void>;\n};\n\nexport const useChat = ({ agentId, resourceId, initializeMessages }: MastraChatProps) => {\n // Extract runId from any pending suspensions in initial messages\n const extractRunIdFromMessages = (messages: ExtendedMastraUIMessage[]): string | undefined => {\n for (const message of messages) {\n const pendingToolApprovals = message.metadata?.pendingToolApprovals as Record<string, any> | undefined;\n if (pendingToolApprovals && typeof pendingToolApprovals === 'object') {\n const suspensionData = Object.values(pendingToolApprovals)[0];\n if (suspensionData?.runId) {\n return suspensionData.runId;\n }\n }\n }\n return undefined;\n };\n\n const initialMessages = initializeMessages?.() || [];\n const initialRunId = extractRunIdFromMessages(initialMessages);\n\n const _currentRunId = useRef<string | undefined>(initialRunId);\n const _onChunk = useRef<((chunk: ChunkType) => Promise<void>) | undefined>(undefined);\n const [messages, setMessages] = useState<MastraUIMessage[]>(() => resolveInitialMessages(initialMessages));\n const [toolCallApprovals, setToolCallApprovals] = useState<{\n [toolCallId: string]: { status: 'approved' | 'declined' };\n }>({});\n\n const baseClient = useMastraClient();\n const [isRunning, setIsRunning] = useState(false);\n\n const generate = async ({\n coreUserMessages,\n requestContext,\n threadId,\n modelSettings,\n signal,\n onFinish,\n tracingOptions,\n }: GenerateArgs) => {\n const {\n frequencyPenalty,\n presencePenalty,\n maxRetries,\n maxTokens,\n temperature,\n topK,\n topP,\n instructions,\n providerOptions,\n maxSteps,\n } = modelSettings || {};\n setIsRunning(true);\n\n // Create a new client instance with the abort signal\n // We can't use useMastraClient hook here, so we'll create the client directly\n const clientWithAbort = new MastraClient({\n ...baseClient!.options,\n abortSignal: signal,\n });\n\n const agent = clientWithAbort.getAgent(agentId);\n\n const response = await agent.generate({\n messages: coreUserMessages,\n runId: uuid(),\n maxSteps,\n modelSettings: {\n frequencyPenalty,\n presencePenalty,\n maxRetries,\n maxOutputTokens: maxTokens,\n temperature,\n topK,\n topP,\n },\n instructions,\n requestContext,\n ...(threadId ? { threadId, resourceId: resourceId || agentId } : {}),\n providerOptions: providerOptions as any,\n tracingOptions,\n });\n\n setIsRunning(false);\n\n if (response && 'uiMessages' in response.response && response.response.uiMessages) {\n onFinish?.(response.response.uiMessages);\n const mastraUIMessages: MastraUIMessage[] = (response.response.uiMessages || []).map(message => ({\n ...message,\n metadata: {\n mode: 'generate',\n },\n }));\n\n setMessages(prev => [...prev, ...mastraUIMessages]);\n }\n };\n\n const stream = async ({\n coreUserMessages,\n requestContext,\n threadId,\n onChunk,\n modelSettings,\n signal,\n tracingOptions,\n }: StreamArgs) => {\n const {\n frequencyPenalty,\n presencePenalty,\n maxRetries,\n maxTokens,\n temperature,\n topK,\n topP,\n instructions,\n providerOptions,\n maxSteps,\n requireToolApproval,\n } = modelSettings || {};\n\n setIsRunning(true);\n\n // Create a new client instance with the abort signal\n // We can't use useMastraClient hook here, so we'll create the client directly\n const clientWithAbort = new MastraClient({\n ...baseClient!.options,\n abortSignal: signal,\n });\n\n const agent = clientWithAbort.getAgent(agentId);\n\n const runId = uuid();\n\n const response = await agent.stream({\n messages: coreUserMessages,\n runId,\n maxSteps,\n modelSettings: {\n frequencyPenalty,\n presencePenalty,\n maxRetries,\n maxOutputTokens: maxTokens,\n temperature,\n topK,\n topP,\n },\n instructions,\n requestContext,\n ...(threadId ? { threadId, resourceId: resourceId || agentId } : {}),\n providerOptions: providerOptions as any,\n requireToolApproval,\n tracingOptions,\n });\n\n _onChunk.current = onChunk;\n _currentRunId.current = runId;\n\n await response.processDataStream({\n onChunk: async (chunk: ChunkType) => {\n // Without this, React might batch intermediate chunks which would break the message reconstruction over time\n\n setMessages(prev => toUIMessage({ chunk, conversation: prev, metadata: { mode: 'stream' } }));\n\n onChunk?.(chunk);\n },\n });\n\n setIsRunning(false);\n };\n\n const network = async ({\n coreUserMessages,\n requestContext,\n threadId,\n onNetworkChunk,\n modelSettings,\n signal,\n tracingOptions,\n }: NetworkArgs) => {\n const { frequencyPenalty, presencePenalty, maxRetries, maxTokens, temperature, topK, topP, maxSteps } =\n modelSettings || {};\n\n setIsRunning(true);\n\n // Create a new client instance with the abort signal\n // We can't use useMastraClient hook here, so we'll create the client directly\n const clientWithAbort = new MastraClient({\n ...baseClient!.options,\n abortSignal: signal,\n });\n\n const agent = clientWithAbort.getAgent(agentId);\n\n const runId = uuid();\n\n const response = await agent.network({\n messages: coreUserMessages,\n maxSteps,\n modelSettings: {\n frequencyPenalty,\n presencePenalty,\n maxRetries,\n maxOutputTokens: maxTokens,\n temperature,\n topK,\n topP,\n },\n runId,\n requestContext,\n ...(threadId ? { thread: threadId, resourceId: resourceId || agentId } : {}),\n tracingOptions,\n });\n\n const transformer = new AISdkNetworkTransformer();\n\n await response.processDataStream({\n onChunk: async (chunk: NetworkChunkType) => {\n setMessages(prev => transformer.transform({ chunk, conversation: prev, metadata: { mode: 'network' } }));\n onNetworkChunk?.(chunk);\n },\n });\n\n setIsRunning(false);\n };\n\n const handleCancelRun = () => {\n setIsRunning(false);\n _currentRunId.current = undefined;\n _onChunk.current = undefined;\n };\n\n const approveToolCall = async (toolCallId: string) => {\n const onChunk = _onChunk.current;\n const currentRunId = _currentRunId.current;\n\n if (!currentRunId)\n return console.info('[approveToolCall] approveToolCall can only be called after a stream has started');\n\n setIsRunning(true);\n setToolCallApprovals(prev => ({ ...prev, [toolCallId]: { status: 'approved' } }));\n\n const agent = baseClient.getAgent(agentId);\n const response = await agent.approveToolCall({ runId: currentRunId, toolCallId });\n\n await response.processDataStream({\n onChunk: async (chunk: ChunkType) => {\n // Without this, React might batch intermediate chunks which would break the message reconstruction over time\n\n setMessages(prev => toUIMessage({ chunk, conversation: prev, metadata: { mode: 'stream' } }));\n\n onChunk?.(chunk);\n },\n });\n setIsRunning(false);\n };\n\n const declineToolCall = async (toolCallId: string) => {\n const onChunk = _onChunk.current;\n const currentRunId = _currentRunId.current;\n\n if (!currentRunId)\n return console.info('[declineToolCall] declineToolCall can only be called after a stream has started');\n\n setIsRunning(true);\n setToolCallApprovals(prev => ({ ...prev, [toolCallId]: { status: 'declined' } }));\n const agent = baseClient.getAgent(agentId);\n const response = await agent.declineToolCall({ runId: currentRunId, toolCallId });\n\n await response.processDataStream({\n onChunk: async (chunk: ChunkType) => {\n // Without this, React might batch intermediate chunks which would break the message reconstruction over time\n\n setMessages(prev => toUIMessage({ chunk, conversation: prev, metadata: { mode: 'stream' } }));\n\n onChunk?.(chunk);\n },\n });\n setIsRunning(false);\n };\n\n const sendMessage = async ({ mode = 'stream', ...args }: SendMessageArgs) => {\n const nextMessage: Omit<CoreUserMessage, 'id'> = { role: 'user', content: [{ type: 'text', text: args.message }] };\n const coreUserMessages = [nextMessage];\n\n if (args.coreUserMessages) {\n coreUserMessages.push(...args.coreUserMessages);\n }\n\n const uiMessages = coreUserMessages.map(fromCoreUserMessageToUIMessage);\n setMessages(s => [...s, ...uiMessages] as MastraUIMessage[]);\n\n if (mode === 'generate') {\n await generate({ ...args, coreUserMessages });\n } else if (mode === 'stream') {\n await stream({ ...args, coreUserMessages });\n } else if (mode === 'network') {\n await network({ ...args, coreUserMessages });\n }\n };\n\n return {\n setMessages,\n sendMessage,\n isRunning,\n messages,\n approveToolCall,\n declineToolCall,\n cancelRun: handleCancelRun,\n toolCallApprovals,\n };\n};\n","import { createContext, useContext } from 'react';\nimport { EntityVariant } from './types';\n\nexport type EntityContextType = {\n expanded: boolean;\n setExpanded: (expanded: boolean) => void;\n variant: EntityVariant;\n disabled: boolean;\n};\n\nexport const EntityContext = createContext<EntityContextType>({\n expanded: false,\n setExpanded: () => {},\n variant: 'initial',\n disabled: false,\n});\n\nexport const EntityProvider = EntityContext.Provider;\n\nexport const useEntity = () => useContext(EntityContext);\n","import React from 'react';\n\nexport interface IconProps extends React.ComponentPropsWithoutRef<'div'> {\n children: React.ReactNode;\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport const IconSizes = {\n sm: 'mastra:[&>svg]:size-3',\n md: 'mastra:[&>svg]:size-4',\n lg: 'mastra:[&>svg]:size-5',\n};\n\nexport const Icon = ({ children, className, size = 'md', ...props }: IconProps) => {\n return (\n <div className={className || IconSizes[size]} {...props}>\n {children}\n </div>\n );\n};\n","import { ElementType, useState } from 'react';\nimport { EntityProvider, useEntity } from './context';\nimport { Icon } from '../Icon/Icon';\nimport { ChevronDownIcon } from 'lucide-react';\n\nimport { twMerge } from 'tailwind-merge';\nimport { EntityVariant } from './types';\n\nexport interface EntityProps extends React.ComponentPropsWithoutRef<'div'> {\n variant?: EntityVariant;\n initialExpanded?: boolean;\n disabled?: boolean;\n}\n\nexport const Entity = ({\n className,\n variant = 'initial',\n initialExpanded = false,\n disabled = false,\n ...props\n}: EntityProps) => {\n const [expanded, setExpanded] = useState(initialExpanded);\n\n return (\n <EntityProvider value={{ expanded, setExpanded, variant, disabled }}>\n <div className={className} {...props} />\n </EntityProvider>\n );\n};\n\nexport const EntityTriggerClass = twMerge(\n 'mastra:aria-disabled:cursor-not-allowed mastra:aria-disabled:bg-surface5 mastra:aria-disabled:text-text3',\n 'mastra:aria-expanded:rounded-b-none mastra:aria-expanded:border-b-0',\n 'mastra:bg-surface3 mastra:text-text6 mastra:hover:bg-surface4 mastra:active:bg-surface5',\n 'mastra:rounded-lg mastra:py-2 mastra:px-4 mastra:border mastra:border-border1',\n 'mastra:cursor-pointer mastra:inline-flex mastra:items-center mastra:gap-1 mastra:font-mono',\n);\n\nexport const EntityTriggerVariantClasses: Record<EntityVariant, string> = {\n agent: 'mastra:[&_svg.mastra-icon]:text-accent1',\n workflow: 'mastra:[&_svg.mastra-icon]:text-accent3',\n tool: 'mastra:[&_svg.mastra-icon]:text-accent6',\n memory: 'mastra:[&_svg.mastra-icon]:text-accent2',\n initial: 'mastra:[&_svg.mastra-icon]:text-text3',\n};\n\nexport const EntityTrigger = ({ className, children, ...props }: React.ComponentPropsWithoutRef<'button'>) => {\n const { expanded, setExpanded, variant, disabled } = useEntity();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return;\n setExpanded(!expanded);\n props?.onClick?.(e);\n };\n\n return (\n <button\n className={className || twMerge(EntityTriggerClass, !disabled && EntityTriggerVariantClasses[variant])}\n {...props}\n onClick={handleClick}\n aria-expanded={expanded}\n aria-disabled={disabled}\n >\n {children}\n </button>\n );\n};\n\nexport const EntityContentClass = twMerge(\n 'mastra:space-y-4',\n 'mastra:rounded-lg mastra:rounded-tl-none mastra:p-4 mastra:border mastra:border-border1 mastra:-mt-[0.5px]',\n 'mastra:bg-surface3 mastra:text-text6',\n);\n\nexport const EntityContent = ({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) => {\n const { expanded } = useEntity();\n\n if (!expanded) return null;\n\n return <div className={className || EntityContentClass} {...props} />;\n};\n\nexport const EntityCaret = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => {\n const { expanded } = useEntity();\n\n return (\n <Icon>\n <ChevronDownIcon\n className={twMerge(\n `mastra:text-text3 mastra:transition-transform mastra:duration-200 mastra:ease-in-out`,\n expanded ? 'mastra:rotate-0' : 'mastra:-rotate-90',\n className,\n )}\n {...props}\n />\n </Icon>\n );\n};\n","import { twMerge } from 'tailwind-merge';\n\nexport const ToolApprovalClass = twMerge(\n 'mastra:rounded-lg mastra:border mastra:border-border1 mastra:max-w-1/2 mastra:mt-2',\n 'mastra:bg-surface3 mastra:text-text6',\n);\n\nexport const ToolApproval = ({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) => {\n return <div className={className || ToolApprovalClass} {...props} />;\n};\n\nexport const ToolApprovalTitleClass = twMerge('mastra:text-text6 mastra:inline-flex mastra:items-center mastra:gap-1');\nexport const ToolApprovalTitle = ({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) => {\n return <div className={className || ToolApprovalTitleClass} {...props} />;\n};\n\nexport const ToolApprovalHeaderClass = twMerge(\n 'mastra:flex mastra:justify-between mastra:items-center mastra:gap-2',\n 'mastra:border-b mastra:border-border1 mastra:px-4 mastra:py-2',\n);\nexport const ToolApprovalHeader = ({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) => {\n return <div className={className || ToolApprovalHeaderClass} {...props} />;\n};\n\nexport const ToolApprovalContentClass = twMerge('mastra:text-text6 mastra:p-4');\nexport const ToolApprovalContent = ({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) => {\n return <div className={className || ToolApprovalContentClass} {...props} />;\n};\n\nexport const ToolApprovalActionsClass = twMerge('mastra:flex mastra:gap-2 mastra:items-center');\nexport const ToolApprovalActions = ({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) => {\n return <div className={className || ToolApprovalActionsClass} {...props} />;\n};\n","import { ElementType } from 'react';\n\nexport const EntryClass = 'mastra:space-y-2';\nexport const Entry = ({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) => {\n return <div className={className || EntryClass} {...props} />;\n};\n\ntype EntryTitleProps = React.ComponentPropsWithoutRef<'div'> & {\n as?: ElementType;\n};\n\nexport const EntryTitleClass = 'mastra:font-mono mastra:text-sm mastra:text-text3';\nexport const EntryTitle = ({ className, as: Root = 'h3', ...props }: EntryTitleProps) => {\n return <Root className={className || EntryTitleClass} {...props} />;\n};\n","import type { JSX } from 'react';\nimport type { BundledLanguage } from 'shiki/bundle/web';\nimport { toJsxRuntime } from 'hast-util-to-jsx-runtime';\nimport { Fragment } from 'react';\nimport { jsx, jsxs } from 'react/jsx-runtime';\nimport { codeToHast } from 'shiki/bundle/web';\n\nexport async function highlight(code: string, lang: BundledLanguage) {\n const out = await codeToHast(code, {\n lang,\n theme: 'dracula-soft',\n });\n\n return toJsxRuntime(out, {\n Fragment,\n jsx,\n jsxs,\n }) as JSX.Element;\n}\n","import {\n TooltipTrigger as RTooltipTrigger,\n TooltipProvider as RTooltipProvider,\n Root as RTooltipRoot,\n TooltipPortal as RTooltipPortal,\n TooltipContent as RTooltipContent,\n TooltipTriggerProps,\n TooltipContentProps,\n} from '@radix-ui/react-tooltip';\n\nexport interface TooltipProps extends React.ComponentPropsWithoutRef<'div'> {\n children: React.ReactNode;\n}\n\nexport const Tooltip = ({ children }: TooltipProps) => {\n return (\n <RTooltipProvider>\n <RTooltipRoot>{children}</RTooltipRoot>\n </RTooltipProvider>\n );\n};\n\nexport const TooltipContentClass =\n 'mastra:bg-surface4 mastra:text-text6 mastra mastra:rounded-lg mastra:py-1 mastra:px-2 mastra:text-xs mastra:border mastra:border-border1 mastra-tooltip-enter';\nexport const TooltipContent = ({ children, className, ...props }: TooltipContentProps) => {\n return (\n <RTooltipPortal>\n <RTooltipContent className={className || TooltipContentClass} {...props}>\n {children}\n </RTooltipContent>\n </RTooltipPortal>\n );\n};\n\nexport const TooltipTrigger = (props: TooltipTriggerProps) => {\n return <RTooltipTrigger {...props} asChild />;\n};\n","import { Tooltip, TooltipContent, TooltipTrigger } from '../Tooltip/Tooltip';\nimport { Icon, IconProps } from '../Icon/Icon';\nimport { twMerge } from 'tailwind-merge';\n\nexport interface IconButtonProps extends React.ComponentPropsWithoutRef<'button'> {\n children: React.ReactNode;\n tooltip: React.ReactNode;\n size?: IconProps['size'];\n}\n\nexport const IconButtonClass =\n 'mastra:text-text3 mastra:hover:text-text6 mastra:active:text-text6 mastra:hover:bg-surface4 mastra:active:bg-surface5 mastra:rounded-md mastra:cursor-pointer';\n\nexport const IconButton = ({ children, tooltip, size = 'md', className, ...props }: IconButtonProps) => {\n return (\n <Tooltip>\n <TooltipTrigger>\n <button\n {...props}\n className={\n className || twMerge(IconButtonClass, size === 'md' && 'mastra:p-0.5', size === 'lg' && 'mastra:p-1')\n }\n >\n <Icon size={size}>{children}</Icon>\n </button>\n </TooltipTrigger>\n\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n );\n};\n","import { JSX, useLayoutEffect, useState } from 'react';\nimport { highlight } from './highlight';\nimport { BundledLanguage } from 'shiki/bundle/web';\nimport { IconButton } from '../IconButton/IconButton';\nimport { CheckIcon, CopyIcon } from 'lucide-react';\n\nexport interface CodeBlockProps {\n code: string;\n language: BundledLanguage;\n className?: string;\n cta?: React.ReactNode;\n}\n\nexport const CodeBlockClass =\n 'mastra:rounded-lg mastra:[&>pre]:p-4 mastra:overflow-hidden mastra:[&>pre]:!bg-surface4 mastra:[&>pre>code]:leading-5 mastra:relative';\n\nexport const CodeBlock = ({ code, language, className, cta }: CodeBlockProps) => {\n const [nodes, setNodes] = useState<JSX.Element | null>(null);\n\n useLayoutEffect(() => {\n void highlight(code, language).then(setNodes);\n }, [language]);\n\n return (\n <div className={className || CodeBlockClass}>\n {nodes ?? null}\n {cta}\n </div>\n );\n};\n\nexport interface CodeCopyButtonProps {\n code: string;\n}\n\nexport const CodeCopyButton = ({ code }: CodeCopyButtonProps) => {\n const [isCopied, setIsCopied] = useState(false);\n\n const handleCopy = () => {\n navigator.clipboard.writeText(code);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n };\n return (\n <div className=\"mastra:absolute mastra:top-2 mastra:right-2\">\n <IconButton tooltip=\"Copy\" onClick={handleCopy}>\n {isCopied ? <CheckIcon /> : <CopyIcon />}\n </IconButton>\n </div>\n );\n};\n","import React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport const AgentIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n <svg\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n className={twMerge('mastra-icon', className)}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.5 15C10.3565 15 12.137 14.2625 13.4497 12.9497C14.7625 11.637 15.5 9.85652 15.5 8C15.5 6.14348 14.7625 4.36301 13.4497 3.05025C12.137 1.7375 10.3565 1 8.5 1C6.64348 1 4.86301 1.7375 3.55025 3.05025C2.2375 4.36301 1.5 6.14348 1.5 8C1.5 9.85652 2.2375 11.637 3.55025 12.9497C4.86301 14.2625 6.64348 15 8.5 15ZM5.621 10.879L4.611 11.889C3.84179 11.1198 3.31794 10.1398 3.1057 9.07291C2.89346 8.00601 3.00236 6.90013 3.41864 5.89512C3.83491 4.89012 4.53986 4.03112 5.44434 3.42676C6.34881 2.8224 7.41219 2.49983 8.5 2.49983C9.58781 2.49983 10.6512 2.8224 11.5557 3.42676C12.4601 4.03112 13.1651 4.89012 13.5814 5.89512C13.9976 6.90013 14.1065 8.00601 13.8943 9.07291C13.6821 10.1398 13.1582 11.1198 12.389 11.889L11.379 10.879C11.1004 10.6003 10.7696 10.3792 10.4055 10.2284C10.0414 10.0776 9.6511 9.99995 9.257 10H7.743C7.3489 9.99995 6.95865 10.0776 6.59455 10.2284C6.23045 10.3792 5.89963 10.6003 5.621 10.879Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M8.5 4C7.96957 4 7.46086 4.21071 7.08579 4.58579C6.71071 4.96086 6.5 5.46957 6.5 6V6.5C6.5 7.03043 6.71071 7.53914 7.08579 7.91421C7.46086 8.28929 7.96957 8.5 8.5 8.5C9.03043 8.5 9.53914 8.28929 9.91421 7.91421C10.2893 7.53914 10.5 7.03043 10.5 6.5V6C10.5 5.46957 10.2893 4.96086 9.91421 4.58579C9.53914 4.21071 9.03043 4 8.5 4Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport const ToolsIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n <svg\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n className={twMerge('mastra-icon', className)}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.5605 1.42351C8.0791 0.904904 8.92215 0.906157 9.4395 1.42351L10.6922 2.67617C11.2108 3.19477 11.2095 4.03782 10.6922 4.55517L9.4395 5.80783C8.9209 6.32643 8.07785 6.32518 7.5605 5.80783L6.30784 4.55517C5.78923 4.03656 5.79049 3.19352 6.30784 2.67617L7.5605 1.42351ZM3.17618 5.80783C3.69478 5.28923 4.53782 5.29048 5.05517 5.80783L6.30784 7.0605C6.82644 7.5791 6.82519 8.42214 6.30784 8.93949L5.05517 10.1922C4.53657 10.7108 3.69353 10.7095 3.17618 10.1922L1.92351 8.93949C1.40491 8.42089 1.40616 7.57785 1.92351 7.0605L3.17618 5.80783ZM11.9448 5.80783C12.4634 5.28923 13.3065 5.29048 13.8238 5.80783L15.0765 7.0605C15.5951 7.5791 15.5938 8.42214 15.0765 8.93949L13.8238 10.1922C13.3052 10.7108 12.4622 10.7095 11.9448 10.1922L10.6922 8.93949C10.1736 8.42089 10.1748 7.57785 10.6922 7.0605L11.9448 5.80783ZM7.5605 10.1922C8.0791 9.67355 8.92215 9.67481 9.4395 10.1922L10.6922 11.4448C11.2108 11.9634 11.2095 12.8065 10.6922 13.3238L9.4395 14.5765C8.9209 15.0951 8.07785 15.0938 7.5605 14.5765L6.30784 13.3238C5.78923 12.8052 5.79049 11.9622 6.30784 11.4448L7.5605 10.1922Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport const WorkflowIcon = ({ className, ...props }: React.SVGProps<SVGSVGElement>) => (\n <svg\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n className={twMerge('mastra-icon', className)}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.24388 2.4018C6.24388 2.0394 6.53767 1.74561 6.90008 1.74561H10.0991C10.4614 1.74561 10.7553 2.0394 10.7553 2.4018V4.57546C10.7553 4.93787 10.4614 5.23166 10.0991 5.23166H9.31982V7.35469L10.0033 9.22664C9.90442 9.20146 9.80035 9.1761 9.6915 9.14986L9.62652 9.13422C9.30473 9.05687 8.92256 8.96501 8.61993 8.84491C8.5819 8.82981 8.54147 8.81292 8.49957 8.79391C8.45767 8.81292 8.41724 8.82981 8.3792 8.84491C8.07657 8.96501 7.6944 9.05687 7.37261 9.13422L7.30763 9.14986C7.19879 9.1761 7.09471 9.20146 6.99577 9.22664L7.67932 7.35469V5.23166H6.90008C6.53767 5.23166 6.24388 4.93787 6.24388 4.57546V2.4018ZM6.99577 9.22664C6.99577 9.22664 6.99578 9.22664 6.99577 9.22664L6.43283 10.7683H6.81806C7.18047 10.7683 7.47426 11.0622 7.47426 11.4245V13.5982C7.47426 13.9606 7.18047 14.2544 6.81806 14.2544H3.61909C3.25668 14.2544 2.96289 13.9606 2.96289 13.5982V11.4245C2.96289 11.0622 3.25668 10.7683 3.61909 10.7683H4.26617C4.2921 10.4663 4.32783 10.1494 4.37744 9.85171C4.43762 9.49063 4.52982 9.08135 4.68998 8.76102C4.93975 8.2615 5.44743 8.01751 5.7771 7.88788C6.14684 7.74249 6.57537 7.63889 6.92317 7.55505C7.24707 7.47696 7.49576 7.41679 7.67932 7.35469L6.99577 9.22664ZM6.43283 10.7683L6.99577 9.22664C6.75846 9.28705 6.55067 9.34646 6.37745 9.41458C6.22784 9.47341 6.1623 9.51712 6.14023 9.53254C6.09752 9.63631 6.04409 9.83055 5.99562 10.1214C5.96201 10.3231 5.93498 10.5439 5.91341 10.7683H6.43283ZM10.0033 9.22664L9.31982 7.35469C9.50338 7.41679 9.75206 7.47696 10.076 7.55505C10.4238 7.63889 10.8523 7.74249 11.2221 7.88788C11.5517 8.01751 12.0594 8.2615 12.3091 8.76102C12.4693 9.08135 12.5615 9.49063 12.6217 9.85171C12.6713 10.1494 12.707 10.4663 12.733 10.7683H13.38C13.7424 10.7683 14.0362 11.0622 14.0362 11.4245V13.5982C14.0362 13.9606 13.7424 14.2544 13.38 14.2544H10.1811C9.81867 14.2544 9.52488 13.9606 9.52488 13.5982V11.4245C9.52488 11.0622 9.81867 10.7683 10.1811 10.7683H10.5663L10.0033 9.22664ZM10.0033 9.22664L10.5663 10.7683H11.0857C11.0642 10.5439 11.0372 10.3231 11.0035 10.1214C10.9551 9.83055 10.9016 9.63631 10.8589 9.53254C10.8369 9.51712 10.7713 9.47341 10.6217 9.41458C10.4485 9.34646 10.2407 9.28705 10.0033 9.22664Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import { Dot } from 'lucide-react';\nimport { Icon } from '../Icon/Icon';\nimport { HTMLAttributes, useEffect, useRef } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport interface MessageProps extends HTMLAttributes<HTMLDivElement> {\n position: 'left' | 'right';\n}\n\nexport const MessageClass = 'mastra:flex mastra:flex-col mastra:w-full mastra:py-4 mastra:gap-2 mastra:group';\nexport const Message = ({ position, className, children, ...props }: MessageProps) => {\n return (\n <div\n className={\n className ||\n twMerge(\n MessageClass,\n position === 'left'\n ? ''\n : 'mastra:items-end mastra:[&_.mastra-message-content]:bg-surface4 mastra:[&_.mastra-message-content]:px-4',\n )\n }\n {...props}\n >\n {children}\n </div>\n );\n};\n\nexport interface MessageContentProps extends HTMLAttributes<HTMLDivElement> {\n isStreaming?: boolean;\n}\nexport const MessageContentClass =\n 'mastra:max-w-4/5 mastra:py-2 mastra:text-text6 mastra:rounded-lg mastra-message-content mastra:text-md';\nexport const MessageContent = ({ children, className, isStreaming, ...props }: MessageContentProps) => {\n return (\n <div className={className || MessageContentClass} {...props}>\n {children}\n {isStreaming && <MessageStreaming />}\n </div>\n );\n};\n\nexport const MessageActionsClass =\n 'mastra:gap-2 mastra:flex mastra:opacity-0 mastra:group-hover:opacity-100 mastra:group-focus-within:opacity-100 mastra:items-center';\nexport const MessageActions = ({ children, className, ...props }: HTMLAttributes<HTMLDivElement>) => {\n return (\n <div className={className || MessageActionsClass} {...props}>\n {children}\n </div>\n );\n};\n\nexport const MessageUsagesClass = 'mastra:flex mastra:gap-2 mastra:items-center';\nexport const MessageUsages = ({ children, className, ...props }: HTMLAttributes<HTMLDivElement>) => {\n return (\n <div className={className || MessageUsagesClass} {...props}>\n {children}\n </div>\n );\n};\n\nexport const MessageUsageClass =\n 'mastra:flex mastra:gap-2 mastra:items-center mastra:font-mono mastra:text-xs mastra:bg-surface3 mastra:rounded-lg mastra:px-2 mastra:py-1';\nexport const MessageUsage = ({ children, className, ...props }: HTMLAttributes<HTMLDListElement>) => {\n return (\n <dl className={className || MessageUsageClass} {...props}>\n {children}\n </dl>\n );\n};\n\nexport const MessageUsageEntryClass = 'mastra:text-text3 mastra:text-xs mastra:flex mastra:gap-1 mastra:items-center';\nexport const MessageUsageEntry = ({ children, className, ...props }: HTMLAttributes<HTMLSpanElement>) => {\n return (\n <dt className={className || MessageUsageEntryClass} {...props}>\n {children}\n </dt>\n );\n};\n\nexport const MessageUsageValueClass = 'mastra:text-text6 mastra:text-xs';\nexport const MessageUsageValue = ({ children, className, ...props }: HTMLAttributes<HTMLSpanElement>) => {\n return (\n <dd className={className || MessageUsageValueClass} {...props}>\n {children}\n </dd>\n );\n};\n\nexport const MessageListClass = 'mastra:overflow-y-auto mastra:h-full mastra-list';\n\nexport const MessageList = ({ children, className, ...props }: HTMLAttributes<HTMLDivElement>) => {\n const listRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n // Force scroll to bottom after DOM update\n const scrollToBottom = () => {\n if (!listRef.current) return;\n listRef.current.scrollTo({ top: listRef.current.scrollHeight, behavior: 'smooth' });\n };\n\n requestAnimationFrame(scrollToBottom);\n });\n\n return (\n <div className={className || MessageListClass} {...props} ref={listRef}>\n {children}\n </div>\n );\n};\n\nexport const MessageStreamingClass =\n 'mastra:inline-block mastra:w-[2px] mastra:h-[1em] mastra:bg-text5 mastra:ml-0.5 mastra:align-text-bottom mastra:animate-pulse';\n\nexport const MessageStreaming = ({ className, ...props }: HTMLAttributes<HTMLSpanElement>) => {\n return <span className={className || MessageStreamingClass} {...props} />;\n};\n"],"names":["message","messages","uuid","RTooltipProvider","RTooltipRoot","RTooltipPortal","RTooltipContent","RTooltipTrigger"],"mappings":"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"}
|