@mastra/react 1.13.0-alpha.3 → 1.13.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{accumulator-BmD8-x9I.cjs → accumulator-Bjfckb5t.cjs} +5 -9
- package/dist/{accumulator-BmD8-x9I.cjs.map → accumulator-Bjfckb5t.cjs.map} +1 -1
- package/dist/{accumulator-D9jAph99.js → accumulator-DysrPe6U.js} +5 -9
- package/dist/{accumulator-D9jAph99.js.map → accumulator-DysrPe6U.js.map} +1 -1
- package/dist/chat/index.cjs +1 -1
- package/dist/chat/index.js +1 -1
- package/dist/{combine-by-ids-CcaZKGT9.js → combine-by-ids-C-0oe4eH.js} +2 -3
- package/dist/{combine-by-ids-CcaZKGT9.js.map → combine-by-ids-C-0oe4eH.js.map} +1 -1
- package/dist/{combine-by-ids-D_lp6Dvq.cjs → combine-by-ids-ERVPXXBi.cjs} +2 -3
- package/dist/{combine-by-ids-D_lp6Dvq.cjs.map → combine-by-ids-ERVPXXBi.cjs.map} +1 -1
- package/dist/{experiments-CJw1N3FB.cjs → experiments-Duv0RgkM.cjs} +12 -19
- package/dist/{experiments-CJw1N3FB.cjs.map → experiments-Duv0RgkM.cjs.map} +1 -1
- package/dist/{experiments-B7vRMK5T.js → experiments-DyecjEut.js} +12 -19
- package/dist/{experiments-B7vRMK5T.js.map → experiments-DyecjEut.js.map} +1 -1
- package/dist/{feedback-refetch-interval-XD5FVc2k.cjs → feedback-refetch-interval-BBcT9r8s.cjs} +3 -4
- package/dist/{feedback-refetch-interval-XD5FVc2k.cjs.map → feedback-refetch-interval-BBcT9r8s.cjs.map} +1 -1
- package/dist/{feedback-refetch-interval-DLHzQoVV.js → feedback-refetch-interval-C12Nzb2r.js} +3 -4
- package/dist/{feedback-refetch-interval-DLHzQoVV.js.map → feedback-refetch-interval-C12Nzb2r.js.map} +1 -1
- package/dist/hooks/agents/index.cjs +19 -37
- package/dist/hooks/agents/index.cjs.map +1 -1
- package/dist/hooks/agents/index.js +19 -37
- package/dist/hooks/agents/index.js.map +1 -1
- package/dist/hooks/auth/index.cjs +11 -21
- package/dist/hooks/auth/index.cjs.map +1 -1
- package/dist/hooks/auth/index.js +11 -21
- package/dist/hooks/auth/index.js.map +1 -1
- package/dist/hooks/capabilities/index.cjs +11 -21
- package/dist/hooks/capabilities/index.cjs.map +1 -1
- package/dist/hooks/capabilities/index.js +11 -21
- package/dist/hooks/capabilities/index.js.map +1 -1
- package/dist/hooks/configuration/index.cjs +2 -3
- package/dist/hooks/configuration/index.js +2 -3
- package/dist/hooks/datasets/index.cjs +12 -21
- package/dist/hooks/datasets/index.cjs.map +1 -1
- package/dist/hooks/datasets/index.js +12 -21
- package/dist/hooks/datasets/index.js.map +1 -1
- package/dist/hooks/embedders/index.cjs +2 -3
- package/dist/hooks/embedders/index.js +2 -3
- package/dist/hooks/experiments/index.cjs +1 -1
- package/dist/hooks/experiments/index.js +1 -1
- package/dist/hooks/feedback/index.cjs +3 -4
- package/dist/hooks/feedback/index.js +3 -4
- package/dist/hooks/llm/index.cjs +2 -3
- package/dist/hooks/llm/index.js +2 -3
- package/dist/hooks/logs/index.cjs +4 -5
- package/dist/hooks/logs/index.js +4 -5
- package/dist/hooks/mcps/index.cjs +8 -15
- package/dist/hooks/mcps/index.cjs.map +1 -1
- package/dist/hooks/mcps/index.js +8 -15
- package/dist/hooks/mcps/index.js.map +1 -1
- package/dist/hooks/memory/index.cjs +5 -9
- package/dist/hooks/memory/index.cjs.map +1 -1
- package/dist/hooks/memory/index.js +5 -9
- package/dist/hooks/memory/index.js.map +1 -1
- package/dist/hooks/metrics/index.cjs +19 -36
- package/dist/hooks/metrics/index.cjs.map +1 -1
- package/dist/hooks/metrics/index.js +19 -36
- package/dist/hooks/metrics/index.js.map +1 -1
- package/dist/hooks/processors/index.cjs +2 -3
- package/dist/hooks/processors/index.js +2 -3
- package/dist/hooks/prompt-blocks/index.cjs +3 -5
- package/dist/hooks/prompt-blocks/index.cjs.map +1 -1
- package/dist/hooks/prompt-blocks/index.js +3 -5
- package/dist/hooks/prompt-blocks/index.js.map +1 -1
- package/dist/hooks/query/index.cjs +2 -3
- package/dist/hooks/query/index.js +2 -3
- package/dist/hooks/review/index.cjs +4 -6
- package/dist/hooks/review/index.cjs.map +1 -1
- package/dist/hooks/review/index.js +4 -6
- package/dist/hooks/review/index.js.map +1 -1
- package/dist/hooks/schedules/index.cjs +6 -10
- package/dist/hooks/schedules/index.cjs.map +1 -1
- package/dist/hooks/schedules/index.js +6 -10
- package/dist/hooks/schedules/index.js.map +1 -1
- package/dist/hooks/scores/index.cjs +8 -13
- package/dist/hooks/scores/index.cjs.map +1 -1
- package/dist/hooks/scores/index.js +8 -13
- package/dist/hooks/scores/index.js.map +1 -1
- package/dist/hooks/templates/index.cjs +2 -3
- package/dist/hooks/templates/index.js +2 -3
- package/dist/hooks/tool-providers/index.cjs +10 -19
- package/dist/hooks/tool-providers/index.cjs.map +1 -1
- package/dist/hooks/tool-providers/index.js +10 -19
- package/dist/hooks/tool-providers/index.js.map +1 -1
- package/dist/hooks/tools/index.cjs +3 -5
- package/dist/hooks/tools/index.cjs.map +1 -1
- package/dist/hooks/tools/index.js +3 -5
- package/dist/hooks/tools/index.js.map +1 -1
- package/dist/hooks/traces/index.cjs +71 -54
- package/dist/hooks/traces/index.cjs.map +1 -1
- package/dist/hooks/traces/index.d.ts +2 -0
- package/dist/hooks/traces/index.d.ts.map +1 -1
- package/dist/hooks/traces/index.js +70 -55
- package/dist/hooks/traces/index.js.map +1 -1
- package/dist/hooks/traces/use-span-aggregate.d.ts +16 -0
- package/dist/hooks/traces/use-span-aggregate.d.ts.map +1 -0
- package/dist/hooks/traces/use-trace-aggregate.d.ts +17 -0
- package/dist/hooks/traces/use-trace-aggregate.d.ts.map +1 -0
- package/dist/hooks/traces/use-trace-column-preferences-storage-key.d.ts +4 -2
- package/dist/hooks/traces/use-trace-column-preferences-storage-key.d.ts.map +1 -1
- package/dist/hooks/vectors/index.cjs +2 -3
- package/dist/hooks/vectors/index.js +2 -3
- package/dist/hooks/voice/index.cjs +3 -4
- package/dist/hooks/voice/index.js +3 -4
- package/dist/hooks/workflows/index.cjs +7 -11
- package/dist/hooks/workflows/index.cjs.map +1 -1
- package/dist/hooks/workflows/index.js +7 -11
- package/dist/hooks/workflows/index.js.map +1 -1
- package/dist/hooks/workspace/index.cjs +12 -22
- package/dist/hooks/workspace/index.cjs.map +1 -1
- package/dist/hooks/workspace/index.js +12 -22
- package/dist/hooks/workspace/index.js.map +1 -1
- package/dist/{hooks-XYsmqFCz.cjs → hooks-Bt15IwzP.cjs} +6 -9
- package/dist/{hooks-XYsmqFCz.cjs.map → hooks-Bt15IwzP.cjs.map} +1 -1
- package/dist/{hooks-DG-Y1KFe.js → hooks-Btt7PyI-.js} +6 -9
- package/dist/{hooks-DG-Y1KFe.js.map → hooks-Btt7PyI-.js.map} +1 -1
- package/dist/{hooks-BfysjY_K.js → hooks-CEikbhrN.js} +9 -15
- package/dist/{hooks-BfysjY_K.js.map → hooks-CEikbhrN.js.map} +1 -1
- package/dist/{hooks-BbUMSab8.cjs → hooks-D6LDSEcm.cjs} +9 -15
- package/dist/{hooks-BbUMSab8.cjs.map → hooks-D6LDSEcm.cjs.map} +1 -1
- package/dist/index.cjs +7 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +7 -9
- package/dist/index.js.map +1 -1
- package/dist/{map-CDv4fbu4.js → map-5-4U5rwA.js} +2 -3
- package/dist/{map-CDv4fbu4.js.map → map-5-4U5rwA.js.map} +1 -1
- package/dist/{map-wjmL1y5O.cjs → map-BGoWBTGy.cjs} +2 -3
- package/dist/{map-wjmL1y5O.cjs.map → map-BGoWBTGy.cjs.map} +1 -1
- package/dist/{mastra-client-context-Bx_g84YB.js → mastra-client-context-DQ5z_ze9.js} +2 -3
- package/dist/{mastra-client-context-Bx_g84YB.js.map → mastra-client-context-DQ5z_ze9.js.map} +1 -1
- package/dist/{mastra-client-context-DzX3f0RF.cjs → mastra-client-context-DX8wJM9p.cjs} +2 -3
- package/dist/{mastra-client-context-DzX3f0RF.cjs.map → mastra-client-context-DX8wJM9p.cjs.map} +1 -1
- package/dist/{query-utils-CcrChYgz.cjs → query-utils-BVgE_xxj.cjs} +2 -3
- package/dist/{query-utils-CcrChYgz.cjs.map → query-utils-BVgE_xxj.cjs.map} +1 -1
- package/dist/{query-utils-D1NgFnWU.js → query-utils-DvMERIwf.js} +2 -3
- package/dist/{query-utils-D1NgFnWU.js.map → query-utils-DvMERIwf.js.map} +1 -1
- package/dist/ui/index.cjs +15 -30
- package/dist/ui/index.cjs.map +1 -1
- package/dist/ui/index.js +14 -28
- package/dist/ui/index.js.map +1 -1
- package/dist/{use-in-view-B6eJO9Zi.cjs → use-in-view-BxdrrnCw.cjs} +2 -3
- package/dist/{use-in-view-B6eJO9Zi.cjs.map → use-in-view-BxdrrnCw.cjs.map} +1 -1
- package/dist/{use-in-view-C9sYPGRm.js → use-in-view-CyjKdplM.js} +2 -3
- package/dist/{use-in-view-C9sYPGRm.js.map → use-in-view-CyjKdplM.js.map} +1 -1
- package/dist/{voice-BOtUdMi8.cjs → voice-Didej2E1.cjs} +5 -8
- package/dist/{voice-BOtUdMi8.cjs.map → voice-Didej2E1.cjs.map} +1 -1
- package/dist/{voice-DgirjEyH.js → voice-ugGu7VyA.js} +5 -8
- package/dist/{voice-DgirjEyH.js.map → voice-ugGu7VyA.js.map} +1 -1
- package/package.json +19 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-XYsmqFCz.cjs","names":["useState","useRef","useCallback","typedError","useMastraClient","useState","useRef","useCallback","mapWorkflowStreamChunkToWatchResult","useMastraClient"],"sources":["../src/lib/use-mutation.ts","../src/workflows/use-stream-workflow.ts","../src/workflows/hooks.ts"],"sourcesContent":["import { useState, useCallback, useRef } from 'react';\n\n/**\n * Represents the state of a mutation operation.\n * Mimics the essential return type of react-query's useMutation.\n */\nexport interface MutationState<TData, TError extends Error, TVariables> {\n /** Execute the mutation without waiting for the result */\n mutate: (variables: TVariables) => void;\n /** Execute the mutation and return a promise with the result */\n mutateAsync: (variables: TVariables) => Promise<TData>;\n /** Whether the mutation is currently executing */\n isPending: boolean;\n /** Whether the mutation completed successfully */\n isSuccess: boolean;\n /** Whether the mutation failed with an error */\n isError: boolean;\n /** The error if the mutation failed, null otherwise */\n error: TError | null;\n /** The data returned by the mutation if successful */\n data: TData | undefined;\n /** Reset the mutation state to initial values */\n reset: () => void;\n}\n\n/**\n * Internal helper hook that provides mutation-like functionality without react-query.\n * Tracks pending, success, and error states for async operations.\n */\nexport function useMutation<TData, TError extends Error, TVariables>(\n mutationFn: (variables: TVariables) => Promise<TData>,\n): MutationState<TData, TError, TVariables> {\n const [isPending, setIsPending] = useState(false);\n const [isSuccess, setIsSuccess] = useState(false);\n const [isError, setIsError] = useState(false);\n const [error, setError] = useState<TError | null>(null);\n const [data, setData] = useState<TData | undefined>(undefined);\n\n const mutationFnRef = useRef(mutationFn);\n mutationFnRef.current = mutationFn;\n\n const reset = useCallback(() => {\n setIsPending(false);\n setIsSuccess(false);\n setIsError(false);\n setError(null);\n setData(undefined);\n }, []);\n\n const mutateAsync = useCallback(async (variables: TVariables): Promise<TData> => {\n setIsPending(true);\n setIsSuccess(false);\n setIsError(false);\n setError(null);\n\n try {\n const result = await mutationFnRef.current(variables);\n setData(result);\n setIsSuccess(true);\n return result;\n } catch (err) {\n const typedError = err as TError;\n setError(typedError);\n setIsError(true);\n throw err;\n } finally {\n setIsPending(false);\n }\n }, []);\n\n const mutate = useCallback(\n (variables: TVariables) => {\n mutateAsync(variables).catch(() => {\n // Error is already captured in state\n });\n },\n [mutateAsync],\n );\n\n return {\n mutate,\n mutateAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data,\n reset,\n };\n}\n","import type { StreamVNextChunkType } from '@mastra/client-js';\nimport { useState, useRef, useEffect, useCallback } from 'react';\nimport { mapWorkflowStreamChunkToWatchResult } from '../lib/mastra-db';\nimport { useMutation } from '../lib/use-mutation';\nimport { useMastraClient } from '../mastra-client-context';\nimport type {\n UseStreamWorkflowParams,\n WorkflowStreamResult,\n StreamWorkflowParams,\n ObserveWorkflowStreamParams,\n ResumeWorkflowStreamParams,\n TimeTravelWorkflowStreamParams,\n} from './types';\n\ntype StreamOperation = {\n controller: AbortController;\n reader?: ReadableStreamDefaultReader<StreamVNextChunkType>;\n};\n\nexport function useStreamWorkflow({ debugMode, tracingOptions, onError }: UseStreamWorkflowParams) {\n const client = useMastraClient();\n const [streamResult, setStreamResult] = useState<WorkflowStreamResult>();\n const [isStreaming, setIsStreaming] = useState(false);\n const activeStream = useRef<StreamOperation | undefined>(undefined);\n const isMountedRef = useRef(true);\n\n const closeActiveStream = useCallback(() => {\n const operation = activeStream.current;\n activeStream.current = undefined;\n if (!operation) return;\n operation.controller.abort();\n // An already errored transport may reject cancellation during disposal.\n void operation.reader?.cancel().catch(() => undefined);\n operation.reader?.releaseLock();\n operation.reader = undefined;\n }, []);\n\n useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n closeActiveStream();\n };\n }, [closeActiveStream]);\n\n async function consumeStream(\n openStream: (signal: AbortSignal) => Promise<ReadableStream<StreamVNextChunkType> | undefined>,\n defaultMessage: string,\n ) {\n if (!isMountedRef.current) return;\n closeActiveStream();\n const operation: StreamOperation = { controller: new AbortController() };\n activeStream.current = operation;\n const { signal } = operation.controller;\n setIsStreaming(true);\n\n try {\n const stream = await openStream(signal);\n if (signal.aborted) {\n await stream?.cancel();\n return;\n }\n if (!stream) {\n onError?.(new Error('No stream returned'), 'No stream returned');\n return;\n }\n const reader = stream.getReader();\n operation.reader = reader;\n\n while (!signal.aborted) {\n const { done, value } = await reader.read();\n if (done || signal.aborted) break;\n setStreamResult(previous => mapWorkflowStreamChunkToWatchResult(previous, value));\n if (value.type === 'workflow-step-start') setIsStreaming(true);\n if (value.type === 'workflow-step-suspended') setIsStreaming(false);\n if (value.type === 'workflow-finish' && value.payload.workflowStatus === 'failed') {\n throw new Error(value.payload.metadata?.errorMessage || 'Workflow execution failed');\n }\n }\n } catch (error) {\n // Releasing an obsolete reader rejects its pending read; real transport TypeErrors must still surface.\n if (!signal.aborted) {\n if (!operation.reader) throw error;\n onError?.(error instanceof Error ? error : new Error(defaultMessage), defaultMessage);\n }\n } finally {\n operation.reader?.releaseLock();\n operation.reader = undefined;\n if (activeStream.current === operation) {\n activeStream.current = undefined;\n setIsStreaming(false);\n }\n }\n }\n\n const streamWorkflow = useMutation<void, Error, StreamWorkflowParams>(\n ({ workflowId, runId, inputData, initialState, requestContext, perStep, resourceId }) => {\n setStreamResult({ status: 'pending', input: inputData, steps: {} });\n return consumeStream(async signal => {\n const run = await client.getWorkflow(workflowId).createRun({ runId, resourceId });\n if (signal.aborted) return;\n return run.stream({\n inputData,\n initialState,\n requestContext,\n closeOnSuspend: true,\n tracingOptions,\n perStep: perStep ?? debugMode,\n resourceId,\n });\n }, 'Error streaming workflow');\n },\n );\n\n const observeWorkflowStream = useMutation<void, Error, ObserveWorkflowStreamParams>(\n async ({ workflowId, runId, storeRunResult }) => {\n if (!isMountedRef.current) return;\n setStreamResult(storeRunResult ?? undefined);\n if (storeRunResult?.status === 'suspended') {\n closeActiveStream();\n setIsStreaming(false);\n return;\n }\n await consumeStream(async signal => {\n const run = await client.getWorkflow(workflowId).createRun({ runId });\n if (signal.aborted) return;\n return run.observeStream();\n }, 'Error observing workflow');\n },\n );\n\n const resumeWorkflowStream = useMutation<void, Error, ResumeWorkflowStreamParams>(\n ({ workflowId, runId, step, resumeData, requestContext, perStep }) =>\n consumeStream(async signal => {\n const run = await client.getWorkflow(workflowId).createRun({ runId });\n if (signal.aborted) return;\n return run.resumeStream({ step, resumeData, requestContext, tracingOptions, perStep: perStep ?? debugMode });\n }, 'Error resuming workflow stream'),\n );\n\n const timeTravelWorkflowStream = useMutation<void, Error, TimeTravelWorkflowStreamParams>(\n ({ workflowId, requestContext, runId, perStep, ...params }) =>\n consumeStream(async signal => {\n const run = await client.getWorkflow(workflowId).createRun({ runId });\n if (signal.aborted) return;\n return run.timeTravelStream({\n ...params,\n perStep: perStep ?? debugMode,\n requestContext,\n tracingOptions,\n });\n }, 'Error time traveling workflow stream'),\n );\n\n const closeStreamsAndReset = useCallback(() => {\n closeActiveStream();\n setIsStreaming(false);\n setStreamResult(undefined);\n }, [closeActiveStream]);\n\n return {\n streamWorkflow,\n streamResult,\n isStreaming,\n observeWorkflowStream,\n closeStreamsAndReset,\n resumeWorkflowStream,\n timeTravelWorkflowStream,\n };\n}\n","import { useMutation } from '../lib/use-mutation';\nimport { useMastraClient } from '../mastra-client-context';\nimport type {\n CreateWorkflowRunParams,\n CreateWorkflowRunResult,\n CancelWorkflowRunParams,\n CancelWorkflowRunResult,\n} from './types';\n\nexport { useStreamWorkflow } from './use-stream-workflow';\n\n/**\n * Hook for creating workflow runs.\n * Returns a mutation for creating a new workflow run.\n *\n * @example\n * ```tsx\n * const createWorkflowRun = useCreateWorkflowRun();\n *\n * // Create a run\n * const { runId } = await createWorkflowRun.mutateAsync({\n * workflowId: 'my-workflow'\n * });\n * ```\n */\nexport function useCreateWorkflowRun() {\n const client = useMastraClient();\n\n return useMutation<CreateWorkflowRunResult, Error, CreateWorkflowRunParams>(\n async ({ workflowId, prevRunId, resourceId }) => {\n try {\n const workflow = client.getWorkflow(workflowId);\n const { runId: newRunId } = await workflow.createRun({ runId: prevRunId, resourceId });\n return { runId: newRunId };\n } catch (error) {\n console.error('Error creating workflow run:', error);\n throw error;\n }\n },\n );\n}\n\n/**\n * Hook for canceling workflow runs.\n * Returns a mutation for canceling a running workflow.\n *\n * @example\n * ```tsx\n * const cancelWorkflowRun = useCancelWorkflowRun();\n *\n * // Cancel a run\n * await cancelWorkflowRun.mutateAsync({\n * workflowId: 'my-workflow',\n * runId: 'run-123'\n * });\n * ```\n */\nexport function useCancelWorkflowRun() {\n const client = useMastraClient();\n\n return useMutation<CancelWorkflowRunResult, Error, CancelWorkflowRunParams>(async ({ workflowId, runId }) => {\n try {\n const workflow = client.getWorkflow(workflowId);\n const run = await workflow.createRun({ runId });\n return run.cancelRun();\n } catch (error) {\n console.error('Error canceling workflow run:', error);\n throw error;\n }\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hooks-Bt15IwzP.cjs","names":["useState","useRef","useCallback","typedError","useMastraClient","useState","useRef","useCallback","mapWorkflowStreamChunkToWatchResult","useMastraClient"],"sources":["../src/lib/use-mutation.ts","../src/workflows/use-stream-workflow.ts","../src/workflows/hooks.ts"],"sourcesContent":["import { useState, useCallback, useRef } from 'react';\n\n/**\n * Represents the state of a mutation operation.\n * Mimics the essential return type of react-query's useMutation.\n */\nexport interface MutationState<TData, TError extends Error, TVariables> {\n /** Execute the mutation without waiting for the result */\n mutate: (variables: TVariables) => void;\n /** Execute the mutation and return a promise with the result */\n mutateAsync: (variables: TVariables) => Promise<TData>;\n /** Whether the mutation is currently executing */\n isPending: boolean;\n /** Whether the mutation completed successfully */\n isSuccess: boolean;\n /** Whether the mutation failed with an error */\n isError: boolean;\n /** The error if the mutation failed, null otherwise */\n error: TError | null;\n /** The data returned by the mutation if successful */\n data: TData | undefined;\n /** Reset the mutation state to initial values */\n reset: () => void;\n}\n\n/**\n * Internal helper hook that provides mutation-like functionality without react-query.\n * Tracks pending, success, and error states for async operations.\n */\nexport function useMutation<TData, TError extends Error, TVariables>(\n mutationFn: (variables: TVariables) => Promise<TData>,\n): MutationState<TData, TError, TVariables> {\n const [isPending, setIsPending] = useState(false);\n const [isSuccess, setIsSuccess] = useState(false);\n const [isError, setIsError] = useState(false);\n const [error, setError] = useState<TError | null>(null);\n const [data, setData] = useState<TData | undefined>(undefined);\n\n const mutationFnRef = useRef(mutationFn);\n mutationFnRef.current = mutationFn;\n\n const reset = useCallback(() => {\n setIsPending(false);\n setIsSuccess(false);\n setIsError(false);\n setError(null);\n setData(undefined);\n }, []);\n\n const mutateAsync = useCallback(async (variables: TVariables): Promise<TData> => {\n setIsPending(true);\n setIsSuccess(false);\n setIsError(false);\n setError(null);\n\n try {\n const result = await mutationFnRef.current(variables);\n setData(result);\n setIsSuccess(true);\n return result;\n } catch (err) {\n const typedError = err as TError;\n setError(typedError);\n setIsError(true);\n throw err;\n } finally {\n setIsPending(false);\n }\n }, []);\n\n const mutate = useCallback(\n (variables: TVariables) => {\n mutateAsync(variables).catch(() => {\n // Error is already captured in state\n });\n },\n [mutateAsync],\n );\n\n return {\n mutate,\n mutateAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data,\n reset,\n };\n}\n","import type { StreamVNextChunkType } from '@mastra/client-js';\nimport { useState, useRef, useEffect, useCallback } from 'react';\nimport { mapWorkflowStreamChunkToWatchResult } from '../lib/mastra-db';\nimport { useMutation } from '../lib/use-mutation';\nimport { useMastraClient } from '../mastra-client-context';\nimport type {\n UseStreamWorkflowParams,\n WorkflowStreamResult,\n StreamWorkflowParams,\n ObserveWorkflowStreamParams,\n ResumeWorkflowStreamParams,\n TimeTravelWorkflowStreamParams,\n} from './types';\n\ntype StreamOperation = {\n controller: AbortController;\n reader?: ReadableStreamDefaultReader<StreamVNextChunkType>;\n};\n\nexport function useStreamWorkflow({ debugMode, tracingOptions, onError }: UseStreamWorkflowParams) {\n const client = useMastraClient();\n const [streamResult, setStreamResult] = useState<WorkflowStreamResult>();\n const [isStreaming, setIsStreaming] = useState(false);\n const activeStream = useRef<StreamOperation | undefined>(undefined);\n const isMountedRef = useRef(true);\n\n const closeActiveStream = useCallback(() => {\n const operation = activeStream.current;\n activeStream.current = undefined;\n if (!operation) return;\n operation.controller.abort();\n // An already errored transport may reject cancellation during disposal.\n void operation.reader?.cancel().catch(() => undefined);\n operation.reader?.releaseLock();\n operation.reader = undefined;\n }, []);\n\n useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n closeActiveStream();\n };\n }, [closeActiveStream]);\n\n async function consumeStream(\n openStream: (signal: AbortSignal) => Promise<ReadableStream<StreamVNextChunkType> | undefined>,\n defaultMessage: string,\n ) {\n if (!isMountedRef.current) return;\n closeActiveStream();\n const operation: StreamOperation = { controller: new AbortController() };\n activeStream.current = operation;\n const { signal } = operation.controller;\n setIsStreaming(true);\n\n try {\n const stream = await openStream(signal);\n if (signal.aborted) {\n await stream?.cancel();\n return;\n }\n if (!stream) {\n onError?.(new Error('No stream returned'), 'No stream returned');\n return;\n }\n const reader = stream.getReader();\n operation.reader = reader;\n\n while (!signal.aborted) {\n const { done, value } = await reader.read();\n if (done || signal.aborted) break;\n setStreamResult(previous => mapWorkflowStreamChunkToWatchResult(previous, value));\n if (value.type === 'workflow-step-start') setIsStreaming(true);\n if (value.type === 'workflow-step-suspended') setIsStreaming(false);\n if (value.type === 'workflow-finish' && value.payload.workflowStatus === 'failed') {\n throw new Error(value.payload.metadata?.errorMessage || 'Workflow execution failed');\n }\n }\n } catch (error) {\n // Releasing an obsolete reader rejects its pending read; real transport TypeErrors must still surface.\n if (!signal.aborted) {\n if (!operation.reader) throw error;\n onError?.(error instanceof Error ? error : new Error(defaultMessage), defaultMessage);\n }\n } finally {\n operation.reader?.releaseLock();\n operation.reader = undefined;\n if (activeStream.current === operation) {\n activeStream.current = undefined;\n setIsStreaming(false);\n }\n }\n }\n\n const streamWorkflow = useMutation<void, Error, StreamWorkflowParams>(\n ({ workflowId, runId, inputData, initialState, requestContext, perStep, resourceId }) => {\n setStreamResult({ status: 'pending', input: inputData, steps: {} });\n return consumeStream(async signal => {\n const run = await client.getWorkflow(workflowId).createRun({ runId, resourceId });\n if (signal.aborted) return;\n return run.stream({\n inputData,\n initialState,\n requestContext,\n closeOnSuspend: true,\n tracingOptions,\n perStep: perStep ?? debugMode,\n resourceId,\n });\n }, 'Error streaming workflow');\n },\n );\n\n const observeWorkflowStream = useMutation<void, Error, ObserveWorkflowStreamParams>(\n async ({ workflowId, runId, storeRunResult }) => {\n if (!isMountedRef.current) return;\n setStreamResult(storeRunResult ?? undefined);\n if (storeRunResult?.status === 'suspended') {\n closeActiveStream();\n setIsStreaming(false);\n return;\n }\n await consumeStream(async signal => {\n const run = await client.getWorkflow(workflowId).createRun({ runId });\n if (signal.aborted) return;\n return run.observeStream();\n }, 'Error observing workflow');\n },\n );\n\n const resumeWorkflowStream = useMutation<void, Error, ResumeWorkflowStreamParams>(\n ({ workflowId, runId, step, resumeData, requestContext, perStep }) =>\n consumeStream(async signal => {\n const run = await client.getWorkflow(workflowId).createRun({ runId });\n if (signal.aborted) return;\n return run.resumeStream({ step, resumeData, requestContext, tracingOptions, perStep: perStep ?? debugMode });\n }, 'Error resuming workflow stream'),\n );\n\n const timeTravelWorkflowStream = useMutation<void, Error, TimeTravelWorkflowStreamParams>(\n ({ workflowId, requestContext, runId, perStep, ...params }) =>\n consumeStream(async signal => {\n const run = await client.getWorkflow(workflowId).createRun({ runId });\n if (signal.aborted) return;\n return run.timeTravelStream({\n ...params,\n perStep: perStep ?? debugMode,\n requestContext,\n tracingOptions,\n });\n }, 'Error time traveling workflow stream'),\n );\n\n const closeStreamsAndReset = useCallback(() => {\n closeActiveStream();\n setIsStreaming(false);\n setStreamResult(undefined);\n }, [closeActiveStream]);\n\n return {\n streamWorkflow,\n streamResult,\n isStreaming,\n observeWorkflowStream,\n closeStreamsAndReset,\n resumeWorkflowStream,\n timeTravelWorkflowStream,\n };\n}\n","import { useMutation } from '../lib/use-mutation';\nimport { useMastraClient } from '../mastra-client-context';\nimport type {\n CreateWorkflowRunParams,\n CreateWorkflowRunResult,\n CancelWorkflowRunParams,\n CancelWorkflowRunResult,\n} from './types';\n\nexport { useStreamWorkflow } from './use-stream-workflow';\n\n/**\n * Hook for creating workflow runs.\n * Returns a mutation for creating a new workflow run.\n *\n * @example\n * ```tsx\n * const createWorkflowRun = useCreateWorkflowRun();\n *\n * // Create a run\n * const { runId } = await createWorkflowRun.mutateAsync({\n * workflowId: 'my-workflow'\n * });\n * ```\n */\nexport function useCreateWorkflowRun() {\n const client = useMastraClient();\n\n return useMutation<CreateWorkflowRunResult, Error, CreateWorkflowRunParams>(\n async ({ workflowId, prevRunId, resourceId }) => {\n try {\n const workflow = client.getWorkflow(workflowId);\n const { runId: newRunId } = await workflow.createRun({ runId: prevRunId, resourceId });\n return { runId: newRunId };\n } catch (error) {\n console.error('Error creating workflow run:', error);\n throw error;\n }\n },\n );\n}\n\n/**\n * Hook for canceling workflow runs.\n * Returns a mutation for canceling a running workflow.\n *\n * @example\n * ```tsx\n * const cancelWorkflowRun = useCancelWorkflowRun();\n *\n * // Cancel a run\n * await cancelWorkflowRun.mutateAsync({\n * workflowId: 'my-workflow',\n * runId: 'run-123'\n * });\n * ```\n */\nexport function useCancelWorkflowRun() {\n const client = useMastraClient();\n\n return useMutation<CancelWorkflowRunResult, Error, CancelWorkflowRunParams>(async ({ workflowId, runId }) => {\n try {\n const workflow = client.getWorkflow(workflowId);\n const run = await workflow.createRun({ runId });\n return run.cancelRun();\n } catch (error) {\n console.error('Error canceling workflow run:', error);\n throw error;\n }\n });\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as useMastraClient } from "./mastra-client-context-
|
|
2
|
-
import { i as mapWorkflowStreamChunkToWatchResult } from "./accumulator-
|
|
1
|
+
import { n as useMastraClient } from "./mastra-client-context-DQ5z_ze9.js";
|
|
2
|
+
import { i as mapWorkflowStreamChunkToWatchResult } from "./accumulator-DysrPe6U.js";
|
|
3
3
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
4
|
-
|
|
4
|
+
// src/lib/use-mutation.ts
|
|
5
5
|
/**
|
|
6
6
|
* Internal helper hook that provides mutation-like functionality without react-query.
|
|
7
7
|
* Tracks pending, success, and error states for async operations.
|
|
@@ -52,8 +52,7 @@ function useMutation(mutationFn) {
|
|
|
52
52
|
reset
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
|
-
|
|
56
|
-
//#region src/workflows/use-stream-workflow.ts
|
|
55
|
+
// src/workflows/use-stream-workflow.ts
|
|
57
56
|
function useStreamWorkflow({ debugMode, tracingOptions, onError }) {
|
|
58
57
|
const client = useMastraClient();
|
|
59
58
|
const [streamResult, setStreamResult] = useState();
|
|
@@ -189,8 +188,7 @@ function useStreamWorkflow({ debugMode, tracingOptions, onError }) {
|
|
|
189
188
|
timeTravelWorkflowStream
|
|
190
189
|
};
|
|
191
190
|
}
|
|
192
|
-
|
|
193
|
-
//#region src/workflows/hooks.ts
|
|
191
|
+
// src/workflows/hooks.ts
|
|
194
192
|
/**
|
|
195
193
|
* Hook for creating workflow runs.
|
|
196
194
|
* Returns a mutation for creating a new workflow run.
|
|
@@ -246,7 +244,6 @@ function useCancelWorkflowRun() {
|
|
|
246
244
|
}
|
|
247
245
|
});
|
|
248
246
|
}
|
|
249
|
-
//#endregion
|
|
250
247
|
export { useCreateWorkflowRun as n, useStreamWorkflow as r, useCancelWorkflowRun as t };
|
|
251
248
|
|
|
252
|
-
//# sourceMappingURL=hooks-
|
|
249
|
+
//# sourceMappingURL=hooks-Btt7PyI-.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-DG-Y1KFe.js","names":["typedError"],"sources":["../src/lib/use-mutation.ts","../src/workflows/use-stream-workflow.ts","../src/workflows/hooks.ts"],"sourcesContent":["import { useState, useCallback, useRef } from 'react';\n\n/**\n * Represents the state of a mutation operation.\n * Mimics the essential return type of react-query's useMutation.\n */\nexport interface MutationState<TData, TError extends Error, TVariables> {\n /** Execute the mutation without waiting for the result */\n mutate: (variables: TVariables) => void;\n /** Execute the mutation and return a promise with the result */\n mutateAsync: (variables: TVariables) => Promise<TData>;\n /** Whether the mutation is currently executing */\n isPending: boolean;\n /** Whether the mutation completed successfully */\n isSuccess: boolean;\n /** Whether the mutation failed with an error */\n isError: boolean;\n /** The error if the mutation failed, null otherwise */\n error: TError | null;\n /** The data returned by the mutation if successful */\n data: TData | undefined;\n /** Reset the mutation state to initial values */\n reset: () => void;\n}\n\n/**\n * Internal helper hook that provides mutation-like functionality without react-query.\n * Tracks pending, success, and error states for async operations.\n */\nexport function useMutation<TData, TError extends Error, TVariables>(\n mutationFn: (variables: TVariables) => Promise<TData>,\n): MutationState<TData, TError, TVariables> {\n const [isPending, setIsPending] = useState(false);\n const [isSuccess, setIsSuccess] = useState(false);\n const [isError, setIsError] = useState(false);\n const [error, setError] = useState<TError | null>(null);\n const [data, setData] = useState<TData | undefined>(undefined);\n\n const mutationFnRef = useRef(mutationFn);\n mutationFnRef.current = mutationFn;\n\n const reset = useCallback(() => {\n setIsPending(false);\n setIsSuccess(false);\n setIsError(false);\n setError(null);\n setData(undefined);\n }, []);\n\n const mutateAsync = useCallback(async (variables: TVariables): Promise<TData> => {\n setIsPending(true);\n setIsSuccess(false);\n setIsError(false);\n setError(null);\n\n try {\n const result = await mutationFnRef.current(variables);\n setData(result);\n setIsSuccess(true);\n return result;\n } catch (err) {\n const typedError = err as TError;\n setError(typedError);\n setIsError(true);\n throw err;\n } finally {\n setIsPending(false);\n }\n }, []);\n\n const mutate = useCallback(\n (variables: TVariables) => {\n mutateAsync(variables).catch(() => {\n // Error is already captured in state\n });\n },\n [mutateAsync],\n );\n\n return {\n mutate,\n mutateAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data,\n reset,\n };\n}\n","import type { StreamVNextChunkType } from '@mastra/client-js';\nimport { useState, useRef, useEffect, useCallback } from 'react';\nimport { mapWorkflowStreamChunkToWatchResult } from '../lib/mastra-db';\nimport { useMutation } from '../lib/use-mutation';\nimport { useMastraClient } from '../mastra-client-context';\nimport type {\n UseStreamWorkflowParams,\n WorkflowStreamResult,\n StreamWorkflowParams,\n ObserveWorkflowStreamParams,\n ResumeWorkflowStreamParams,\n TimeTravelWorkflowStreamParams,\n} from './types';\n\ntype StreamOperation = {\n controller: AbortController;\n reader?: ReadableStreamDefaultReader<StreamVNextChunkType>;\n};\n\nexport function useStreamWorkflow({ debugMode, tracingOptions, onError }: UseStreamWorkflowParams) {\n const client = useMastraClient();\n const [streamResult, setStreamResult] = useState<WorkflowStreamResult>();\n const [isStreaming, setIsStreaming] = useState(false);\n const activeStream = useRef<StreamOperation | undefined>(undefined);\n const isMountedRef = useRef(true);\n\n const closeActiveStream = useCallback(() => {\n const operation = activeStream.current;\n activeStream.current = undefined;\n if (!operation) return;\n operation.controller.abort();\n // An already errored transport may reject cancellation during disposal.\n void operation.reader?.cancel().catch(() => undefined);\n operation.reader?.releaseLock();\n operation.reader = undefined;\n }, []);\n\n useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n closeActiveStream();\n };\n }, [closeActiveStream]);\n\n async function consumeStream(\n openStream: (signal: AbortSignal) => Promise<ReadableStream<StreamVNextChunkType> | undefined>,\n defaultMessage: string,\n ) {\n if (!isMountedRef.current) return;\n closeActiveStream();\n const operation: StreamOperation = { controller: new AbortController() };\n activeStream.current = operation;\n const { signal } = operation.controller;\n setIsStreaming(true);\n\n try {\n const stream = await openStream(signal);\n if (signal.aborted) {\n await stream?.cancel();\n return;\n }\n if (!stream) {\n onError?.(new Error('No stream returned'), 'No stream returned');\n return;\n }\n const reader = stream.getReader();\n operation.reader = reader;\n\n while (!signal.aborted) {\n const { done, value } = await reader.read();\n if (done || signal.aborted) break;\n setStreamResult(previous => mapWorkflowStreamChunkToWatchResult(previous, value));\n if (value.type === 'workflow-step-start') setIsStreaming(true);\n if (value.type === 'workflow-step-suspended') setIsStreaming(false);\n if (value.type === 'workflow-finish' && value.payload.workflowStatus === 'failed') {\n throw new Error(value.payload.metadata?.errorMessage || 'Workflow execution failed');\n }\n }\n } catch (error) {\n // Releasing an obsolete reader rejects its pending read; real transport TypeErrors must still surface.\n if (!signal.aborted) {\n if (!operation.reader) throw error;\n onError?.(error instanceof Error ? error : new Error(defaultMessage), defaultMessage);\n }\n } finally {\n operation.reader?.releaseLock();\n operation.reader = undefined;\n if (activeStream.current === operation) {\n activeStream.current = undefined;\n setIsStreaming(false);\n }\n }\n }\n\n const streamWorkflow = useMutation<void, Error, StreamWorkflowParams>(\n ({ workflowId, runId, inputData, initialState, requestContext, perStep, resourceId }) => {\n setStreamResult({ status: 'pending', input: inputData, steps: {} });\n return consumeStream(async signal => {\n const run = await client.getWorkflow(workflowId).createRun({ runId, resourceId });\n if (signal.aborted) return;\n return run.stream({\n inputData,\n initialState,\n requestContext,\n closeOnSuspend: true,\n tracingOptions,\n perStep: perStep ?? debugMode,\n resourceId,\n });\n }, 'Error streaming workflow');\n },\n );\n\n const observeWorkflowStream = useMutation<void, Error, ObserveWorkflowStreamParams>(\n async ({ workflowId, runId, storeRunResult }) => {\n if (!isMountedRef.current) return;\n setStreamResult(storeRunResult ?? undefined);\n if (storeRunResult?.status === 'suspended') {\n closeActiveStream();\n setIsStreaming(false);\n return;\n }\n await consumeStream(async signal => {\n const run = await client.getWorkflow(workflowId).createRun({ runId });\n if (signal.aborted) return;\n return run.observeStream();\n }, 'Error observing workflow');\n },\n );\n\n const resumeWorkflowStream = useMutation<void, Error, ResumeWorkflowStreamParams>(\n ({ workflowId, runId, step, resumeData, requestContext, perStep }) =>\n consumeStream(async signal => {\n const run = await client.getWorkflow(workflowId).createRun({ runId });\n if (signal.aborted) return;\n return run.resumeStream({ step, resumeData, requestContext, tracingOptions, perStep: perStep ?? debugMode });\n }, 'Error resuming workflow stream'),\n );\n\n const timeTravelWorkflowStream = useMutation<void, Error, TimeTravelWorkflowStreamParams>(\n ({ workflowId, requestContext, runId, perStep, ...params }) =>\n consumeStream(async signal => {\n const run = await client.getWorkflow(workflowId).createRun({ runId });\n if (signal.aborted) return;\n return run.timeTravelStream({\n ...params,\n perStep: perStep ?? debugMode,\n requestContext,\n tracingOptions,\n });\n }, 'Error time traveling workflow stream'),\n );\n\n const closeStreamsAndReset = useCallback(() => {\n closeActiveStream();\n setIsStreaming(false);\n setStreamResult(undefined);\n }, [closeActiveStream]);\n\n return {\n streamWorkflow,\n streamResult,\n isStreaming,\n observeWorkflowStream,\n closeStreamsAndReset,\n resumeWorkflowStream,\n timeTravelWorkflowStream,\n };\n}\n","import { useMutation } from '../lib/use-mutation';\nimport { useMastraClient } from '../mastra-client-context';\nimport type {\n CreateWorkflowRunParams,\n CreateWorkflowRunResult,\n CancelWorkflowRunParams,\n CancelWorkflowRunResult,\n} from './types';\n\nexport { useStreamWorkflow } from './use-stream-workflow';\n\n/**\n * Hook for creating workflow runs.\n * Returns a mutation for creating a new workflow run.\n *\n * @example\n * ```tsx\n * const createWorkflowRun = useCreateWorkflowRun();\n *\n * // Create a run\n * const { runId } = await createWorkflowRun.mutateAsync({\n * workflowId: 'my-workflow'\n * });\n * ```\n */\nexport function useCreateWorkflowRun() {\n const client = useMastraClient();\n\n return useMutation<CreateWorkflowRunResult, Error, CreateWorkflowRunParams>(\n async ({ workflowId, prevRunId, resourceId }) => {\n try {\n const workflow = client.getWorkflow(workflowId);\n const { runId: newRunId } = await workflow.createRun({ runId: prevRunId, resourceId });\n return { runId: newRunId };\n } catch (error) {\n console.error('Error creating workflow run:', error);\n throw error;\n }\n },\n );\n}\n\n/**\n * Hook for canceling workflow runs.\n * Returns a mutation for canceling a running workflow.\n *\n * @example\n * ```tsx\n * const cancelWorkflowRun = useCancelWorkflowRun();\n *\n * // Cancel a run\n * await cancelWorkflowRun.mutateAsync({\n * workflowId: 'my-workflow',\n * runId: 'run-123'\n * });\n * ```\n */\nexport function useCancelWorkflowRun() {\n const client = useMastraClient();\n\n return useMutation<CancelWorkflowRunResult, Error, CancelWorkflowRunParams>(async ({ workflowId, runId }) => {\n try {\n const workflow = client.getWorkflow(workflowId);\n const run = await workflow.createRun({ runId });\n return run.cancelRun();\n } catch (error) {\n console.error('Error canceling workflow run:', error);\n throw error;\n }\n });\n}\n"],"mappings":";;;;;;;;AA6BA,SAAgB,YACd,YAC0C;CAC1C,MAAM,CAAC,WAAW,gBAAgB,SAAS,KAAK;CAChD,MAAM,CAAC,WAAW,gBAAgB,SAAS,KAAK;CAChD,MAAM,CAAC,SAAS,cAAc,SAAS,KAAK;CAC5C,MAAM,CAAC,OAAO,YAAY,SAAwB,IAAI;CACtD,MAAM,CAAC,MAAM,WAAW,SAA4B,KAAA,CAAS;CAE7D,MAAM,gBAAgB,OAAO,UAAU;CACvC,cAAc,UAAU;CAExB,MAAM,QAAQ,kBAAkB;EAC9B,aAAa,KAAK;EAClB,aAAa,KAAK;EAClB,WAAW,KAAK;EAChB,SAAS,IAAI;EACb,QAAQ,KAAA,CAAS;CACnB,GAAG,CAAC,CAAC;CAEL,MAAM,cAAc,YAAY,OAAO,cAA0C;EAC/E,aAAa,IAAI;EACjB,aAAa,KAAK;EAClB,WAAW,KAAK;EAChB,SAAS,IAAI;EAEb,IAAI;GACF,MAAM,SAAS,MAAM,cAAc,QAAQ,SAAS;GACpD,QAAQ,MAAM;GACd,aAAa,IAAI;GACjB,OAAO;EACT,SAAS,KAAK;GAEZ,SAASA,GAAU;GACnB,WAAW,IAAI;GACf,MAAM;EACR,UAAU;GACR,aAAa,KAAK;EACpB;CACF,GAAG,CAAC,CAAC;CAWL,OAAO;EACL,QAVa,aACZ,cAA0B;GACzB,YAAY,SAAS,CAAC,CAAC,YAAY,CAEnC,CAAC;EACH,GACA,CAAC,WAAW,CAIP;EACL;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF;;;ACtEA,SAAgB,kBAAkB,EAAE,WAAW,gBAAgB,WAAoC;CACjG,MAAM,SAAS,gBAAgB;CAC/B,MAAM,CAAC,cAAc,mBAAmB,SAA+B;CACvE,MAAM,CAAC,aAAa,kBAAkB,SAAS,KAAK;CACpD,MAAM,eAAe,OAAoC,KAAA,CAAS;CAClE,MAAM,eAAe,OAAO,IAAI;CAEhC,MAAM,oBAAoB,kBAAkB;EAC1C,MAAM,YAAY,aAAa;EAC/B,aAAa,UAAU,KAAA;EACvB,IAAI,CAAC,WAAW;EAChB,UAAU,WAAW,MAAM;EAE3B,UAAe,QAAQ,OAAO,CAAC,CAAC,YAAY,KAAA,CAAS;EACrD,UAAU,QAAQ,YAAY;EAC9B,UAAU,SAAS,KAAA;CACrB,GAAG,CAAC,CAAC;CAEL,gBAAgB;EACd,aAAa,UAAU;EACvB,aAAa;GACX,aAAa,UAAU;GACvB,kBAAkB;EACpB;CACF,GAAG,CAAC,iBAAiB,CAAC;CAEtB,eAAe,cACb,YACA,gBACA;EACA,IAAI,CAAC,aAAa,SAAS;EAC3B,kBAAkB;EAClB,MAAM,YAA6B,EAAE,YAAY,IAAI,gBAAgB,EAAE;EACvE,aAAa,UAAU;EACvB,MAAM,EAAE,WAAW,UAAU;EAC7B,eAAe,IAAI;EAEnB,IAAI;GACF,MAAM,SAAS,MAAM,WAAW,MAAM;GACtC,IAAI,OAAO,SAAS;IAClB,MAAM,QAAQ,OAAO;IACrB;GACF;GACA,IAAI,CAAC,QAAQ;IACX,0BAAU,IAAI,MAAM,oBAAoB,GAAG,oBAAoB;IAC/D;GACF;GACA,MAAM,SAAS,OAAO,UAAU;GAChC,UAAU,SAAS;GAEnB,OAAO,CAAC,OAAO,SAAS;IACtB,MAAM,EAAE,MAAM,UAAU,MAAM,OAAO,KAAK;IAC1C,IAAI,QAAQ,OAAO,SAAS;IAC5B,iBAAgB,aAAY,oCAAoC,UAAU,KAAK,CAAC;IAChF,IAAI,MAAM,SAAS,uBAAuB,eAAe,IAAI;IAC7D,IAAI,MAAM,SAAS,2BAA2B,eAAe,KAAK;IAClE,IAAI,MAAM,SAAS,qBAAqB,MAAM,QAAQ,mBAAmB,UACvE,MAAM,IAAI,MAAM,MAAM,QAAQ,UAAU,gBAAgB,2BAA2B;GAEvF;EACF,SAAS,OAAO;GAEd,IAAI,CAAC,OAAO,SAAS;IACnB,IAAI,CAAC,UAAU,QAAQ,MAAM;IAC7B,UAAU,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,cAAc,GAAG,cAAc;GACtF;EACF,UAAU;GACR,UAAU,QAAQ,YAAY;GAC9B,UAAU,SAAS,KAAA;GACnB,IAAI,aAAa,YAAY,WAAW;IACtC,aAAa,UAAU,KAAA;IACvB,eAAe,KAAK;GACtB;EACF;CACF;CAEA,MAAM,iBAAiB,aACpB,EAAE,YAAY,OAAO,WAAW,cAAc,gBAAgB,SAAS,iBAAiB;EACvF,gBAAgB;GAAE,QAAQ;GAAW,OAAO;GAAW,OAAO,CAAC;EAAE,CAAC;EAClE,OAAO,cAAc,OAAM,WAAU;GACnC,MAAM,MAAM,MAAM,OAAO,YAAY,UAAU,CAAC,CAAC,UAAU;IAAE;IAAO;GAAW,CAAC;GAChF,IAAI,OAAO,SAAS;GACpB,OAAO,IAAI,OAAO;IAChB;IACA;IACA;IACA,gBAAgB;IAChB;IACA,SAAS,WAAW;IACpB;GACF,CAAC;EACH,GAAG,0BAA0B;CAC/B,CACF;CAEA,MAAM,wBAAwB,YAC5B,OAAO,EAAE,YAAY,OAAO,qBAAqB;EAC/C,IAAI,CAAC,aAAa,SAAS;EAC3B,gBAAgB,kBAAkB,KAAA,CAAS;EAC3C,IAAI,gBAAgB,WAAW,aAAa;GAC1C,kBAAkB;GAClB,eAAe,KAAK;GACpB;EACF;EACA,MAAM,cAAc,OAAM,WAAU;GAClC,MAAM,MAAM,MAAM,OAAO,YAAY,UAAU,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC;GACpE,IAAI,OAAO,SAAS;GACpB,OAAO,IAAI,cAAc;EAC3B,GAAG,0BAA0B;CAC/B,CACF;CAEA,MAAM,uBAAuB,aAC1B,EAAE,YAAY,OAAO,MAAM,YAAY,gBAAgB,cACtD,cAAc,OAAM,WAAU;EAC5B,MAAM,MAAM,MAAM,OAAO,YAAY,UAAU,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC;EACpE,IAAI,OAAO,SAAS;EACpB,OAAO,IAAI,aAAa;GAAE;GAAM;GAAY;GAAgB;GAAgB,SAAS,WAAW;EAAU,CAAC;CAC7G,GAAG,gCAAgC,CACvC;CAEA,MAAM,2BAA2B,aAC9B,EAAE,YAAY,gBAAgB,OAAO,SAAS,GAAG,aAChD,cAAc,OAAM,WAAU;EAC5B,MAAM,MAAM,MAAM,OAAO,YAAY,UAAU,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC;EACpE,IAAI,OAAO,SAAS;EACpB,OAAO,IAAI,iBAAiB;GAC1B,GAAG;GACH,SAAS,WAAW;GACpB;GACA;EACF,CAAC;CACH,GAAG,sCAAsC,CAC7C;CAQA,OAAO;EACL;EACA;EACA;EACA;EACA,sBAX2B,kBAAkB;GAC7C,kBAAkB;GAClB,eAAe,KAAK;GACpB,gBAAgB,KAAA,CAAS;EAC3B,GAAG,CAAC,iBAAiB,CAOA;EACnB;EACA;CACF;AACF;;;;;;;;;;;;;;;;;AChJA,SAAgB,uBAAuB;CACrC,MAAM,SAAS,gBAAgB;CAE/B,OAAO,YACL,OAAO,EAAE,YAAY,WAAW,iBAAiB;EAC/C,IAAI;GAEF,MAAM,EAAE,OAAO,aAAa,MADX,OAAO,YAAY,UACK,CAAC,CAAC,UAAU;IAAE,OAAO;IAAW;GAAW,CAAC;GACrF,OAAO,EAAE,OAAO,SAAS;EAC3B,SAAS,OAAO;GACd,QAAQ,MAAM,gCAAgC,KAAK;GACnD,MAAM;EACR;CACF,CACF;AACF;;;;;;;;;;;;;;;;AAiBA,SAAgB,uBAAuB;CACrC,MAAM,SAAS,gBAAgB;CAE/B,OAAO,YAAqE,OAAO,EAAE,YAAY,YAAY;EAC3G,IAAI;GAGF,QAAO,MAFU,OAAO,YAAY,UACX,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,EAAA,CACnC,UAAU;EACvB,SAAS,OAAO;GACd,QAAQ,MAAM,iCAAiC,KAAK;GACpD,MAAM;EACR;CACF,CAAC;AACH"}
|
|
1
|
+
{"version":3,"file":"hooks-Btt7PyI-.js","names":["typedError"],"sources":["../src/lib/use-mutation.ts","../src/workflows/use-stream-workflow.ts","../src/workflows/hooks.ts"],"sourcesContent":["import { useState, useCallback, useRef } from 'react';\n\n/**\n * Represents the state of a mutation operation.\n * Mimics the essential return type of react-query's useMutation.\n */\nexport interface MutationState<TData, TError extends Error, TVariables> {\n /** Execute the mutation without waiting for the result */\n mutate: (variables: TVariables) => void;\n /** Execute the mutation and return a promise with the result */\n mutateAsync: (variables: TVariables) => Promise<TData>;\n /** Whether the mutation is currently executing */\n isPending: boolean;\n /** Whether the mutation completed successfully */\n isSuccess: boolean;\n /** Whether the mutation failed with an error */\n isError: boolean;\n /** The error if the mutation failed, null otherwise */\n error: TError | null;\n /** The data returned by the mutation if successful */\n data: TData | undefined;\n /** Reset the mutation state to initial values */\n reset: () => void;\n}\n\n/**\n * Internal helper hook that provides mutation-like functionality without react-query.\n * Tracks pending, success, and error states for async operations.\n */\nexport function useMutation<TData, TError extends Error, TVariables>(\n mutationFn: (variables: TVariables) => Promise<TData>,\n): MutationState<TData, TError, TVariables> {\n const [isPending, setIsPending] = useState(false);\n const [isSuccess, setIsSuccess] = useState(false);\n const [isError, setIsError] = useState(false);\n const [error, setError] = useState<TError | null>(null);\n const [data, setData] = useState<TData | undefined>(undefined);\n\n const mutationFnRef = useRef(mutationFn);\n mutationFnRef.current = mutationFn;\n\n const reset = useCallback(() => {\n setIsPending(false);\n setIsSuccess(false);\n setIsError(false);\n setError(null);\n setData(undefined);\n }, []);\n\n const mutateAsync = useCallback(async (variables: TVariables): Promise<TData> => {\n setIsPending(true);\n setIsSuccess(false);\n setIsError(false);\n setError(null);\n\n try {\n const result = await mutationFnRef.current(variables);\n setData(result);\n setIsSuccess(true);\n return result;\n } catch (err) {\n const typedError = err as TError;\n setError(typedError);\n setIsError(true);\n throw err;\n } finally {\n setIsPending(false);\n }\n }, []);\n\n const mutate = useCallback(\n (variables: TVariables) => {\n mutateAsync(variables).catch(() => {\n // Error is already captured in state\n });\n },\n [mutateAsync],\n );\n\n return {\n mutate,\n mutateAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data,\n reset,\n };\n}\n","import type { StreamVNextChunkType } from '@mastra/client-js';\nimport { useState, useRef, useEffect, useCallback } from 'react';\nimport { mapWorkflowStreamChunkToWatchResult } from '../lib/mastra-db';\nimport { useMutation } from '../lib/use-mutation';\nimport { useMastraClient } from '../mastra-client-context';\nimport type {\n UseStreamWorkflowParams,\n WorkflowStreamResult,\n StreamWorkflowParams,\n ObserveWorkflowStreamParams,\n ResumeWorkflowStreamParams,\n TimeTravelWorkflowStreamParams,\n} from './types';\n\ntype StreamOperation = {\n controller: AbortController;\n reader?: ReadableStreamDefaultReader<StreamVNextChunkType>;\n};\n\nexport function useStreamWorkflow({ debugMode, tracingOptions, onError }: UseStreamWorkflowParams) {\n const client = useMastraClient();\n const [streamResult, setStreamResult] = useState<WorkflowStreamResult>();\n const [isStreaming, setIsStreaming] = useState(false);\n const activeStream = useRef<StreamOperation | undefined>(undefined);\n const isMountedRef = useRef(true);\n\n const closeActiveStream = useCallback(() => {\n const operation = activeStream.current;\n activeStream.current = undefined;\n if (!operation) return;\n operation.controller.abort();\n // An already errored transport may reject cancellation during disposal.\n void operation.reader?.cancel().catch(() => undefined);\n operation.reader?.releaseLock();\n operation.reader = undefined;\n }, []);\n\n useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n closeActiveStream();\n };\n }, [closeActiveStream]);\n\n async function consumeStream(\n openStream: (signal: AbortSignal) => Promise<ReadableStream<StreamVNextChunkType> | undefined>,\n defaultMessage: string,\n ) {\n if (!isMountedRef.current) return;\n closeActiveStream();\n const operation: StreamOperation = { controller: new AbortController() };\n activeStream.current = operation;\n const { signal } = operation.controller;\n setIsStreaming(true);\n\n try {\n const stream = await openStream(signal);\n if (signal.aborted) {\n await stream?.cancel();\n return;\n }\n if (!stream) {\n onError?.(new Error('No stream returned'), 'No stream returned');\n return;\n }\n const reader = stream.getReader();\n operation.reader = reader;\n\n while (!signal.aborted) {\n const { done, value } = await reader.read();\n if (done || signal.aborted) break;\n setStreamResult(previous => mapWorkflowStreamChunkToWatchResult(previous, value));\n if (value.type === 'workflow-step-start') setIsStreaming(true);\n if (value.type === 'workflow-step-suspended') setIsStreaming(false);\n if (value.type === 'workflow-finish' && value.payload.workflowStatus === 'failed') {\n throw new Error(value.payload.metadata?.errorMessage || 'Workflow execution failed');\n }\n }\n } catch (error) {\n // Releasing an obsolete reader rejects its pending read; real transport TypeErrors must still surface.\n if (!signal.aborted) {\n if (!operation.reader) throw error;\n onError?.(error instanceof Error ? error : new Error(defaultMessage), defaultMessage);\n }\n } finally {\n operation.reader?.releaseLock();\n operation.reader = undefined;\n if (activeStream.current === operation) {\n activeStream.current = undefined;\n setIsStreaming(false);\n }\n }\n }\n\n const streamWorkflow = useMutation<void, Error, StreamWorkflowParams>(\n ({ workflowId, runId, inputData, initialState, requestContext, perStep, resourceId }) => {\n setStreamResult({ status: 'pending', input: inputData, steps: {} });\n return consumeStream(async signal => {\n const run = await client.getWorkflow(workflowId).createRun({ runId, resourceId });\n if (signal.aborted) return;\n return run.stream({\n inputData,\n initialState,\n requestContext,\n closeOnSuspend: true,\n tracingOptions,\n perStep: perStep ?? debugMode,\n resourceId,\n });\n }, 'Error streaming workflow');\n },\n );\n\n const observeWorkflowStream = useMutation<void, Error, ObserveWorkflowStreamParams>(\n async ({ workflowId, runId, storeRunResult }) => {\n if (!isMountedRef.current) return;\n setStreamResult(storeRunResult ?? undefined);\n if (storeRunResult?.status === 'suspended') {\n closeActiveStream();\n setIsStreaming(false);\n return;\n }\n await consumeStream(async signal => {\n const run = await client.getWorkflow(workflowId).createRun({ runId });\n if (signal.aborted) return;\n return run.observeStream();\n }, 'Error observing workflow');\n },\n );\n\n const resumeWorkflowStream = useMutation<void, Error, ResumeWorkflowStreamParams>(\n ({ workflowId, runId, step, resumeData, requestContext, perStep }) =>\n consumeStream(async signal => {\n const run = await client.getWorkflow(workflowId).createRun({ runId });\n if (signal.aborted) return;\n return run.resumeStream({ step, resumeData, requestContext, tracingOptions, perStep: perStep ?? debugMode });\n }, 'Error resuming workflow stream'),\n );\n\n const timeTravelWorkflowStream = useMutation<void, Error, TimeTravelWorkflowStreamParams>(\n ({ workflowId, requestContext, runId, perStep, ...params }) =>\n consumeStream(async signal => {\n const run = await client.getWorkflow(workflowId).createRun({ runId });\n if (signal.aborted) return;\n return run.timeTravelStream({\n ...params,\n perStep: perStep ?? debugMode,\n requestContext,\n tracingOptions,\n });\n }, 'Error time traveling workflow stream'),\n );\n\n const closeStreamsAndReset = useCallback(() => {\n closeActiveStream();\n setIsStreaming(false);\n setStreamResult(undefined);\n }, [closeActiveStream]);\n\n return {\n streamWorkflow,\n streamResult,\n isStreaming,\n observeWorkflowStream,\n closeStreamsAndReset,\n resumeWorkflowStream,\n timeTravelWorkflowStream,\n };\n}\n","import { useMutation } from '../lib/use-mutation';\nimport { useMastraClient } from '../mastra-client-context';\nimport type {\n CreateWorkflowRunParams,\n CreateWorkflowRunResult,\n CancelWorkflowRunParams,\n CancelWorkflowRunResult,\n} from './types';\n\nexport { useStreamWorkflow } from './use-stream-workflow';\n\n/**\n * Hook for creating workflow runs.\n * Returns a mutation for creating a new workflow run.\n *\n * @example\n * ```tsx\n * const createWorkflowRun = useCreateWorkflowRun();\n *\n * // Create a run\n * const { runId } = await createWorkflowRun.mutateAsync({\n * workflowId: 'my-workflow'\n * });\n * ```\n */\nexport function useCreateWorkflowRun() {\n const client = useMastraClient();\n\n return useMutation<CreateWorkflowRunResult, Error, CreateWorkflowRunParams>(\n async ({ workflowId, prevRunId, resourceId }) => {\n try {\n const workflow = client.getWorkflow(workflowId);\n const { runId: newRunId } = await workflow.createRun({ runId: prevRunId, resourceId });\n return { runId: newRunId };\n } catch (error) {\n console.error('Error creating workflow run:', error);\n throw error;\n }\n },\n );\n}\n\n/**\n * Hook for canceling workflow runs.\n * Returns a mutation for canceling a running workflow.\n *\n * @example\n * ```tsx\n * const cancelWorkflowRun = useCancelWorkflowRun();\n *\n * // Cancel a run\n * await cancelWorkflowRun.mutateAsync({\n * workflowId: 'my-workflow',\n * runId: 'run-123'\n * });\n * ```\n */\nexport function useCancelWorkflowRun() {\n const client = useMastraClient();\n\n return useMutation<CancelWorkflowRunResult, Error, CancelWorkflowRunParams>(async ({ workflowId, runId }) => {\n try {\n const workflow = client.getWorkflow(workflowId);\n const run = await workflow.createRun({ runId });\n return run.cancelRun();\n } catch (error) {\n console.error('Error canceling workflow run:', error);\n throw error;\n }\n });\n}\n"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { n as useMastraClient } from "./mastra-client-context-
|
|
2
|
-
import { a as CLIENT_MESSAGE_ID_KEY, n as accumulateNetworkChunk, o as convertSignalDataToBase64String, r as finishStreamingAssistantMessage, s as encodeFilePartDataForStorage, t as accumulateChunk } from "./accumulator-
|
|
1
|
+
import { n as useMastraClient } from "./mastra-client-context-DQ5z_ze9.js";
|
|
2
|
+
import { a as CLIENT_MESSAGE_ID_KEY, n as accumulateNetworkChunk, o as convertSignalDataToBase64String, r as finishStreamingAssistantMessage, s as encodeFilePartDataForStorage, t as accumulateChunk } from "./accumulator-DysrPe6U.js";
|
|
3
3
|
import { MastraClient } from "@mastra/client-js";
|
|
4
4
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
5
5
|
import { v4 } from "@lukeed/uuid";
|
|
6
6
|
import { AIV5Adapter } from "@mastra/core/agent/message-list";
|
|
7
|
-
|
|
7
|
+
// src/lib/mastra-db/fromCoreUserMessage.ts
|
|
8
8
|
/**
|
|
9
9
|
* Convert a CoreUserMessage into a canonical `MastraDBMessage` (`format: 2`).
|
|
10
10
|
*
|
|
@@ -61,8 +61,7 @@ const fromCoreUserMessageToMastraDBMessage = (coreUserMessage) => newUserMessage
|
|
|
61
61
|
* display conversion alone cannot combine separately persisted messages.
|
|
62
62
|
*/
|
|
63
63
|
const fromCoreUserMessagesToMastraDBMessage = (coreUserMessages) => newUserMessage(coreUserMessages.flatMap(coreUserMessageToParts));
|
|
64
|
-
|
|
65
|
-
//#region src/agent/extract-tasks.ts
|
|
64
|
+
// src/agent/extract-tasks.ts
|
|
66
65
|
const TASK_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
67
66
|
"task_write",
|
|
68
67
|
"task_update",
|
|
@@ -144,8 +143,7 @@ const extractLatestTasksFromMessages = (messages) => {
|
|
|
144
143
|
}
|
|
145
144
|
return latest ?? [];
|
|
146
145
|
};
|
|
147
|
-
|
|
148
|
-
//#region src/agent/extractRunIdFromMessages.ts
|
|
146
|
+
// src/agent/extractRunIdFromMessages.ts
|
|
149
147
|
const isRecord = (value) => value !== null && typeof value === "object";
|
|
150
148
|
const runIdMetadataKeys = [
|
|
151
149
|
"pendingToolApprovals",
|
|
@@ -172,8 +170,7 @@ const getRunIdMetadataSources = (metadata) => {
|
|
|
172
170
|
const extractRunIdFromMessages = (messages) => {
|
|
173
171
|
for (const message of messages) for (const source of getRunIdMetadataSources(message.content?.metadata)) for (const entry of Object.values(source)) if (isRecord(entry) && typeof entry.runId === "string" && entry.runId.length > 0) return entry.runId;
|
|
174
172
|
};
|
|
175
|
-
|
|
176
|
-
//#region src/agent/merge-history.ts
|
|
173
|
+
// src/agent/merge-history.ts
|
|
177
174
|
const liveClientMessageId = (message) => {
|
|
178
175
|
const clientMessageId = message.content.metadata?.[CLIENT_MESSAGE_ID_KEY];
|
|
179
176
|
return typeof clientMessageId === "string" ? clientMessageId : void 0;
|
|
@@ -212,8 +209,7 @@ const mergeHistoryIntoConversation = ({ conversation, history, previousHistory }
|
|
|
212
209
|
});
|
|
213
210
|
return [...mergedHistory, ...unstoredLive];
|
|
214
211
|
};
|
|
215
|
-
|
|
216
|
-
//#region src/agent/user-message.ts
|
|
212
|
+
// src/agent/user-message.ts
|
|
217
213
|
const messageParts = (message) => {
|
|
218
214
|
const parts = typeof message.content === "string" ? [{
|
|
219
215
|
type: "text",
|
|
@@ -241,8 +237,7 @@ const createUserMessage = (text, attachments = []) => ({
|
|
|
241
237
|
text
|
|
242
238
|
}] : [], ...attachments.flatMap(messageParts)]
|
|
243
239
|
});
|
|
244
|
-
|
|
245
|
-
//#region src/agent/hooks.ts
|
|
240
|
+
// src/agent/hooks.ts
|
|
246
241
|
const extractPendingToolApprovalIdsFromMessages = (messages, runId) => {
|
|
247
242
|
const pendingToolApprovalIds = /* @__PURE__ */ new Set();
|
|
248
243
|
for (const message of messages) {
|
|
@@ -1286,7 +1281,6 @@ const useChat = ({ agentId, resourceId, threadId, initialMessages, requestContex
|
|
|
1286
1281
|
networkToolCallApprovals
|
|
1287
1282
|
};
|
|
1288
1283
|
};
|
|
1289
|
-
//#endregion
|
|
1290
1284
|
export { fromCoreUserMessageToMastraDBMessage as n, fromCoreUserMessagesToMastraDBMessage as r, useChat as t };
|
|
1291
1285
|
|
|
1292
|
-
//# sourceMappingURL=hooks-
|
|
1286
|
+
//# sourceMappingURL=hooks-CEikbhrN.js.map
|