@mastra/react 0.0.0-unified-sidebar-20251010130811 → 0.0.0-vnext-20251104230439

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.
Files changed (48) hide show
  1. package/CHANGELOG.md +162 -2
  2. package/dist/index.cjs +1818 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/{index.es.js → index.js} +782 -128
  5. package/dist/index.js.map +1 -0
  6. package/dist/react.css +719 -0
  7. package/dist/src/agent/hooks.d.ts +23 -6
  8. package/dist/src/agent/types.d.ts +1 -0
  9. package/dist/src/index.d.ts +1 -0
  10. package/dist/src/lib/ai-sdk/index.d.ts +1 -0
  11. package/dist/src/lib/ai-sdk/memory/resolveInitialMessages.d.ts +10 -0
  12. package/dist/src/lib/ai-sdk/memory/resolveInitialMessages.test.d.ts +1 -0
  13. package/dist/src/lib/ai-sdk/transformers/AISdkNetworkTransformer.d.ts +1 -0
  14. package/dist/src/lib/ai-sdk/transformers/AISdkNetworkTransformer.test.d.ts +1 -0
  15. package/dist/src/lib/ai-sdk/types.d.ts +7 -0
  16. package/dist/src/lib/ai-sdk/utils/fromCoreUserMessageToUIMessage.d.ts +10 -0
  17. package/dist/src/lib/ai-sdk/utils/fromCoreUserMessageToUIMessage.test.d.ts +1 -0
  18. package/dist/src/lib/ai-sdk/utils/toUIMessage.test.d.ts +1 -0
  19. package/dist/src/ui/Code/Code.d.ts +13 -0
  20. package/dist/src/ui/Code/highlight.d.ts +3 -0
  21. package/dist/src/ui/Code/index.d.ts +1 -0
  22. package/dist/src/ui/Entity/Entity.d.ts +13 -0
  23. package/dist/src/ui/Entity/Entity.stories.d.ts +22 -0
  24. package/dist/src/ui/Entity/Entry.d.ts +9 -0
  25. package/dist/src/ui/Entity/ToolApproval.d.ts +10 -0
  26. package/dist/src/ui/Entity/context.d.ts +10 -0
  27. package/dist/src/ui/Entity/index.d.ts +4 -0
  28. package/dist/src/ui/Entity/types.d.ts +1 -0
  29. package/dist/src/ui/Icon/Icon.d.ts +11 -0
  30. package/dist/src/ui/Icon/index.d.ts +1 -0
  31. package/dist/src/ui/IconButton/IconButton.d.ts +8 -0
  32. package/dist/src/ui/IconButton/IconButton.stories.d.ts +12 -0
  33. package/dist/src/ui/IconButton/index.d.ts +1 -0
  34. package/dist/src/ui/Icons/AgentIcon.d.ts +2 -0
  35. package/dist/src/ui/Icons/ToolsIcon.d.ts +2 -0
  36. package/dist/src/ui/Icons/WorkflowIcon.d.ts +2 -0
  37. package/dist/src/ui/Icons/index.d.ts +3 -0
  38. package/dist/src/ui/Message/Message.d.ts +25 -0
  39. package/dist/src/ui/Message/Message.stories.d.ts +13 -0
  40. package/dist/src/ui/Message/index.d.ts +1 -0
  41. package/dist/src/ui/Tooltip/Tooltip.d.ts +8 -0
  42. package/dist/src/ui/Tooltip/Tooltip.stories.d.ts +12 -0
  43. package/dist/src/ui/Tooltip/index.d.ts +1 -0
  44. package/dist/src/ui/index.d.ts +7 -0
  45. package/package.json +46 -11
  46. package/dist/index.cjs.js +0 -1109
  47. package/dist/index.cjs.js.map +0 -1
  48. package/dist/index.es.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs.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/transformers/AISdkNetworkTransformer.ts","../src/lib/ai-sdk/memory/resolveInitialMessages.ts","../src/agent/hooks.ts"],"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 { 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-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 => part.type === 'dynamic-tool' && 'toolCallId' in part && part.toolCallId === chunk.payload.toolCallId,\n );\n\n if (toolPartIndex !== -1) {\n const toolPart = parts[toolPartIndex];\n\n if (toolPart.type === 'dynamic-tool') {\n if (chunk.payload.isError) {\n parts[toolPartIndex] = {\n type: 'dynamic-tool',\n toolName: toolPart.toolName,\n toolCallId: toolPart.toolCallId,\n state: 'output-error',\n input: toolPart.input,\n errorText: String(chunk.payload.result),\n callProviderMetadata: chunk.payload.providerMetadata,\n };\n } else {\n const isWorkflow = Boolean((chunk.payload.result as any)?.result?.steps);\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: isWorkflow ? (chunk.payload.result as any)?.result : chunk.payload.result,\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 => 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 // 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.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 ...toolPart,\n output: updatedWorkflowState as any,\n };\n } else {\n // Handle regular tool output\n const currentOutput = (toolPart.output as any) || [];\n const existingOutput = Array.isArray(currentOutput) ? currentOutput : [];\n\n parts[toolPartIndex] = {\n ...toolPart,\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 '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 (part.type === 'text' && part.state === 'streaming') {\n return { ...part, state: 'done' as const };\n }\n if (part.type === 'reasoning' && part.state === 'streaming') {\n return { ...part, state: 'done' as const };\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: chunk.payload.error as string,\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","import { ThreadMessageLike, MessageStatus, CompleteAttachment } from '@assistant-ui/react';\nimport { MastraUIMessage } from '../types';\nimport { ReadonlyJSONObject } from '@mastra/core/stream';\n\n/**\n * Extended type for MastraUIMessage that may include additional properties\n * from different sources (generate, toUIMessage, toNetworkUIMessage)\n */\ntype ExtendedMastraUIMessage = MastraUIMessage & {\n createdAt?: Date;\n metadata?: Record<string, unknown>;\n experimental_attachments?: readonly CompleteAttachment[];\n};\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 return {\n type: 'file',\n mimeType: part.mediaType,\n data: part.url, // Use URL as data source\n metadata: message.metadata,\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 // 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 { 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';\n\nexport class AISdkNetworkTransformer implements Transformer<NetworkChunkType> {\n transform({ chunk, conversation, metadata }: TransformerArgs<NetworkChunkType>): MastraUIMessage[] {\n const newConversation = [...conversation];\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 newMessage: MastraUIMessage = {\n id: `network-execution-event-step-finish-${chunk.runId}-${Date.now()}`,\n role: 'assistant',\n parts: [\n {\n type: 'text',\n text: chunk.payload?.result || '',\n state: 'done',\n },\n ],\n metadata,\n };\n\n return [...newConversation, newMessage];\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 { 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(part => part.type === 'text' && part.text.includes('\"isNetwork\":true'));\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\n console.log('json', json);\n\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 // Return original message if it's not a network message\n return message;\n });\n};\n","import { ModelSettings } from './types';\nimport { useMastraClient } from '@/mastra-client-context';\nimport { UIMessage } from '@ai-sdk/react';\nimport { MastraUIMessage } from '../lib/ai-sdk';\nimport { MastraClient } from '@mastra/client-js';\nimport { CoreUserMessage } from '@mastra/core/llm';\nimport { RuntimeContext } from '@mastra/core/runtime-context';\nimport { ChunkType, NetworkChunkType } from '@mastra/core/stream';\nimport { useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport { toUIMessage } from '@/lib/ai-sdk';\nimport { AISdkNetworkTransformer } from '@/lib/ai-sdk/transformers/AISdkNetworkTransformer';\nimport { resolveInitialMessages } from '@/lib/ai-sdk/memory/resolveInitialMessages';\n\nexport interface MastraChatProps {\n agentId: string;\n initializeMessages?: () => MastraUIMessage[];\n}\n\ninterface SharedArgs {\n coreUserMessages: CoreUserMessage[];\n runtimeContext?: RuntimeContext;\n threadId?: string;\n modelSettings?: ModelSettings;\n signal?: AbortSignal;\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, initializeMessages }: MastraChatProps) => {\n const [messages, setMessages] = useState<MastraUIMessage[]>(() =>\n resolveInitialMessages(initializeMessages?.() || []),\n );\n\n const baseClient = useMastraClient();\n const [isRunning, setIsRunning] = useState(false);\n\n const generate = async ({\n coreUserMessages,\n runtimeContext,\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: agentId,\n maxSteps,\n modelSettings: {\n frequencyPenalty,\n presencePenalty,\n maxRetries,\n maxOutputTokens: maxTokens,\n temperature,\n topK,\n topP,\n },\n instructions,\n runtimeContext,\n ...(threadId ? { threadId, 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, runtimeContext, 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 } = 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 response = await agent.stream({\n messages: coreUserMessages,\n runId: agentId,\n maxSteps,\n modelSettings: {\n frequencyPenalty,\n presencePenalty,\n maxRetries,\n maxOutputTokens: maxTokens,\n temperature,\n topK,\n topP,\n },\n instructions,\n runtimeContext,\n ...(threadId ? { threadId, resourceId: agentId } : {}),\n providerOptions: providerOptions as any,\n });\n\n if (!response.body) {\n setIsRunning(false);\n throw new Error('[Stream] No response body');\n }\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 flushSync(() => {\n setMessages(prev => toUIMessage({ chunk, conversation: prev, metadata: { mode: 'stream' } }));\n });\n\n onChunk?.(chunk);\n },\n });\n\n setIsRunning(false);\n };\n\n const network = async ({\n coreUserMessages,\n runtimeContext,\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 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: agentId,\n runtimeContext,\n ...(threadId ? { thread: threadId, resourceId: agentId } : {}),\n });\n\n const transformer = new AISdkNetworkTransformer();\n\n await response.processDataStream({\n onChunk: async (chunk: NetworkChunkType) => {\n flushSync(() => {\n setMessages(prev => transformer.transform({ chunk, conversation: prev, metadata: { mode: 'network' } }));\n });\n\n onNetworkChunk?.(chunk);\n },\n });\n\n setIsRunning(false);\n };\n\n return {\n network,\n stream,\n generate,\n isRunning,\n messages,\n setMessages,\n cancelRun: () => setIsRunning(false),\n };\n};\n"],"names":["createContext","useContext","MastraClient","jsx","message","useState","flushSync"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.es.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/transformers/AISdkNetworkTransformer.ts","../src/lib/ai-sdk/memory/resolveInitialMessages.ts","../src/agent/hooks.ts"],"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 { 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-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 => part.type === 'dynamic-tool' && 'toolCallId' in part && part.toolCallId === chunk.payload.toolCallId,\n );\n\n if (toolPartIndex !== -1) {\n const toolPart = parts[toolPartIndex];\n\n if (toolPart.type === 'dynamic-tool') {\n if (chunk.payload.isError) {\n parts[toolPartIndex] = {\n type: 'dynamic-tool',\n toolName: toolPart.toolName,\n toolCallId: toolPart.toolCallId,\n state: 'output-error',\n input: toolPart.input,\n errorText: String(chunk.payload.result),\n callProviderMetadata: chunk.payload.providerMetadata,\n };\n } else {\n const isWorkflow = Boolean((chunk.payload.result as any)?.result?.steps);\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: isWorkflow ? (chunk.payload.result as any)?.result : chunk.payload.result,\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 => 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 // 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.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 ...toolPart,\n output: updatedWorkflowState as any,\n };\n } else {\n // Handle regular tool output\n const currentOutput = (toolPart.output as any) || [];\n const existingOutput = Array.isArray(currentOutput) ? currentOutput : [];\n\n parts[toolPartIndex] = {\n ...toolPart,\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 '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 (part.type === 'text' && part.state === 'streaming') {\n return { ...part, state: 'done' as const };\n }\n if (part.type === 'reasoning' && part.state === 'streaming') {\n return { ...part, state: 'done' as const };\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: chunk.payload.error as string,\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","import { ThreadMessageLike, MessageStatus, CompleteAttachment } from '@assistant-ui/react';\nimport { MastraUIMessage } from '../types';\nimport { ReadonlyJSONObject } from '@mastra/core/stream';\n\n/**\n * Extended type for MastraUIMessage that may include additional properties\n * from different sources (generate, toUIMessage, toNetworkUIMessage)\n */\ntype ExtendedMastraUIMessage = MastraUIMessage & {\n createdAt?: Date;\n metadata?: Record<string, unknown>;\n experimental_attachments?: readonly CompleteAttachment[];\n};\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 return {\n type: 'file',\n mimeType: part.mediaType,\n data: part.url, // Use URL as data source\n metadata: message.metadata,\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 // 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 { 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';\n\nexport class AISdkNetworkTransformer implements Transformer<NetworkChunkType> {\n transform({ chunk, conversation, metadata }: TransformerArgs<NetworkChunkType>): MastraUIMessage[] {\n const newConversation = [...conversation];\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 newMessage: MastraUIMessage = {\n id: `network-execution-event-step-finish-${chunk.runId}-${Date.now()}`,\n role: 'assistant',\n parts: [\n {\n type: 'text',\n text: chunk.payload?.result || '',\n state: 'done',\n },\n ],\n metadata,\n };\n\n return [...newConversation, newMessage];\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 { 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(part => part.type === 'text' && part.text.includes('\"isNetwork\":true'));\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\n console.log('json', json);\n\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 // Return original message if it's not a network message\n return message;\n });\n};\n","import { ModelSettings } from './types';\nimport { useMastraClient } from '@/mastra-client-context';\nimport { UIMessage } from '@ai-sdk/react';\nimport { MastraUIMessage } from '../lib/ai-sdk';\nimport { MastraClient } from '@mastra/client-js';\nimport { CoreUserMessage } from '@mastra/core/llm';\nimport { RuntimeContext } from '@mastra/core/runtime-context';\nimport { ChunkType, NetworkChunkType } from '@mastra/core/stream';\nimport { useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport { toUIMessage } from '@/lib/ai-sdk';\nimport { AISdkNetworkTransformer } from '@/lib/ai-sdk/transformers/AISdkNetworkTransformer';\nimport { resolveInitialMessages } from '@/lib/ai-sdk/memory/resolveInitialMessages';\n\nexport interface MastraChatProps {\n agentId: string;\n initializeMessages?: () => MastraUIMessage[];\n}\n\ninterface SharedArgs {\n coreUserMessages: CoreUserMessage[];\n runtimeContext?: RuntimeContext;\n threadId?: string;\n modelSettings?: ModelSettings;\n signal?: AbortSignal;\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, initializeMessages }: MastraChatProps) => {\n const [messages, setMessages] = useState<MastraUIMessage[]>(() =>\n resolveInitialMessages(initializeMessages?.() || []),\n );\n\n const baseClient = useMastraClient();\n const [isRunning, setIsRunning] = useState(false);\n\n const generate = async ({\n coreUserMessages,\n runtimeContext,\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: agentId,\n maxSteps,\n modelSettings: {\n frequencyPenalty,\n presencePenalty,\n maxRetries,\n maxOutputTokens: maxTokens,\n temperature,\n topK,\n topP,\n },\n instructions,\n runtimeContext,\n ...(threadId ? { threadId, 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, runtimeContext, 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 } = 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 response = await agent.stream({\n messages: coreUserMessages,\n runId: agentId,\n maxSteps,\n modelSettings: {\n frequencyPenalty,\n presencePenalty,\n maxRetries,\n maxOutputTokens: maxTokens,\n temperature,\n topK,\n topP,\n },\n instructions,\n runtimeContext,\n ...(threadId ? { threadId, resourceId: agentId } : {}),\n providerOptions: providerOptions as any,\n });\n\n if (!response.body) {\n setIsRunning(false);\n throw new Error('[Stream] No response body');\n }\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 flushSync(() => {\n setMessages(prev => toUIMessage({ chunk, conversation: prev, metadata: { mode: 'stream' } }));\n });\n\n onChunk?.(chunk);\n },\n });\n\n setIsRunning(false);\n };\n\n const network = async ({\n coreUserMessages,\n runtimeContext,\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 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: agentId,\n runtimeContext,\n ...(threadId ? { thread: threadId, resourceId: agentId } : {}),\n });\n\n const transformer = new AISdkNetworkTransformer();\n\n await response.processDataStream({\n onChunk: async (chunk: NetworkChunkType) => {\n flushSync(() => {\n setMessages(prev => transformer.transform({ chunk, conversation: prev, metadata: { mode: 'network' } }));\n });\n\n onNetworkChunk?.(chunk);\n },\n });\n\n setIsRunning(false);\n };\n\n return {\n network,\n stream,\n generate,\n isRunning,\n messages,\n setMessages,\n cancelRun: () => setIsRunning(false),\n };\n};\n"],"names":["message"],"mappings":"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"}