@mastra/playground-ui 60.0.0-alpha.6 → 60.0.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32,6 +32,7 @@ require('react-hook-form');
32
32
  require('../../../../lib/form/field-context.cjs.js');
33
33
  require('../../../../lib/form/utils.cjs.js');
34
34
  require('date-fns');
35
+ require('../../../../popover-lBqKiPtp.cjs');
35
36
  require('@autoform/core');
36
37
  require('@autoform/react');
37
38
  require('../../../../lib/form/components/form.cjs.js');
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-badge.cjs.js","sources":["../../../../../src/domains/chat/tools/badges/workflow-badge.tsx"],"sourcesContent":["import type { GetWorkflowResponse } from '@mastra/client-js';\nimport { Eye } from 'lucide-react';\nimport { useContext, useEffect } from 'react';\nimport { BackgroundTaskMetadataDialogTrigger } from './background-task-metadata-dialog';\nimport type { MessageMetadata } from '@/domains/chat';\n\nimport { BadgeWrapper } from '@/domains/chat/components/badge-wrapper';\nimport { LoadingBadge } from '@/domains/chat/components/loading-badge';\nimport { NetworkChoiceMetadataDialogTrigger } from '@/domains/chat/components/network-choice-metadata-dialog';\nimport { SectionLabel } from '@/domains/chat/components/section-label';\nimport type { ToolApprovalButtonsProps } from '@/domains/chat/tools/badges/tool-approval-buttons';\nimport { ToolApprovalButtons } from '@/domains/chat/tools/badges/tool-approval-buttons';\nimport { useEntityRequestContext } from '@/domains/request-context/hooks/use-entity-request-context';\nimport {\n WorkflowGraph,\n WorkflowRunContext,\n WorkflowSelectedStepProvider,\n WorkflowStepDetailProvider,\n useWorkflowStepDetail,\n} from '@/domains/workflows';\nimport { WorkflowStepDetailContent } from '@/domains/workflows/components/workflow-step-detail';\nimport { PlaygroundWorkflowRunProvider } from '@/domains/workflows/context/playground-workflow-run-provider';\nimport type { WorkflowRunStreamResult } from '@/domains/workflows/context/workflow-run-context';\nimport { useWorkflow } from '@/domains/workflows/hooks/use-workflow';\nimport { ToolCallMono } from '@/ds/components/ai/tool-call';\nimport { Button } from '@/ds/components/Button';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { useLinkComponent } from '@/lib/framework';\n\nexport interface WorkflowBadgeProps extends Omit<ToolApprovalButtonsProps, 'toolCalled'> {\n workflowId: string;\n result?: any;\n isStreaming?: boolean;\n metadata?: MessageMetadata;\n suspendPayload?: any;\n toolCalled?: boolean;\n}\n\nexport const WorkflowBadge = ({\n result,\n workflowId,\n isStreaming,\n metadata,\n toolCallId,\n toolApprovalMetadata,\n suspendPayload,\n toolName,\n isNetwork,\n toolCalled,\n}: WorkflowBadgeProps) => {\n const { runId, status } = result || {};\n const { data: workflow, isLoading: isWorkflowLoading } = useWorkflow(\n workflowId,\n useEntityRequestContext('workflow', workflowId)[0],\n );\n const routingDecision = metadata?.mode === 'network' ? metadata.routingDecision : undefined;\n const selectionReason =\n metadata?.mode === 'network' ? (routingDecision?.selectionReason ?? metadata.selectionReason) : undefined;\n const agentNetworkInput = metadata?.mode === 'network' ? (routingDecision ?? metadata.agentInput) : undefined;\n\n const bgEntry =\n (metadata?.mode === 'stream' || metadata?.mode === 'generate') && metadata?.backgroundTasks\n ? metadata.backgroundTasks[toolCallId]\n : undefined;\n\n let suspendPayloadSlot =\n typeof suspendPayload === 'string' ? (\n <ToolCallMono copyText={suspendPayload} className=\"text-muted-foreground\">\n {suspendPayload}\n </ToolCallMono>\n ) : (\n <CodeEditor data={suspendPayload} data-testid=\"tool-suspend-payload\" />\n );\n\n if (isWorkflowLoading || !workflow) return <LoadingBadge />;\n\n return (\n <BadgeWrapper\n data-testid=\"workflow-badge\"\n icon={<WorkflowIcon className=\"text-accent3\" />}\n title={workflow.name}\n initialCollapsed={false}\n extraInfo={\n metadata?.mode === 'network' ? (\n <NetworkChoiceMetadataDialogTrigger\n selectionReason={selectionReason ?? ''}\n input={agentNetworkInput as string | Record<string, unknown> | undefined}\n />\n ) : bgEntry?.taskId && bgEntry?.startedAt ? (\n <BackgroundTaskMetadataDialogTrigger backgroundTask={bgEntry} />\n ) : null\n }\n >\n {!isStreaming && runId && (\n <PlaygroundWorkflowRunProvider workflowId={workflowId} initialRunId={runId} withoutTimeTravel>\n <WorkflowBadgeExtended workflowId={workflowId} workflow={workflow} runId={runId} />\n </PlaygroundWorkflowRunProvider>\n )}\n\n {isStreaming && <WorkflowBadgeExtended workflowId={workflowId} workflow={workflow} runId={runId} />}\n\n {suspendPayloadSlot !== undefined && suspendPayload && (\n <div>\n <SectionLabel>Workflow suspend payload</SectionLabel>\n {suspendPayloadSlot}\n </div>\n )}\n\n <ToolApprovalButtons\n toolCalled={toolCalled ?? !!status}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n toolName={toolName}\n isNetwork={isNetwork}\n isGenerateMode={metadata?.mode === 'generate'}\n />\n </BadgeWrapper>\n );\n};\n\ninterface WorkflowBadgeExtendedProps {\n workflowId: string;\n runId?: string;\n workflow: GetWorkflowResponse;\n}\n\nconst WorkflowBadgeExtended = ({ workflowId, workflow, runId }: WorkflowBadgeExtendedProps) => {\n const requestContext = useEntityRequestContext('workflow', workflowId)[0];\n const { Link } = useLinkComponent();\n const { isLoadingRunExecutionResult } = useContext(WorkflowRunContext);\n\n return (\n <>\n <div className=\"flex items-center gap-2 pb-2\">\n <Button icon={<WorkflowIcon />} render={<Link href={`/workflows/${workflowId}/graph`} />}>\n Go to workflow\n </Button>\n {runId && (\n <Button icon={<Eye />} render={<Link href={`/workflows/${workflowId}/graph/${runId}`} />}>\n See run\n </Button>\n )}\n </div>\n\n <WorkflowSelectedStepProvider>\n <WorkflowStepDetailProvider>\n <div className=\"h-[60vh] w-full overflow-hidden rounded-md\">\n <WorkflowGraph\n workflowId={workflowId}\n workflow={workflow}\n isLoading={isLoadingRunExecutionResult}\n requestContext={requestContext}\n />\n </div>\n <WorkflowBadgeStepDetail requestContext={requestContext} />\n </WorkflowStepDetailProvider>\n </WorkflowSelectedStepProvider>\n </>\n );\n};\n\nconst WorkflowBadgeStepDetail = ({ requestContext }: { requestContext: Record<string, any> }) => {\n const { stepDetail } = useWorkflowStepDetail();\n if (!stepDetail) return null;\n return (\n <div className=\"mt-2 flex max-h-[60vh] flex-col overflow-hidden rounded-md border border-border bg-background\">\n <WorkflowStepDetailContent requestContext={requestContext} />\n </div>\n );\n};\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const useWorkflowStream = (workflowFullState?: WorkflowRunStreamResult) => {\n const { setResult } = useContext(WorkflowRunContext);\n\n useEffect(() => {\n if (!workflowFullState) return;\n setResult(workflowFullState);\n }, [workflowFullState, setResult]);\n};\n"],"names":["useWorkflow","useEntityRequestContext","jsx","ToolCallMono","CodeEditor","LoadingBadge","jsxs","BadgeWrapper","WorkflowIcon","NetworkChoiceMetadataDialogTrigger","BackgroundTaskMetadataDialogTrigger","PlaygroundWorkflowRunProvider","SectionLabel","ToolApprovalButtons","useLinkComponent","useContext","WorkflowRunContext","Fragment","Button","Eye","WorkflowSelectedStepProvider","WorkflowStepDetailProvider","WorkflowGraph","useWorkflowStepDetail","WorkflowStepDetailContent","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"workflow-badge.cjs.js","sources":["../../../../../src/domains/chat/tools/badges/workflow-badge.tsx"],"sourcesContent":["import type { GetWorkflowResponse } from '@mastra/client-js';\nimport { Eye } from 'lucide-react';\nimport { useContext, useEffect } from 'react';\nimport { BackgroundTaskMetadataDialogTrigger } from './background-task-metadata-dialog';\nimport type { MessageMetadata } from '@/domains/chat';\n\nimport { BadgeWrapper } from '@/domains/chat/components/badge-wrapper';\nimport { LoadingBadge } from '@/domains/chat/components/loading-badge';\nimport { NetworkChoiceMetadataDialogTrigger } from '@/domains/chat/components/network-choice-metadata-dialog';\nimport { SectionLabel } from '@/domains/chat/components/section-label';\nimport type { ToolApprovalButtonsProps } from '@/domains/chat/tools/badges/tool-approval-buttons';\nimport { ToolApprovalButtons } from '@/domains/chat/tools/badges/tool-approval-buttons';\nimport { useEntityRequestContext } from '@/domains/request-context/hooks/use-entity-request-context';\nimport {\n WorkflowGraph,\n WorkflowRunContext,\n WorkflowSelectedStepProvider,\n WorkflowStepDetailProvider,\n useWorkflowStepDetail,\n} from '@/domains/workflows';\nimport { WorkflowStepDetailContent } from '@/domains/workflows/components/workflow-step-detail';\nimport { PlaygroundWorkflowRunProvider } from '@/domains/workflows/context/playground-workflow-run-provider';\nimport type { WorkflowRunStreamResult } from '@/domains/workflows/context/workflow-run-context';\nimport { useWorkflow } from '@/domains/workflows/hooks/use-workflow';\nimport { ToolCallMono } from '@/ds/components/ai/tool-call';\nimport { Button } from '@/ds/components/Button';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { useLinkComponent } from '@/lib/framework';\n\nexport interface WorkflowBadgeProps extends Omit<ToolApprovalButtonsProps, 'toolCalled'> {\n workflowId: string;\n result?: any;\n isStreaming?: boolean;\n metadata?: MessageMetadata;\n suspendPayload?: any;\n toolCalled?: boolean;\n}\n\nexport const WorkflowBadge = ({\n result,\n workflowId,\n isStreaming,\n metadata,\n toolCallId,\n toolApprovalMetadata,\n suspendPayload,\n toolName,\n isNetwork,\n toolCalled,\n}: WorkflowBadgeProps) => {\n const { runId, status } = result || {};\n const { data: workflow, isLoading: isWorkflowLoading } = useWorkflow(\n workflowId,\n useEntityRequestContext('workflow', workflowId)[0],\n );\n const routingDecision = metadata?.mode === 'network' ? metadata.routingDecision : undefined;\n const selectionReason =\n metadata?.mode === 'network' ? (routingDecision?.selectionReason ?? metadata.selectionReason) : undefined;\n const agentNetworkInput = metadata?.mode === 'network' ? (routingDecision ?? metadata.agentInput) : undefined;\n\n const bgEntry =\n (metadata?.mode === 'stream' || metadata?.mode === 'generate') && metadata?.backgroundTasks\n ? metadata.backgroundTasks[toolCallId]\n : undefined;\n\n let suspendPayloadSlot =\n typeof suspendPayload === 'string' ? (\n <ToolCallMono copyText={suspendPayload} className=\"text-muted-foreground\">\n {suspendPayload}\n </ToolCallMono>\n ) : (\n <CodeEditor data={suspendPayload} data-testid=\"tool-suspend-payload\" />\n );\n\n if (isWorkflowLoading || !workflow) return <LoadingBadge />;\n\n return (\n <BadgeWrapper\n data-testid=\"workflow-badge\"\n icon={<WorkflowIcon className=\"text-accent3\" />}\n title={workflow.name}\n initialCollapsed={false}\n extraInfo={\n metadata?.mode === 'network' ? (\n <NetworkChoiceMetadataDialogTrigger\n selectionReason={selectionReason ?? ''}\n input={agentNetworkInput as string | Record<string, unknown> | undefined}\n />\n ) : bgEntry?.taskId && bgEntry?.startedAt ? (\n <BackgroundTaskMetadataDialogTrigger backgroundTask={bgEntry} />\n ) : null\n }\n >\n {!isStreaming && runId && (\n <PlaygroundWorkflowRunProvider workflowId={workflowId} initialRunId={runId} withoutTimeTravel>\n <WorkflowBadgeExtended workflowId={workflowId} workflow={workflow} runId={runId} />\n </PlaygroundWorkflowRunProvider>\n )}\n\n {isStreaming && <WorkflowBadgeExtended workflowId={workflowId} workflow={workflow} runId={runId} />}\n\n {suspendPayloadSlot !== undefined && suspendPayload && (\n <div>\n <SectionLabel>Workflow suspend payload</SectionLabel>\n {suspendPayloadSlot}\n </div>\n )}\n\n <ToolApprovalButtons\n toolCalled={toolCalled ?? !!status}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n toolName={toolName}\n isNetwork={isNetwork}\n isGenerateMode={metadata?.mode === 'generate'}\n />\n </BadgeWrapper>\n );\n};\n\ninterface WorkflowBadgeExtendedProps {\n workflowId: string;\n runId?: string;\n workflow: GetWorkflowResponse;\n}\n\nconst WorkflowBadgeExtended = ({ workflowId, workflow, runId }: WorkflowBadgeExtendedProps) => {\n const requestContext = useEntityRequestContext('workflow', workflowId)[0];\n const { Link } = useLinkComponent();\n const { isLoadingRunExecutionResult } = useContext(WorkflowRunContext);\n\n return (\n <>\n <div className=\"flex items-center gap-2 pb-2\">\n <Button icon={<WorkflowIcon />} render={<Link href={`/workflows/${workflowId}/graph`} />}>\n Go to workflow\n </Button>\n {runId && (\n <Button icon={<Eye />} render={<Link href={`/workflows/${workflowId}/graph/${runId}`} />}>\n See run\n </Button>\n )}\n </div>\n\n <WorkflowSelectedStepProvider>\n <WorkflowStepDetailProvider>\n <div className=\"h-[60vh] w-full overflow-hidden rounded-md\">\n <WorkflowGraph\n workflowId={workflowId}\n workflow={workflow}\n isLoading={isLoadingRunExecutionResult}\n requestContext={requestContext}\n />\n </div>\n <WorkflowBadgeStepDetail requestContext={requestContext} />\n </WorkflowStepDetailProvider>\n </WorkflowSelectedStepProvider>\n </>\n );\n};\n\nconst WorkflowBadgeStepDetail = ({ requestContext }: { requestContext: Record<string, any> }) => {\n const { stepDetail } = useWorkflowStepDetail();\n if (!stepDetail) return null;\n return (\n <div className=\"mt-2 flex max-h-[60vh] flex-col overflow-hidden rounded-md border border-border bg-background\">\n <WorkflowStepDetailContent requestContext={requestContext} />\n </div>\n );\n};\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const useWorkflowStream = (workflowFullState?: WorkflowRunStreamResult) => {\n const { setResult } = useContext(WorkflowRunContext);\n\n useEffect(() => {\n if (!workflowFullState) return;\n setResult(workflowFullState);\n }, [workflowFullState, setResult]);\n};\n"],"names":["useWorkflow","useEntityRequestContext","jsx","ToolCallMono","CodeEditor","LoadingBadge","jsxs","BadgeWrapper","WorkflowIcon","NetworkChoiceMetadataDialogTrigger","BackgroundTaskMetadataDialogTrigger","PlaygroundWorkflowRunProvider","SectionLabel","ToolApprovalButtons","useLinkComponent","useContext","WorkflowRunContext","Fragment","Button","Eye","WorkflowSelectedStepProvider","WorkflowStepDetailProvider","WorkflowGraph","useWorkflowStepDetail","WorkflowStepDetailContent","useEffect"],"mappings":"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"}
@@ -28,6 +28,7 @@ import 'react-hook-form';
28
28
  import '../../../../lib/form/field-context.es.js';
29
29
  import '../../../../lib/form/utils.es.js';
30
30
  import 'date-fns';
31
+ import '../../../../popover-Dg70UGyn.js';
31
32
  import '@autoform/core';
32
33
  import '@autoform/react';
33
34
  import '../../../../lib/form/components/form.es.js';
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-badge.es.js","sources":["../../../../../src/domains/chat/tools/badges/workflow-badge.tsx"],"sourcesContent":["import type { GetWorkflowResponse } from '@mastra/client-js';\nimport { Eye } from 'lucide-react';\nimport { useContext, useEffect } from 'react';\nimport { BackgroundTaskMetadataDialogTrigger } from './background-task-metadata-dialog';\nimport type { MessageMetadata } from '@/domains/chat';\n\nimport { BadgeWrapper } from '@/domains/chat/components/badge-wrapper';\nimport { LoadingBadge } from '@/domains/chat/components/loading-badge';\nimport { NetworkChoiceMetadataDialogTrigger } from '@/domains/chat/components/network-choice-metadata-dialog';\nimport { SectionLabel } from '@/domains/chat/components/section-label';\nimport type { ToolApprovalButtonsProps } from '@/domains/chat/tools/badges/tool-approval-buttons';\nimport { ToolApprovalButtons } from '@/domains/chat/tools/badges/tool-approval-buttons';\nimport { useEntityRequestContext } from '@/domains/request-context/hooks/use-entity-request-context';\nimport {\n WorkflowGraph,\n WorkflowRunContext,\n WorkflowSelectedStepProvider,\n WorkflowStepDetailProvider,\n useWorkflowStepDetail,\n} from '@/domains/workflows';\nimport { WorkflowStepDetailContent } from '@/domains/workflows/components/workflow-step-detail';\nimport { PlaygroundWorkflowRunProvider } from '@/domains/workflows/context/playground-workflow-run-provider';\nimport type { WorkflowRunStreamResult } from '@/domains/workflows/context/workflow-run-context';\nimport { useWorkflow } from '@/domains/workflows/hooks/use-workflow';\nimport { ToolCallMono } from '@/ds/components/ai/tool-call';\nimport { Button } from '@/ds/components/Button';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { useLinkComponent } from '@/lib/framework';\n\nexport interface WorkflowBadgeProps extends Omit<ToolApprovalButtonsProps, 'toolCalled'> {\n workflowId: string;\n result?: any;\n isStreaming?: boolean;\n metadata?: MessageMetadata;\n suspendPayload?: any;\n toolCalled?: boolean;\n}\n\nexport const WorkflowBadge = ({\n result,\n workflowId,\n isStreaming,\n metadata,\n toolCallId,\n toolApprovalMetadata,\n suspendPayload,\n toolName,\n isNetwork,\n toolCalled,\n}: WorkflowBadgeProps) => {\n const { runId, status } = result || {};\n const { data: workflow, isLoading: isWorkflowLoading } = useWorkflow(\n workflowId,\n useEntityRequestContext('workflow', workflowId)[0],\n );\n const routingDecision = metadata?.mode === 'network' ? metadata.routingDecision : undefined;\n const selectionReason =\n metadata?.mode === 'network' ? (routingDecision?.selectionReason ?? metadata.selectionReason) : undefined;\n const agentNetworkInput = metadata?.mode === 'network' ? (routingDecision ?? metadata.agentInput) : undefined;\n\n const bgEntry =\n (metadata?.mode === 'stream' || metadata?.mode === 'generate') && metadata?.backgroundTasks\n ? metadata.backgroundTasks[toolCallId]\n : undefined;\n\n let suspendPayloadSlot =\n typeof suspendPayload === 'string' ? (\n <ToolCallMono copyText={suspendPayload} className=\"text-muted-foreground\">\n {suspendPayload}\n </ToolCallMono>\n ) : (\n <CodeEditor data={suspendPayload} data-testid=\"tool-suspend-payload\" />\n );\n\n if (isWorkflowLoading || !workflow) return <LoadingBadge />;\n\n return (\n <BadgeWrapper\n data-testid=\"workflow-badge\"\n icon={<WorkflowIcon className=\"text-accent3\" />}\n title={workflow.name}\n initialCollapsed={false}\n extraInfo={\n metadata?.mode === 'network' ? (\n <NetworkChoiceMetadataDialogTrigger\n selectionReason={selectionReason ?? ''}\n input={agentNetworkInput as string | Record<string, unknown> | undefined}\n />\n ) : bgEntry?.taskId && bgEntry?.startedAt ? (\n <BackgroundTaskMetadataDialogTrigger backgroundTask={bgEntry} />\n ) : null\n }\n >\n {!isStreaming && runId && (\n <PlaygroundWorkflowRunProvider workflowId={workflowId} initialRunId={runId} withoutTimeTravel>\n <WorkflowBadgeExtended workflowId={workflowId} workflow={workflow} runId={runId} />\n </PlaygroundWorkflowRunProvider>\n )}\n\n {isStreaming && <WorkflowBadgeExtended workflowId={workflowId} workflow={workflow} runId={runId} />}\n\n {suspendPayloadSlot !== undefined && suspendPayload && (\n <div>\n <SectionLabel>Workflow suspend payload</SectionLabel>\n {suspendPayloadSlot}\n </div>\n )}\n\n <ToolApprovalButtons\n toolCalled={toolCalled ?? !!status}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n toolName={toolName}\n isNetwork={isNetwork}\n isGenerateMode={metadata?.mode === 'generate'}\n />\n </BadgeWrapper>\n );\n};\n\ninterface WorkflowBadgeExtendedProps {\n workflowId: string;\n runId?: string;\n workflow: GetWorkflowResponse;\n}\n\nconst WorkflowBadgeExtended = ({ workflowId, workflow, runId }: WorkflowBadgeExtendedProps) => {\n const requestContext = useEntityRequestContext('workflow', workflowId)[0];\n const { Link } = useLinkComponent();\n const { isLoadingRunExecutionResult } = useContext(WorkflowRunContext);\n\n return (\n <>\n <div className=\"flex items-center gap-2 pb-2\">\n <Button icon={<WorkflowIcon />} render={<Link href={`/workflows/${workflowId}/graph`} />}>\n Go to workflow\n </Button>\n {runId && (\n <Button icon={<Eye />} render={<Link href={`/workflows/${workflowId}/graph/${runId}`} />}>\n See run\n </Button>\n )}\n </div>\n\n <WorkflowSelectedStepProvider>\n <WorkflowStepDetailProvider>\n <div className=\"h-[60vh] w-full overflow-hidden rounded-md\">\n <WorkflowGraph\n workflowId={workflowId}\n workflow={workflow}\n isLoading={isLoadingRunExecutionResult}\n requestContext={requestContext}\n />\n </div>\n <WorkflowBadgeStepDetail requestContext={requestContext} />\n </WorkflowStepDetailProvider>\n </WorkflowSelectedStepProvider>\n </>\n );\n};\n\nconst WorkflowBadgeStepDetail = ({ requestContext }: { requestContext: Record<string, any> }) => {\n const { stepDetail } = useWorkflowStepDetail();\n if (!stepDetail) return null;\n return (\n <div className=\"mt-2 flex max-h-[60vh] flex-col overflow-hidden rounded-md border border-border bg-background\">\n <WorkflowStepDetailContent requestContext={requestContext} />\n </div>\n );\n};\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const useWorkflowStream = (workflowFullState?: WorkflowRunStreamResult) => {\n const { setResult } = useContext(WorkflowRunContext);\n\n useEffect(() => {\n if (!workflowFullState) return;\n setResult(workflowFullState);\n }, [workflowFullState, setResult]);\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-badge.es.js","sources":["../../../../../src/domains/chat/tools/badges/workflow-badge.tsx"],"sourcesContent":["import type { GetWorkflowResponse } from '@mastra/client-js';\nimport { Eye } from 'lucide-react';\nimport { useContext, useEffect } from 'react';\nimport { BackgroundTaskMetadataDialogTrigger } from './background-task-metadata-dialog';\nimport type { MessageMetadata } from '@/domains/chat';\n\nimport { BadgeWrapper } from '@/domains/chat/components/badge-wrapper';\nimport { LoadingBadge } from '@/domains/chat/components/loading-badge';\nimport { NetworkChoiceMetadataDialogTrigger } from '@/domains/chat/components/network-choice-metadata-dialog';\nimport { SectionLabel } from '@/domains/chat/components/section-label';\nimport type { ToolApprovalButtonsProps } from '@/domains/chat/tools/badges/tool-approval-buttons';\nimport { ToolApprovalButtons } from '@/domains/chat/tools/badges/tool-approval-buttons';\nimport { useEntityRequestContext } from '@/domains/request-context/hooks/use-entity-request-context';\nimport {\n WorkflowGraph,\n WorkflowRunContext,\n WorkflowSelectedStepProvider,\n WorkflowStepDetailProvider,\n useWorkflowStepDetail,\n} from '@/domains/workflows';\nimport { WorkflowStepDetailContent } from '@/domains/workflows/components/workflow-step-detail';\nimport { PlaygroundWorkflowRunProvider } from '@/domains/workflows/context/playground-workflow-run-provider';\nimport type { WorkflowRunStreamResult } from '@/domains/workflows/context/workflow-run-context';\nimport { useWorkflow } from '@/domains/workflows/hooks/use-workflow';\nimport { ToolCallMono } from '@/ds/components/ai/tool-call';\nimport { Button } from '@/ds/components/Button';\nimport { CodeEditor } from '@/ds/components/CodeEditor';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { useLinkComponent } from '@/lib/framework';\n\nexport interface WorkflowBadgeProps extends Omit<ToolApprovalButtonsProps, 'toolCalled'> {\n workflowId: string;\n result?: any;\n isStreaming?: boolean;\n metadata?: MessageMetadata;\n suspendPayload?: any;\n toolCalled?: boolean;\n}\n\nexport const WorkflowBadge = ({\n result,\n workflowId,\n isStreaming,\n metadata,\n toolCallId,\n toolApprovalMetadata,\n suspendPayload,\n toolName,\n isNetwork,\n toolCalled,\n}: WorkflowBadgeProps) => {\n const { runId, status } = result || {};\n const { data: workflow, isLoading: isWorkflowLoading } = useWorkflow(\n workflowId,\n useEntityRequestContext('workflow', workflowId)[0],\n );\n const routingDecision = metadata?.mode === 'network' ? metadata.routingDecision : undefined;\n const selectionReason =\n metadata?.mode === 'network' ? (routingDecision?.selectionReason ?? metadata.selectionReason) : undefined;\n const agentNetworkInput = metadata?.mode === 'network' ? (routingDecision ?? metadata.agentInput) : undefined;\n\n const bgEntry =\n (metadata?.mode === 'stream' || metadata?.mode === 'generate') && metadata?.backgroundTasks\n ? metadata.backgroundTasks[toolCallId]\n : undefined;\n\n let suspendPayloadSlot =\n typeof suspendPayload === 'string' ? (\n <ToolCallMono copyText={suspendPayload} className=\"text-muted-foreground\">\n {suspendPayload}\n </ToolCallMono>\n ) : (\n <CodeEditor data={suspendPayload} data-testid=\"tool-suspend-payload\" />\n );\n\n if (isWorkflowLoading || !workflow) return <LoadingBadge />;\n\n return (\n <BadgeWrapper\n data-testid=\"workflow-badge\"\n icon={<WorkflowIcon className=\"text-accent3\" />}\n title={workflow.name}\n initialCollapsed={false}\n extraInfo={\n metadata?.mode === 'network' ? (\n <NetworkChoiceMetadataDialogTrigger\n selectionReason={selectionReason ?? ''}\n input={agentNetworkInput as string | Record<string, unknown> | undefined}\n />\n ) : bgEntry?.taskId && bgEntry?.startedAt ? (\n <BackgroundTaskMetadataDialogTrigger backgroundTask={bgEntry} />\n ) : null\n }\n >\n {!isStreaming && runId && (\n <PlaygroundWorkflowRunProvider workflowId={workflowId} initialRunId={runId} withoutTimeTravel>\n <WorkflowBadgeExtended workflowId={workflowId} workflow={workflow} runId={runId} />\n </PlaygroundWorkflowRunProvider>\n )}\n\n {isStreaming && <WorkflowBadgeExtended workflowId={workflowId} workflow={workflow} runId={runId} />}\n\n {suspendPayloadSlot !== undefined && suspendPayload && (\n <div>\n <SectionLabel>Workflow suspend payload</SectionLabel>\n {suspendPayloadSlot}\n </div>\n )}\n\n <ToolApprovalButtons\n toolCalled={toolCalled ?? !!status}\n toolCallId={toolCallId}\n toolApprovalMetadata={toolApprovalMetadata}\n toolName={toolName}\n isNetwork={isNetwork}\n isGenerateMode={metadata?.mode === 'generate'}\n />\n </BadgeWrapper>\n );\n};\n\ninterface WorkflowBadgeExtendedProps {\n workflowId: string;\n runId?: string;\n workflow: GetWorkflowResponse;\n}\n\nconst WorkflowBadgeExtended = ({ workflowId, workflow, runId }: WorkflowBadgeExtendedProps) => {\n const requestContext = useEntityRequestContext('workflow', workflowId)[0];\n const { Link } = useLinkComponent();\n const { isLoadingRunExecutionResult } = useContext(WorkflowRunContext);\n\n return (\n <>\n <div className=\"flex items-center gap-2 pb-2\">\n <Button icon={<WorkflowIcon />} render={<Link href={`/workflows/${workflowId}/graph`} />}>\n Go to workflow\n </Button>\n {runId && (\n <Button icon={<Eye />} render={<Link href={`/workflows/${workflowId}/graph/${runId}`} />}>\n See run\n </Button>\n )}\n </div>\n\n <WorkflowSelectedStepProvider>\n <WorkflowStepDetailProvider>\n <div className=\"h-[60vh] w-full overflow-hidden rounded-md\">\n <WorkflowGraph\n workflowId={workflowId}\n workflow={workflow}\n isLoading={isLoadingRunExecutionResult}\n requestContext={requestContext}\n />\n </div>\n <WorkflowBadgeStepDetail requestContext={requestContext} />\n </WorkflowStepDetailProvider>\n </WorkflowSelectedStepProvider>\n </>\n );\n};\n\nconst WorkflowBadgeStepDetail = ({ requestContext }: { requestContext: Record<string, any> }) => {\n const { stepDetail } = useWorkflowStepDetail();\n if (!stepDetail) return null;\n return (\n <div className=\"mt-2 flex max-h-[60vh] flex-col overflow-hidden rounded-md border border-border bg-background\">\n <WorkflowStepDetailContent requestContext={requestContext} />\n </div>\n );\n};\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const useWorkflowStream = (workflowFullState?: WorkflowRunStreamResult) => {\n const { setResult } = useContext(WorkflowRunContext);\n\n useEffect(() => {\n if (!workflowFullState) return;\n setResult(workflowFullState);\n }, [workflowFullState, setResult]);\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCO,MAAM,gBAAgB,CAAC;AAAA,EAC5B,MAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,oBAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,KAA0B;AACxB,EAAA,MAAM,EAAE,KAAA,EAAO,MAAA,EAAO,GAAI,UAAU,EAAC;AACrC,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,mBAAkB,GAAI,WAAA;AAAA,IACvD,UAAA;AAAA,IACA,uBAAA,CAAwB,UAAA,EAAY,UAAU,CAAA,CAAE,CAAC;AAAA,GACnD;AACA,EAAA,MAAM,eAAA,GAAkB,QAAA,EAAU,IAAA,KAAS,SAAA,GAAY,SAAS,eAAA,GAAkB,MAAA;AAClF,EAAA,MAAM,kBACJ,QAAA,EAAU,IAAA,KAAS,YAAa,eAAA,EAAiB,eAAA,IAAmB,SAAS,eAAA,GAAmB,MAAA;AAClG,EAAA,MAAM,oBAAoB,QAAA,EAAU,IAAA,KAAS,SAAA,GAAa,eAAA,IAAmB,SAAS,UAAA,GAAc,MAAA;AAEpG,EAAA,MAAM,OAAA,GAAA,CACH,QAAA,EAAU,IAAA,KAAS,QAAA,IAAY,QAAA,EAAU,IAAA,KAAS,UAAA,KAAe,QAAA,EAAU,eAAA,GACxE,QAAA,CAAS,eAAA,CAAgB,UAAU,CAAA,GACnC,MAAA;AAEN,EAAA,IAAI,qBACF,OAAO,cAAA,KAAmB,QAAA,mBACxB,GAAA,CAAC,gBAAa,QAAA,EAAU,cAAA,EAAgB,SAAA,EAAU,uBAAA,EAC/C,0BACH,CAAA,mBAEA,GAAA,CAAC,cAAW,IAAA,EAAM,cAAA,EAAgB,eAAY,sBAAA,EAAuB,CAAA;AAGzE,EAAA,IAAI,iBAAA,IAAqB,CAAC,QAAA,EAAU,2BAAQ,YAAA,EAAA,EAAa,CAAA;AAEzD,EAAA,uBACE,IAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,gBAAA;AAAA,MACZ,IAAA,kBAAM,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,MAC7C,OAAO,QAAA,CAAS,IAAA;AAAA,MAChB,gBAAA,EAAkB,KAAA;AAAA,MAClB,SAAA,EACE,QAAA,EAAU,IAAA,KAAS,SAAA,mBACjB,GAAA;AAAA,QAAC,kCAAA;AAAA,QAAA;AAAA,UACC,iBAAiB,eAAA,IAAmB,EAAA;AAAA,UACpC,KAAA,EAAO;AAAA;AAAA,OACT,GACE,SAAS,MAAA,IAAU,OAAA,EAAS,4BAC9B,GAAA,CAAC,mCAAA,EAAA,EAAoC,cAAA,EAAgB,OAAA,EAAS,CAAA,GAC5D,IAAA;AAAA,MAGL,QAAA,EAAA;AAAA,QAAA,CAAC,WAAA,IAAe,KAAA,oBACf,GAAA,CAAC,6BAAA,EAAA,EAA8B,YAAwB,YAAA,EAAc,KAAA,EAAO,iBAAA,EAAiB,IAAA,EAC3F,QAAA,kBAAA,GAAA,CAAC,qBAAA,EAAA,EAAsB,UAAA,EAAwB,QAAA,EAAoB,OAAc,CAAA,EACnF,CAAA;AAAA,QAGD,WAAA,oBAAe,GAAA,CAAC,qBAAA,EAAA,EAAsB,UAAA,EAAwB,UAAoB,KAAA,EAAc,CAAA;AAAA,QAEhG,kBAAA,KAAuB,MAAA,IAAa,cAAA,oBACnC,IAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,gBAAa,QAAA,EAAA,0BAAA,EAAwB,CAAA;AAAA,UACrC;AAAA,SAAA,EACH,CAAA;AAAA,wBAGF,GAAA;AAAA,UAAC,mBAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAY,UAAA,IAAc,CAAC,CAAC,MAAA;AAAA,YAC5B,UAAA;AAAA,YACA,oBAAA;AAAA,YACA,QAAA;AAAA,YACA,SAAA;AAAA,YACA,cAAA,EAAgB,UAAU,IAAA,KAAS;AAAA;AAAA;AACrC;AAAA;AAAA,GACF;AAEJ;AAQA,MAAM,wBAAwB,CAAC,EAAE,UAAA,EAAY,QAAA,EAAU,OAAM,KAAkC;AAC7F,EAAA,MAAM,cAAA,GAAiB,uBAAA,CAAwB,UAAA,EAAY,UAAU,EAAE,CAAC,CAAA;AACxE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,gBAAA,EAAiB;AAClC,EAAA,MAAM,EAAE,2BAAA,EAA4B,GAAI,UAAA,CAAW,kBAAkB,CAAA;AAErE,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,8BAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,kBAAM,GAAA,CAAC,YAAA,EAAA,EAAa,CAAA,EAAI,MAAA,kBAAQ,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,CAAA,WAAA,EAAc,UAAU,CAAA,MAAA,CAAA,EAAU,GAAI,QAAA,EAAA,gBAAA,EAE1F,CAAA;AAAA,MACC,yBACC,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,kBAAM,GAAA,CAAC,OAAI,CAAA,EAAI,MAAA,kBAAQ,GAAA,CAAC,IAAA,EAAA,EAAK,MAAM,CAAA,WAAA,EAAc,UAAU,UAAU,KAAK,CAAA,CAAA,EAAI,GAAI,QAAA,EAAA,SAAA,EAE1F;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEA,GAAA,CAAC,4BAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,0BAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4CAAA,EACb,QAAA,kBAAA,GAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,UAAA;AAAA,UACA,QAAA;AAAA,UACA,SAAA,EAAW,2BAAA;AAAA,UACX;AAAA;AAAA,OACF,EACF,CAAA;AAAA,sBACA,GAAA,CAAC,2BAAwB,cAAA,EAAgC;AAAA,KAAA,EAC3D,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,MAAM,uBAAA,GAA0B,CAAC,EAAE,cAAA,EAAe,KAA+C;AAC/F,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,qBAAA,EAAsB;AAC7C,EAAA,IAAI,CAAC,YAAY,OAAO,IAAA;AACxB,EAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAU,iGACb,QAAA,kBAAA,GAAA,CAAC,yBAAA,EAAA,EAA0B,gBAAgC,CAAA,EAC7D,CAAA;AAEJ,CAAA;AAGO,MAAM,iBAAA,GAAoB,CAAC,iBAAA,KAAgD;AAChF,EAAA,MAAM,EAAE,SAAA,EAAU,GAAI,UAAA,CAAW,kBAAkB,CAAA;AAEnD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,iBAAA,EAAmB;AACxB,IAAA,SAAA,CAAU,iBAAiB,CAAA;AAAA,EAC7B,CAAA,EAAG,CAAC,iBAAA,EAAmB,SAAS,CAAC,CAAA;AACnC;;;;"}
@@ -17,6 +17,7 @@ require('../../../lib/form/field-context.cjs.js');
17
17
  const lib_form_utils = require('../../../lib/form/utils.cjs.js');
18
18
  require('../../../Button-CIwF6NHM.cjs');
19
19
  require('date-fns');
20
+ require('../../../popover-lBqKiPtp.cjs');
20
21
  const utils_cn = require('../../../cn-DG0X1KEP.cjs');
21
22
  require('@autoform/core');
22
23
  require('@autoform/react');
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-input-data.cjs.js","sources":["../../../../src/domains/workflows/workflow/workflow-input-data.tsx"],"sourcesContent":["import { ChevronRight, Play } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { useRef, useState } from 'react';\nimport type { ZodSchema } from 'zod';\n\nimport { createProcessorInput, parseProcessorDraft } from './input/processor-input';\nimport type { ProcessorDraft } from './input/processor-input';\nimport { WorkflowJsonInput } from './input/workflow-json-input';\nimport { WorkflowProcessorInput } from './input/workflow-processor-input';\nimport { WorkflowInputTypeToggle } from './workflow-input-type-toggle';\nimport type { WorkflowInputType } from './workflow-input-type-toggle';\nimport { Button } from '@/ds/components/Button';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { DynamicForm } from '@/lib/form';\nimport { isPlainObject } from '@/lib/form/utils';\nimport { getBaseSchema } from '@/lib/form/zod-provider/compat';\nimport { inferFieldType } from '@/lib/form/zod-provider/field-type-inference';\nimport { cn } from '@/utils/cn';\n\nexport interface WorkflowInputDataProps {\n schema: ZodSchema;\n defaultValues?: unknown;\n isSubmitLoading: boolean;\n submitButtonLabel: string;\n onSubmit: (data: any) => void;\n children?: React.ReactNode;\n isProcessorWorkflow?: boolean;\n submitActions?: React.ReactNode;\n leftActions?: React.ReactNode;\n headingSlot?: ReactNode;\n collapsible?: boolean;\n submitButtonIcon?: ReactNode;\n submitButtonVariant?: React.ComponentProps<typeof Button>['variant'];\n submitButtonFullWidth?: boolean;\n hideInputTypeLabel?: boolean;\n inputTypeLabel?: string;\n hideHeading?: boolean;\n}\n\ntype InputDraft =\n | { type: 'json'; value: string }\n | { type: 'form'; value: unknown }\n | { type: 'simple'; value: ProcessorDraft };\n\ntype DraftValue = { ok: true; value: unknown } | { ok: false; error: string };\n\nconst defaultSubmitIcon = (\n <Icon>\n <Play />\n </Icon>\n);\n\nfunction createInitialDraft(defaultValues: unknown, isProcessorWorkflow: boolean | undefined): InputDraft {\n if (!isProcessorWorkflow) return { type: 'form', value: defaultValues };\n const input = defaultValues ?? createProcessorInput();\n const draft = parseProcessorDraft(input);\n return draft ? { type: 'simple', value: draft } : { type: 'json', value: JSON.stringify(input, null, 2) };\n}\n\nfunction parseJsonDraft(text: string): DraftValue {\n try {\n return { ok: true, value: JSON.parse(text) };\n } catch (error) {\n return { ok: false, error: error instanceof Error ? `Invalid JSON: ${error.message}` : 'Invalid JSON' };\n }\n}\n\nfunction getFormShapeError(schema: ZodSchema, value: unknown) {\n const fieldType = inferFieldType(getBaseSchema(schema));\n if (fieldType === 'object' && !isPlainObject(value))\n return 'Form input requires a JSON object. Correct the JSON first.';\n if (fieldType === 'array' && !Array.isArray(value))\n return 'Form input requires a JSON array. Correct the JSON first.';\n return undefined;\n}\n\nexport const WorkflowInputData = ({\n schema,\n defaultValues,\n isSubmitLoading,\n submitButtonLabel,\n onSubmit,\n children,\n isProcessorWorkflow,\n submitActions,\n leftActions,\n headingSlot,\n collapsible = true,\n submitButtonIcon = defaultSubmitIcon,\n submitButtonVariant = 'primary',\n submitButtonFullWidth,\n hideInputTypeLabel,\n inputTypeLabel = 'Run input',\n hideHeading,\n}: WorkflowInputDataProps) => {\n const [draft, setDraft] = useState(() => createInitialDraft(defaultValues, isProcessorWorkflow));\n // The Form view is uncontrolled: state here would only re-render this tree on every keystroke.\n const formValues = useRef<unknown>(defaultValues);\n const [errors, setErrors] = useState<string[]>([]);\n\n function readDraftValue(): DraftValue {\n if (draft.type === 'json') return parseJsonDraft(draft.value);\n return { ok: true, value: draft.type === 'form' ? formValues.current : draft.value };\n }\n\n function submitJsonDraft(text: string) {\n const json = parseJsonDraft(text);\n if (!json.ok) return setErrors([json.error]);\n const result = schema.safeParse(json.value);\n if (result.success) onSubmit(result.data);\n else setErrors(result.error.issues.map(issue => `${issue.path.join('.') || 'Input'}: ${issue.message}`));\n }\n\n function changeInputType(type: WorkflowInputType) {\n if (type === draft.type) return;\n setErrors([]);\n const current = readDraftValue();\n if (!current.ok) return setErrors([current.error]);\n if (type === 'json') {\n return setDraft({ type, value: JSON.stringify(current.value === undefined ? {} : current.value, null, 2) });\n }\n if (type === 'simple') {\n const processorDraft = parseProcessorDraft(current.value);\n if (processorDraft) return setDraft({ type, value: processorDraft });\n return setErrors([\n 'Simple input requires a messages array with text parts and a string phase. Correct the JSON first.',\n ]);\n }\n const formShapeError = getFormShapeError(schema, current.value);\n return formShapeError ? setErrors([formShapeError]) : setDraft({ type, value: current.value });\n }\n\n const defaultHeading = (\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\">\n Trigger a run\n </Txt>\n );\n const toggleSitsInLabelRow = !collapsible && !hideHeading;\n const toggleSitsAboveInput = collapsible || hideHeading || hideInputTypeLabel;\n const inputTypeToggle = (\n <WorkflowInputTypeToggle\n value={draft.type}\n onChange={changeInputType}\n disabled={isSubmitLoading}\n includeSimple={isProcessorWorkflow}\n compact={toggleSitsInLabelRow}\n />\n );\n\n const body = (\n <>\n {!hideInputTypeLabel && (\n <div className=\"flex justify-between gap-3 px-5 py-3\">\n <Txt as=\"p\" variant=\"caption\" tone=\"muted\">\n {inputTypeLabel}\n </Txt>\n {toggleSitsInLabelRow && <div className=\"shrink-0\">{inputTypeToggle}</div>}\n </div>\n )}\n\n <div className=\"px-5\">\n {toggleSitsAboveInput && <div className=\"pb-4\">{inputTypeToggle}</div>}\n\n <div\n className={cn('pb-4', {\n 'pointer-events-none opacity-50': isSubmitLoading,\n })}\n >\n {draft.type === 'json' ? (\n <WorkflowJsonInput\n value={draft.value}\n onChange={value => {\n setDraft({ type: 'json', value });\n setErrors([]);\n }}\n errors={errors}\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={() => submitJsonDraft(draft.value)}\n submitActions={submitActions}\n leftActions={leftActions}\n >\n {children}\n </WorkflowJsonInput>\n ) : draft.type === 'simple' && isProcessorWorkflow ? (\n <WorkflowProcessorInput\n schema={schema}\n value={draft.value}\n onChange={value => setDraft({ type: 'simple', value })}\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={onSubmit}\n submitActions={submitActions}\n leftActions={leftActions}\n >\n {children}\n </WorkflowProcessorInput>\n ) : (\n <WorkflowFormInput\n schema={schema}\n onValuesChange={value => {\n formValues.current = value;\n }}\n defaultValues={draft.value}\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={onSubmit}\n submitActions={submitActions}\n leftActions={leftActions}\n >\n {children}\n </WorkflowFormInput>\n )}\n </div>\n </div>\n </>\n );\n\n if (!collapsible) {\n return (\n <>\n {!hideHeading && <div className=\"border-b border-border/50 pb-3\">{headingSlot ?? defaultHeading}</div>}\n <div>{body}</div>\n </>\n );\n }\n\n return (\n <Collapsible defaultOpen>\n <CollapsibleTrigger className=\"flex w-full items-center gap-2 pb-3 text-left\">\n <ChevronRight className=\"size-4 shrink-0 text-muted-foreground\" />\n {headingSlot ?? defaultHeading}\n </CollapsibleTrigger>\n\n <CollapsibleContent keepMounted>{body}</CollapsibleContent>\n </Collapsible>\n );\n};\n\nconst WorkflowFormInput = ({\n schema,\n defaultValues,\n isSubmitLoading,\n submitButtonLabel,\n onSubmit,\n children,\n submitActions,\n leftActions,\n submitButtonIcon,\n submitButtonVariant,\n submitButtonFullWidth,\n onValuesChange,\n}: WorkflowInputDataProps & { onValuesChange: (value: unknown) => void }) => (\n <DynamicForm\n schema={schema}\n defaultValues={defaultValues}\n onValuesChange={onValuesChange}\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={onSubmit}\n readOnly={isSubmitLoading}\n submitActions={submitActions}\n leftActions={leftActions}\n >\n {children}\n </DynamicForm>\n);\n"],"names":["jsx","Icon","Play","createProcessorInput","parseProcessorDraft","inferFieldType","getBaseSchema","isPlainObject","collapsible","useState","useRef","Txt","WorkflowInputTypeToggle","jsxs","Fragment","cn","WorkflowJsonInput","WorkflowProcessorInput","Collapsible","CollapsibleTrigger","ChevronRight","CollapsibleContent","DynamicForm"],"mappings":"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"}
1
+ {"version":3,"file":"workflow-input-data.cjs.js","sources":["../../../../src/domains/workflows/workflow/workflow-input-data.tsx"],"sourcesContent":["import { ChevronRight, Play } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { useRef, useState } from 'react';\nimport type { ZodSchema } from 'zod';\n\nimport { createProcessorInput, parseProcessorDraft } from './input/processor-input';\nimport type { ProcessorDraft } from './input/processor-input';\nimport { WorkflowJsonInput } from './input/workflow-json-input';\nimport { WorkflowProcessorInput } from './input/workflow-processor-input';\nimport { WorkflowInputTypeToggle } from './workflow-input-type-toggle';\nimport type { WorkflowInputType } from './workflow-input-type-toggle';\nimport { Button } from '@/ds/components/Button';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { DynamicForm } from '@/lib/form';\nimport { isPlainObject } from '@/lib/form/utils';\nimport { getBaseSchema } from '@/lib/form/zod-provider/compat';\nimport { inferFieldType } from '@/lib/form/zod-provider/field-type-inference';\nimport { cn } from '@/utils/cn';\n\nexport interface WorkflowInputDataProps {\n schema: ZodSchema;\n defaultValues?: unknown;\n isSubmitLoading: boolean;\n submitButtonLabel: string;\n onSubmit: (data: any) => void;\n children?: React.ReactNode;\n isProcessorWorkflow?: boolean;\n submitActions?: React.ReactNode;\n leftActions?: React.ReactNode;\n headingSlot?: ReactNode;\n collapsible?: boolean;\n submitButtonIcon?: ReactNode;\n submitButtonVariant?: React.ComponentProps<typeof Button>['variant'];\n submitButtonFullWidth?: boolean;\n hideInputTypeLabel?: boolean;\n inputTypeLabel?: string;\n hideHeading?: boolean;\n}\n\ntype InputDraft =\n | { type: 'json'; value: string }\n | { type: 'form'; value: unknown }\n | { type: 'simple'; value: ProcessorDraft };\n\ntype DraftValue = { ok: true; value: unknown } | { ok: false; error: string };\n\nconst defaultSubmitIcon = (\n <Icon>\n <Play />\n </Icon>\n);\n\nfunction createInitialDraft(defaultValues: unknown, isProcessorWorkflow: boolean | undefined): InputDraft {\n if (!isProcessorWorkflow) return { type: 'form', value: defaultValues };\n const input = defaultValues ?? createProcessorInput();\n const draft = parseProcessorDraft(input);\n return draft ? { type: 'simple', value: draft } : { type: 'json', value: JSON.stringify(input, null, 2) };\n}\n\nfunction parseJsonDraft(text: string): DraftValue {\n try {\n return { ok: true, value: JSON.parse(text) };\n } catch (error) {\n return { ok: false, error: error instanceof Error ? `Invalid JSON: ${error.message}` : 'Invalid JSON' };\n }\n}\n\nfunction getFormShapeError(schema: ZodSchema, value: unknown) {\n const fieldType = inferFieldType(getBaseSchema(schema));\n if (fieldType === 'object' && !isPlainObject(value))\n return 'Form input requires a JSON object. Correct the JSON first.';\n if (fieldType === 'array' && !Array.isArray(value))\n return 'Form input requires a JSON array. Correct the JSON first.';\n return undefined;\n}\n\nexport const WorkflowInputData = ({\n schema,\n defaultValues,\n isSubmitLoading,\n submitButtonLabel,\n onSubmit,\n children,\n isProcessorWorkflow,\n submitActions,\n leftActions,\n headingSlot,\n collapsible = true,\n submitButtonIcon = defaultSubmitIcon,\n submitButtonVariant = 'primary',\n submitButtonFullWidth,\n hideInputTypeLabel,\n inputTypeLabel = 'Run input',\n hideHeading,\n}: WorkflowInputDataProps) => {\n const [draft, setDraft] = useState(() => createInitialDraft(defaultValues, isProcessorWorkflow));\n // The Form view is uncontrolled: state here would only re-render this tree on every keystroke.\n const formValues = useRef<unknown>(defaultValues);\n const [errors, setErrors] = useState<string[]>([]);\n\n function readDraftValue(): DraftValue {\n if (draft.type === 'json') return parseJsonDraft(draft.value);\n return { ok: true, value: draft.type === 'form' ? formValues.current : draft.value };\n }\n\n function submitJsonDraft(text: string) {\n const json = parseJsonDraft(text);\n if (!json.ok) return setErrors([json.error]);\n const result = schema.safeParse(json.value);\n if (result.success) onSubmit(result.data);\n else setErrors(result.error.issues.map(issue => `${issue.path.join('.') || 'Input'}: ${issue.message}`));\n }\n\n function changeInputType(type: WorkflowInputType) {\n if (type === draft.type) return;\n setErrors([]);\n const current = readDraftValue();\n if (!current.ok) return setErrors([current.error]);\n if (type === 'json') {\n return setDraft({ type, value: JSON.stringify(current.value === undefined ? {} : current.value, null, 2) });\n }\n if (type === 'simple') {\n const processorDraft = parseProcessorDraft(current.value);\n if (processorDraft) return setDraft({ type, value: processorDraft });\n return setErrors([\n 'Simple input requires a messages array with text parts and a string phase. Correct the JSON first.',\n ]);\n }\n const formShapeError = getFormShapeError(schema, current.value);\n return formShapeError ? setErrors([formShapeError]) : setDraft({ type, value: current.value });\n }\n\n const defaultHeading = (\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\">\n Trigger a run\n </Txt>\n );\n const toggleSitsInLabelRow = !collapsible && !hideHeading;\n const toggleSitsAboveInput = collapsible || hideHeading || hideInputTypeLabel;\n const inputTypeToggle = (\n <WorkflowInputTypeToggle\n value={draft.type}\n onChange={changeInputType}\n disabled={isSubmitLoading}\n includeSimple={isProcessorWorkflow}\n compact={toggleSitsInLabelRow}\n />\n );\n\n const body = (\n <>\n {!hideInputTypeLabel && (\n <div className=\"flex justify-between gap-3 px-5 py-3\">\n <Txt as=\"p\" variant=\"caption\" tone=\"muted\">\n {inputTypeLabel}\n </Txt>\n {toggleSitsInLabelRow && <div className=\"shrink-0\">{inputTypeToggle}</div>}\n </div>\n )}\n\n <div className=\"px-5\">\n {toggleSitsAboveInput && <div className=\"pb-4\">{inputTypeToggle}</div>}\n\n <div\n className={cn('pb-4', {\n 'pointer-events-none opacity-50': isSubmitLoading,\n })}\n >\n {draft.type === 'json' ? (\n <WorkflowJsonInput\n value={draft.value}\n onChange={value => {\n setDraft({ type: 'json', value });\n setErrors([]);\n }}\n errors={errors}\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={() => submitJsonDraft(draft.value)}\n submitActions={submitActions}\n leftActions={leftActions}\n >\n {children}\n </WorkflowJsonInput>\n ) : draft.type === 'simple' && isProcessorWorkflow ? (\n <WorkflowProcessorInput\n schema={schema}\n value={draft.value}\n onChange={value => setDraft({ type: 'simple', value })}\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={onSubmit}\n submitActions={submitActions}\n leftActions={leftActions}\n >\n {children}\n </WorkflowProcessorInput>\n ) : (\n <WorkflowFormInput\n schema={schema}\n onValuesChange={value => {\n formValues.current = value;\n }}\n defaultValues={draft.value}\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={onSubmit}\n submitActions={submitActions}\n leftActions={leftActions}\n >\n {children}\n </WorkflowFormInput>\n )}\n </div>\n </div>\n </>\n );\n\n if (!collapsible) {\n return (\n <>\n {!hideHeading && <div className=\"border-b border-border/50 pb-3\">{headingSlot ?? defaultHeading}</div>}\n <div>{body}</div>\n </>\n );\n }\n\n return (\n <Collapsible defaultOpen>\n <CollapsibleTrigger className=\"flex w-full items-center gap-2 pb-3 text-left\">\n <ChevronRight className=\"size-4 shrink-0 text-muted-foreground\" />\n {headingSlot ?? defaultHeading}\n </CollapsibleTrigger>\n\n <CollapsibleContent keepMounted>{body}</CollapsibleContent>\n </Collapsible>\n );\n};\n\nconst WorkflowFormInput = ({\n schema,\n defaultValues,\n isSubmitLoading,\n submitButtonLabel,\n onSubmit,\n children,\n submitActions,\n leftActions,\n submitButtonIcon,\n submitButtonVariant,\n submitButtonFullWidth,\n onValuesChange,\n}: WorkflowInputDataProps & { onValuesChange: (value: unknown) => void }) => (\n <DynamicForm\n schema={schema}\n defaultValues={defaultValues}\n onValuesChange={onValuesChange}\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={onSubmit}\n readOnly={isSubmitLoading}\n submitActions={submitActions}\n leftActions={leftActions}\n >\n {children}\n </DynamicForm>\n);\n"],"names":["jsx","Icon","Play","createProcessorInput","parseProcessorDraft","inferFieldType","getBaseSchema","isPlainObject","collapsible","useState","useRef","Txt","WorkflowInputTypeToggle","jsxs","Fragment","cn","WorkflowJsonInput","WorkflowProcessorInput","Collapsible","CollapsibleTrigger","ChevronRight","CollapsibleContent","DynamicForm"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,MAAM,iBAAA,mBACJA,cAAA,CAACC,eAAA,EAAA,EACC,QAAA,kBAAAD,cAAA,CAACE,oBAAK,CAAA,EACR,CAAA;AAGF,SAAS,kBAAA,CAAmB,eAAwB,mBAAA,EAAsD;AACxG,EAAA,IAAI,CAAC,mBAAA,EAAqB,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,aAAA,EAAc;AACtE,EAAA,MAAM,KAAA,GAAQ,iBAAiBC,oEAAA,EAAqB;AACpD,EAAA,MAAM,KAAA,GAAQC,oEAAoB,KAAK,CAAA;AACvC,EAAA,OAAO,QAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,OAAM,GAAI,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,IAAA,EAAM,CAAC,CAAA,EAAE;AAC1G;AAEA,SAAS,eAAe,IAAA,EAA0B;AAChD,EAAA,IAAI;AACF,IAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,OAAO,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,EAAE;AAAA,EAC7C,SAAS,KAAA,EAAO;AACd,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,KAAA,YAAiB,QAAQ,CAAA,cAAA,EAAiB,KAAA,CAAM,OAAO,CAAA,CAAA,GAAK,cAAA,EAAe;AAAA,EACxG;AACF;AAEA,SAAS,iBAAA,CAAkB,QAAmB,KAAA,EAAgB;AAC5D,EAAA,MAAM,SAAA,GAAYC,sDAAA,CAAeC,yCAAA,CAAc,MAAM,CAAC,CAAA;AACtD,EAAA,IAAI,SAAA,KAAc,QAAA,IAAY,CAACC,4BAAA,CAAc,KAAK,CAAA;AAChD,IAAA,OAAO,4DAAA;AACT,EAAA,IAAI,SAAA,KAAc,OAAA,IAAW,CAAC,KAAA,CAAM,QAAQ,KAAK,CAAA;AAC/C,IAAA,OAAO,2DAAA;AACT,EAAA,OAAO,MAAA;AACT;AAEO,MAAM,oBAAoB,CAAC;AAAA,EAChC,MAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,mBAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,eACAC,aAAA,GAAc,IAAA;AAAA,EACd,gBAAA,GAAmB,iBAAA;AAAA,EACnB,mBAAA,GAAsB,SAAA;AAAA,EACtB,qBAAA;AAAA,EACA,kBAAA;AAAA,EACA,cAAA,GAAiB,WAAA;AAAA,EACjB;AACF,CAAA,KAA8B;AAC5B,EAAA,MAAM,CAAC,OAAO,QAAQ,CAAA,GAAIC,eAAS,MAAM,kBAAA,CAAmB,aAAA,EAAe,mBAAmB,CAAC,CAAA;AAE/F,EAAA,MAAM,UAAA,GAAaC,aAAgB,aAAa,CAAA;AAChD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAID,cAAA,CAAmB,EAAE,CAAA;AAEjD,EAAA,SAAS,cAAA,GAA6B;AACpC,IAAA,IAAI,MAAM,IAAA,KAAS,MAAA,EAAQ,OAAO,cAAA,CAAe,MAAM,KAAK,CAAA;AAC5D,IAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,KAAA,CAAM,SAAS,MAAA,GAAS,UAAA,CAAW,OAAA,GAAU,KAAA,CAAM,KAAA,EAAM;AAAA,EACrF;AAEA,EAAA,SAAS,gBAAgB,IAAA,EAAc;AACrC,IAAA,MAAM,IAAA,GAAO,eAAe,IAAI,CAAA;AAChC,IAAA,IAAI,CAAC,KAAK,EAAA,EAAI,OAAO,UAAU,CAAC,IAAA,CAAK,KAAK,CAAC,CAAA;AAC3C,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,SAAA,CAAU,IAAA,CAAK,KAAK,CAAA;AAC1C,IAAA,IAAI,MAAA,CAAO,OAAA,EAAS,QAAA,CAAS,MAAA,CAAO,IAAI,CAAA;AAAA,mBACzB,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,GAAA,CAAI,WAAS,CAAA,EAAG,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,IAAK,OAAO,KAAK,KAAA,CAAM,OAAO,EAAE,CAAC,CAAA;AAAA,EACzG;AAEA,EAAA,SAAS,gBAAgB,IAAA,EAAyB;AAChD,IAAA,IAAI,IAAA,KAAS,MAAM,IAAA,EAAM;AACzB,IAAA,SAAA,CAAU,EAAE,CAAA;AACZ,IAAA,MAAM,UAAU,cAAA,EAAe;AAC/B,IAAA,IAAI,CAAC,QAAQ,EAAA,EAAI,OAAO,UAAU,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AACjD,IAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,MAAA,OAAO,SAAS,EAAE,IAAA,EAAM,KAAA,EAAO,IAAA,CAAK,UAAU,OAAA,CAAQ,KAAA,KAAU,MAAA,GAAY,KAAK,OAAA,CAAQ,KAAA,EAAO,IAAA,EAAM,CAAC,GAAG,CAAA;AAAA,IAC5G;AACA,IAAA,IAAI,SAAS,QAAA,EAAU;AACrB,MAAA,MAAM,cAAA,GAAiBL,mEAAA,CAAoB,OAAA,CAAQ,KAAK,CAAA;AACxD,MAAA,IAAI,gBAAgB,OAAO,QAAA,CAAS,EAAE,IAAA,EAAM,KAAA,EAAO,gBAAgB,CAAA;AACnE,MAAA,OAAO,SAAA,CAAU;AAAA,QACf;AAAA,OACD,CAAA;AAAA,IACH;AACA,IAAA,MAAM,cAAA,GAAiB,iBAAA,CAAkB,MAAA,EAAQ,OAAA,CAAQ,KAAK,CAAA;AAC9D,IAAA,OAAO,cAAA,GAAiB,SAAA,CAAU,CAAC,cAAc,CAAC,CAAA,GAAI,QAAA,CAAS,EAAE,IAAA,EAAM,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAO,CAAA;AAAA,EAC/F;AAEA,EAAA,MAAM,cAAA,kCACHO,OAAA,EAAA,EAAI,EAAA,EAAG,QAAO,OAAA,EAAQ,YAAA,EAAa,IAAA,EAAK,KAAA,EAAM,QAAA,EAAA,eAAA,EAE/C,CAAA;AAEF,EAAA,MAAM,oBAAA,GAAuB,CAACH,aAAA,IAAe,CAAC,WAAA;AAC9C,EAAA,MAAM,oBAAA,GAAuBA,iBAAe,WAAA,IAAe,kBAAA;AAC3D,EAAA,MAAM,eAAA,mBACJR,cAAA;AAAA,IAACY,0EAAA;AAAA,IAAA;AAAA,MACC,OAAO,KAAA,CAAM,IAAA;AAAA,MACb,QAAA,EAAU,eAAA;AAAA,MACV,QAAA,EAAU,eAAA;AAAA,MACV,aAAA,EAAe,mBAAA;AAAA,MACf,OAAA,EAAS;AAAA;AAAA,GACX;AAGF,EAAA,MAAM,uBACJC,eAAA,CAAAC,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,CAAC,kBAAA,oBACAD,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EACb,QAAA,EAAA;AAAA,sBAAAb,cAAA,CAACW,WAAI,EAAA,EAAG,GAAA,EAAI,SAAQ,SAAA,EAAU,IAAA,EAAK,SAChC,QAAA,EAAA,cAAA,EACH,CAAA;AAAA,MACC,oBAAA,oBAAwBX,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAY,QAAA,EAAA,eAAA,EAAgB;AAAA,KAAA,EACtE,CAAA;AAAA,oBAGFa,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EACZ,QAAA,EAAA;AAAA,MAAA,oBAAA,oBAAwBb,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EAAQ,QAAA,EAAA,eAAA,EAAgB,CAAA;AAAA,sBAEhEA,cAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAWe,YAAG,MAAA,EAAQ;AAAA,YACpB,gCAAA,EAAkC;AAAA,WACnC,CAAA;AAAA,UAEA,QAAA,EAAA,KAAA,CAAM,SAAS,MAAA,mBACdf,cAAA;AAAA,YAACgB,oEAAA;AAAA,YAAA;AAAA,cACC,OAAO,KAAA,CAAM,KAAA;AAAA,cACb,UAAU,CAAA,KAAA,KAAS;AACjB,gBAAA,QAAA,CAAS,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,CAAA;AAChC,gBAAA,SAAA,CAAU,EAAE,CAAA;AAAA,cACd,CAAA;AAAA,cACA,MAAA;AAAA,cACA,eAAA;AAAA,cACA,iBAAA;AAAA,cACA,gBAAA;AAAA,cACA,mBAAA;AAAA,cACA,qBAAA;AAAA,cACA,QAAA,EAAU,MAAM,eAAA,CAAgB,KAAA,CAAM,KAAK,CAAA;AAAA,cAC3C,aAAA;AAAA,cACA,WAAA;AAAA,cAEC;AAAA;AAAA,WACH,GACE,KAAA,CAAM,IAAA,KAAS,QAAA,IAAY,mBAAA,mBAC7BhB,cAAA;AAAA,YAACiB,8EAAA;AAAA,YAAA;AAAA,cACC,MAAA;AAAA,cACA,OAAO,KAAA,CAAM,KAAA;AAAA,cACb,UAAU,CAAA,KAAA,KAAS,QAAA,CAAS,EAAE,IAAA,EAAM,QAAA,EAAU,OAAO,CAAA;AAAA,cACrD,eAAA;AAAA,cACA,iBAAA;AAAA,cACA,gBAAA;AAAA,cACA,mBAAA;AAAA,cACA,qBAAA;AAAA,cACA,QAAA;AAAA,cACA,aAAA;AAAA,cACA,WAAA;AAAA,cAEC;AAAA;AAAA,WACH,mBAEAjB,cAAA;AAAA,YAAC,iBAAA;AAAA,YAAA;AAAA,cACC,MAAA;AAAA,cACA,gBAAgB,CAAA,KAAA,KAAS;AACvB,gBAAA,UAAA,CAAW,OAAA,GAAU,KAAA;AAAA,cACvB,CAAA;AAAA,cACA,eAAe,KAAA,CAAM,KAAA;AAAA,cACrB,eAAA;AAAA,cACA,iBAAA;AAAA,cACA,gBAAA;AAAA,cACA,mBAAA;AAAA,cACA,qBAAA;AAAA,cACA,QAAA;AAAA,cACA,aAAA;AAAA,cACA,WAAA;AAAA,cAEC;AAAA;AAAA;AACH;AAAA;AAEJ,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAGF,EAAA,IAAI,CAACQ,aAAA,EAAa;AAChB,IAAA,uBACEK,eAAA,CAAAC,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,MAAA,CAAC,+BAAed,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EAAkC,yBAAe,cAAA,EAAe,CAAA;AAAA,sBAChGA,cAAA,CAAC,SAAK,QAAA,EAAA,IAAA,EAAK;AAAA,KAAA,EACb,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEa,eAAA,CAACK,uBAAA,EAAA,EAAY,WAAA,EAAW,IAAA,EACtB,QAAA,EAAA;AAAA,oBAAAL,eAAA,CAACM,8BAAA,EAAA,EAAmB,WAAU,+CAAA,EAC5B,QAAA,EAAA;AAAA,sBAAAnB,cAAA,CAACoB,wBAAA,EAAA,EAAa,WAAU,uCAAA,EAAwC,CAAA;AAAA,MAC/D,WAAA,IAAe;AAAA,KAAA,EAClB,CAAA;AAAA,oBAEApB,cAAA,CAACqB,8BAAA,EAAA,EAAmB,WAAA,EAAW,IAAA,EAAE,QAAA,EAAA,IAAA,EAAK;AAAA,GAAA,EACxC,CAAA;AAEJ;AAEA,MAAM,oBAAoB,CAAC;AAAA,EACzB,MAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,mBAAA;AAAA,EACA,qBAAA;AAAA,EACA;AACF,CAAA,qBACErB,cAAA;AAAA,EAACsB,gCAAA;AAAA,EAAA;AAAA,IACC,MAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA,eAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACA,mBAAA;AAAA,IACA,qBAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA,EAAU,eAAA;AAAA,IACV,aAAA;AAAA,IACA,WAAA;AAAA,IAEC;AAAA;AACH,CAAA;;;;"}
@@ -13,6 +13,7 @@ import '../../../lib/form/field-context.es.js';
13
13
  import { isPlainObject } from '../../../lib/form/utils.es.js';
14
14
  import '../../../Button-BY9qlu8K.js';
15
15
  import 'date-fns';
16
+ import '../../../popover-Dg70UGyn.js';
16
17
  import { c as cn } from '../../../cn-65Adrsfj.js';
17
18
  import '@autoform/core';
18
19
  import '@autoform/react';
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-input-data.es.js","sources":["../../../../src/domains/workflows/workflow/workflow-input-data.tsx"],"sourcesContent":["import { ChevronRight, Play } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { useRef, useState } from 'react';\nimport type { ZodSchema } from 'zod';\n\nimport { createProcessorInput, parseProcessorDraft } from './input/processor-input';\nimport type { ProcessorDraft } from './input/processor-input';\nimport { WorkflowJsonInput } from './input/workflow-json-input';\nimport { WorkflowProcessorInput } from './input/workflow-processor-input';\nimport { WorkflowInputTypeToggle } from './workflow-input-type-toggle';\nimport type { WorkflowInputType } from './workflow-input-type-toggle';\nimport { Button } from '@/ds/components/Button';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { DynamicForm } from '@/lib/form';\nimport { isPlainObject } from '@/lib/form/utils';\nimport { getBaseSchema } from '@/lib/form/zod-provider/compat';\nimport { inferFieldType } from '@/lib/form/zod-provider/field-type-inference';\nimport { cn } from '@/utils/cn';\n\nexport interface WorkflowInputDataProps {\n schema: ZodSchema;\n defaultValues?: unknown;\n isSubmitLoading: boolean;\n submitButtonLabel: string;\n onSubmit: (data: any) => void;\n children?: React.ReactNode;\n isProcessorWorkflow?: boolean;\n submitActions?: React.ReactNode;\n leftActions?: React.ReactNode;\n headingSlot?: ReactNode;\n collapsible?: boolean;\n submitButtonIcon?: ReactNode;\n submitButtonVariant?: React.ComponentProps<typeof Button>['variant'];\n submitButtonFullWidth?: boolean;\n hideInputTypeLabel?: boolean;\n inputTypeLabel?: string;\n hideHeading?: boolean;\n}\n\ntype InputDraft =\n | { type: 'json'; value: string }\n | { type: 'form'; value: unknown }\n | { type: 'simple'; value: ProcessorDraft };\n\ntype DraftValue = { ok: true; value: unknown } | { ok: false; error: string };\n\nconst defaultSubmitIcon = (\n <Icon>\n <Play />\n </Icon>\n);\n\nfunction createInitialDraft(defaultValues: unknown, isProcessorWorkflow: boolean | undefined): InputDraft {\n if (!isProcessorWorkflow) return { type: 'form', value: defaultValues };\n const input = defaultValues ?? createProcessorInput();\n const draft = parseProcessorDraft(input);\n return draft ? { type: 'simple', value: draft } : { type: 'json', value: JSON.stringify(input, null, 2) };\n}\n\nfunction parseJsonDraft(text: string): DraftValue {\n try {\n return { ok: true, value: JSON.parse(text) };\n } catch (error) {\n return { ok: false, error: error instanceof Error ? `Invalid JSON: ${error.message}` : 'Invalid JSON' };\n }\n}\n\nfunction getFormShapeError(schema: ZodSchema, value: unknown) {\n const fieldType = inferFieldType(getBaseSchema(schema));\n if (fieldType === 'object' && !isPlainObject(value))\n return 'Form input requires a JSON object. Correct the JSON first.';\n if (fieldType === 'array' && !Array.isArray(value))\n return 'Form input requires a JSON array. Correct the JSON first.';\n return undefined;\n}\n\nexport const WorkflowInputData = ({\n schema,\n defaultValues,\n isSubmitLoading,\n submitButtonLabel,\n onSubmit,\n children,\n isProcessorWorkflow,\n submitActions,\n leftActions,\n headingSlot,\n collapsible = true,\n submitButtonIcon = defaultSubmitIcon,\n submitButtonVariant = 'primary',\n submitButtonFullWidth,\n hideInputTypeLabel,\n inputTypeLabel = 'Run input',\n hideHeading,\n}: WorkflowInputDataProps) => {\n const [draft, setDraft] = useState(() => createInitialDraft(defaultValues, isProcessorWorkflow));\n // The Form view is uncontrolled: state here would only re-render this tree on every keystroke.\n const formValues = useRef<unknown>(defaultValues);\n const [errors, setErrors] = useState<string[]>([]);\n\n function readDraftValue(): DraftValue {\n if (draft.type === 'json') return parseJsonDraft(draft.value);\n return { ok: true, value: draft.type === 'form' ? formValues.current : draft.value };\n }\n\n function submitJsonDraft(text: string) {\n const json = parseJsonDraft(text);\n if (!json.ok) return setErrors([json.error]);\n const result = schema.safeParse(json.value);\n if (result.success) onSubmit(result.data);\n else setErrors(result.error.issues.map(issue => `${issue.path.join('.') || 'Input'}: ${issue.message}`));\n }\n\n function changeInputType(type: WorkflowInputType) {\n if (type === draft.type) return;\n setErrors([]);\n const current = readDraftValue();\n if (!current.ok) return setErrors([current.error]);\n if (type === 'json') {\n return setDraft({ type, value: JSON.stringify(current.value === undefined ? {} : current.value, null, 2) });\n }\n if (type === 'simple') {\n const processorDraft = parseProcessorDraft(current.value);\n if (processorDraft) return setDraft({ type, value: processorDraft });\n return setErrors([\n 'Simple input requires a messages array with text parts and a string phase. Correct the JSON first.',\n ]);\n }\n const formShapeError = getFormShapeError(schema, current.value);\n return formShapeError ? setErrors([formShapeError]) : setDraft({ type, value: current.value });\n }\n\n const defaultHeading = (\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\">\n Trigger a run\n </Txt>\n );\n const toggleSitsInLabelRow = !collapsible && !hideHeading;\n const toggleSitsAboveInput = collapsible || hideHeading || hideInputTypeLabel;\n const inputTypeToggle = (\n <WorkflowInputTypeToggle\n value={draft.type}\n onChange={changeInputType}\n disabled={isSubmitLoading}\n includeSimple={isProcessorWorkflow}\n compact={toggleSitsInLabelRow}\n />\n );\n\n const body = (\n <>\n {!hideInputTypeLabel && (\n <div className=\"flex justify-between gap-3 px-5 py-3\">\n <Txt as=\"p\" variant=\"caption\" tone=\"muted\">\n {inputTypeLabel}\n </Txt>\n {toggleSitsInLabelRow && <div className=\"shrink-0\">{inputTypeToggle}</div>}\n </div>\n )}\n\n <div className=\"px-5\">\n {toggleSitsAboveInput && <div className=\"pb-4\">{inputTypeToggle}</div>}\n\n <div\n className={cn('pb-4', {\n 'pointer-events-none opacity-50': isSubmitLoading,\n })}\n >\n {draft.type === 'json' ? (\n <WorkflowJsonInput\n value={draft.value}\n onChange={value => {\n setDraft({ type: 'json', value });\n setErrors([]);\n }}\n errors={errors}\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={() => submitJsonDraft(draft.value)}\n submitActions={submitActions}\n leftActions={leftActions}\n >\n {children}\n </WorkflowJsonInput>\n ) : draft.type === 'simple' && isProcessorWorkflow ? (\n <WorkflowProcessorInput\n schema={schema}\n value={draft.value}\n onChange={value => setDraft({ type: 'simple', value })}\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={onSubmit}\n submitActions={submitActions}\n leftActions={leftActions}\n >\n {children}\n </WorkflowProcessorInput>\n ) : (\n <WorkflowFormInput\n schema={schema}\n onValuesChange={value => {\n formValues.current = value;\n }}\n defaultValues={draft.value}\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={onSubmit}\n submitActions={submitActions}\n leftActions={leftActions}\n >\n {children}\n </WorkflowFormInput>\n )}\n </div>\n </div>\n </>\n );\n\n if (!collapsible) {\n return (\n <>\n {!hideHeading && <div className=\"border-b border-border/50 pb-3\">{headingSlot ?? defaultHeading}</div>}\n <div>{body}</div>\n </>\n );\n }\n\n return (\n <Collapsible defaultOpen>\n <CollapsibleTrigger className=\"flex w-full items-center gap-2 pb-3 text-left\">\n <ChevronRight className=\"size-4 shrink-0 text-muted-foreground\" />\n {headingSlot ?? defaultHeading}\n </CollapsibleTrigger>\n\n <CollapsibleContent keepMounted>{body}</CollapsibleContent>\n </Collapsible>\n );\n};\n\nconst WorkflowFormInput = ({\n schema,\n defaultValues,\n isSubmitLoading,\n submitButtonLabel,\n onSubmit,\n children,\n submitActions,\n leftActions,\n submitButtonIcon,\n submitButtonVariant,\n submitButtonFullWidth,\n onValuesChange,\n}: WorkflowInputDataProps & { onValuesChange: (value: unknown) => void }) => (\n <DynamicForm\n schema={schema}\n defaultValues={defaultValues}\n onValuesChange={onValuesChange}\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={onSubmit}\n readOnly={isSubmitLoading}\n submitActions={submitActions}\n leftActions={leftActions}\n >\n {children}\n </DynamicForm>\n);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-input-data.es.js","sources":["../../../../src/domains/workflows/workflow/workflow-input-data.tsx"],"sourcesContent":["import { ChevronRight, Play } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { useRef, useState } from 'react';\nimport type { ZodSchema } from 'zod';\n\nimport { createProcessorInput, parseProcessorDraft } from './input/processor-input';\nimport type { ProcessorDraft } from './input/processor-input';\nimport { WorkflowJsonInput } from './input/workflow-json-input';\nimport { WorkflowProcessorInput } from './input/workflow-processor-input';\nimport { WorkflowInputTypeToggle } from './workflow-input-type-toggle';\nimport type { WorkflowInputType } from './workflow-input-type-toggle';\nimport { Button } from '@/ds/components/Button';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { DynamicForm } from '@/lib/form';\nimport { isPlainObject } from '@/lib/form/utils';\nimport { getBaseSchema } from '@/lib/form/zod-provider/compat';\nimport { inferFieldType } from '@/lib/form/zod-provider/field-type-inference';\nimport { cn } from '@/utils/cn';\n\nexport interface WorkflowInputDataProps {\n schema: ZodSchema;\n defaultValues?: unknown;\n isSubmitLoading: boolean;\n submitButtonLabel: string;\n onSubmit: (data: any) => void;\n children?: React.ReactNode;\n isProcessorWorkflow?: boolean;\n submitActions?: React.ReactNode;\n leftActions?: React.ReactNode;\n headingSlot?: ReactNode;\n collapsible?: boolean;\n submitButtonIcon?: ReactNode;\n submitButtonVariant?: React.ComponentProps<typeof Button>['variant'];\n submitButtonFullWidth?: boolean;\n hideInputTypeLabel?: boolean;\n inputTypeLabel?: string;\n hideHeading?: boolean;\n}\n\ntype InputDraft =\n | { type: 'json'; value: string }\n | { type: 'form'; value: unknown }\n | { type: 'simple'; value: ProcessorDraft };\n\ntype DraftValue = { ok: true; value: unknown } | { ok: false; error: string };\n\nconst defaultSubmitIcon = (\n <Icon>\n <Play />\n </Icon>\n);\n\nfunction createInitialDraft(defaultValues: unknown, isProcessorWorkflow: boolean | undefined): InputDraft {\n if (!isProcessorWorkflow) return { type: 'form', value: defaultValues };\n const input = defaultValues ?? createProcessorInput();\n const draft = parseProcessorDraft(input);\n return draft ? { type: 'simple', value: draft } : { type: 'json', value: JSON.stringify(input, null, 2) };\n}\n\nfunction parseJsonDraft(text: string): DraftValue {\n try {\n return { ok: true, value: JSON.parse(text) };\n } catch (error) {\n return { ok: false, error: error instanceof Error ? `Invalid JSON: ${error.message}` : 'Invalid JSON' };\n }\n}\n\nfunction getFormShapeError(schema: ZodSchema, value: unknown) {\n const fieldType = inferFieldType(getBaseSchema(schema));\n if (fieldType === 'object' && !isPlainObject(value))\n return 'Form input requires a JSON object. Correct the JSON first.';\n if (fieldType === 'array' && !Array.isArray(value))\n return 'Form input requires a JSON array. Correct the JSON first.';\n return undefined;\n}\n\nexport const WorkflowInputData = ({\n schema,\n defaultValues,\n isSubmitLoading,\n submitButtonLabel,\n onSubmit,\n children,\n isProcessorWorkflow,\n submitActions,\n leftActions,\n headingSlot,\n collapsible = true,\n submitButtonIcon = defaultSubmitIcon,\n submitButtonVariant = 'primary',\n submitButtonFullWidth,\n hideInputTypeLabel,\n inputTypeLabel = 'Run input',\n hideHeading,\n}: WorkflowInputDataProps) => {\n const [draft, setDraft] = useState(() => createInitialDraft(defaultValues, isProcessorWorkflow));\n // The Form view is uncontrolled: state here would only re-render this tree on every keystroke.\n const formValues = useRef<unknown>(defaultValues);\n const [errors, setErrors] = useState<string[]>([]);\n\n function readDraftValue(): DraftValue {\n if (draft.type === 'json') return parseJsonDraft(draft.value);\n return { ok: true, value: draft.type === 'form' ? formValues.current : draft.value };\n }\n\n function submitJsonDraft(text: string) {\n const json = parseJsonDraft(text);\n if (!json.ok) return setErrors([json.error]);\n const result = schema.safeParse(json.value);\n if (result.success) onSubmit(result.data);\n else setErrors(result.error.issues.map(issue => `${issue.path.join('.') || 'Input'}: ${issue.message}`));\n }\n\n function changeInputType(type: WorkflowInputType) {\n if (type === draft.type) return;\n setErrors([]);\n const current = readDraftValue();\n if (!current.ok) return setErrors([current.error]);\n if (type === 'json') {\n return setDraft({ type, value: JSON.stringify(current.value === undefined ? {} : current.value, null, 2) });\n }\n if (type === 'simple') {\n const processorDraft = parseProcessorDraft(current.value);\n if (processorDraft) return setDraft({ type, value: processorDraft });\n return setErrors([\n 'Simple input requires a messages array with text parts and a string phase. Correct the JSON first.',\n ]);\n }\n const formShapeError = getFormShapeError(schema, current.value);\n return formShapeError ? setErrors([formShapeError]) : setDraft({ type, value: current.value });\n }\n\n const defaultHeading = (\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\">\n Trigger a run\n </Txt>\n );\n const toggleSitsInLabelRow = !collapsible && !hideHeading;\n const toggleSitsAboveInput = collapsible || hideHeading || hideInputTypeLabel;\n const inputTypeToggle = (\n <WorkflowInputTypeToggle\n value={draft.type}\n onChange={changeInputType}\n disabled={isSubmitLoading}\n includeSimple={isProcessorWorkflow}\n compact={toggleSitsInLabelRow}\n />\n );\n\n const body = (\n <>\n {!hideInputTypeLabel && (\n <div className=\"flex justify-between gap-3 px-5 py-3\">\n <Txt as=\"p\" variant=\"caption\" tone=\"muted\">\n {inputTypeLabel}\n </Txt>\n {toggleSitsInLabelRow && <div className=\"shrink-0\">{inputTypeToggle}</div>}\n </div>\n )}\n\n <div className=\"px-5\">\n {toggleSitsAboveInput && <div className=\"pb-4\">{inputTypeToggle}</div>}\n\n <div\n className={cn('pb-4', {\n 'pointer-events-none opacity-50': isSubmitLoading,\n })}\n >\n {draft.type === 'json' ? (\n <WorkflowJsonInput\n value={draft.value}\n onChange={value => {\n setDraft({ type: 'json', value });\n setErrors([]);\n }}\n errors={errors}\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={() => submitJsonDraft(draft.value)}\n submitActions={submitActions}\n leftActions={leftActions}\n >\n {children}\n </WorkflowJsonInput>\n ) : draft.type === 'simple' && isProcessorWorkflow ? (\n <WorkflowProcessorInput\n schema={schema}\n value={draft.value}\n onChange={value => setDraft({ type: 'simple', value })}\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={onSubmit}\n submitActions={submitActions}\n leftActions={leftActions}\n >\n {children}\n </WorkflowProcessorInput>\n ) : (\n <WorkflowFormInput\n schema={schema}\n onValuesChange={value => {\n formValues.current = value;\n }}\n defaultValues={draft.value}\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={onSubmit}\n submitActions={submitActions}\n leftActions={leftActions}\n >\n {children}\n </WorkflowFormInput>\n )}\n </div>\n </div>\n </>\n );\n\n if (!collapsible) {\n return (\n <>\n {!hideHeading && <div className=\"border-b border-border/50 pb-3\">{headingSlot ?? defaultHeading}</div>}\n <div>{body}</div>\n </>\n );\n }\n\n return (\n <Collapsible defaultOpen>\n <CollapsibleTrigger className=\"flex w-full items-center gap-2 pb-3 text-left\">\n <ChevronRight className=\"size-4 shrink-0 text-muted-foreground\" />\n {headingSlot ?? defaultHeading}\n </CollapsibleTrigger>\n\n <CollapsibleContent keepMounted>{body}</CollapsibleContent>\n </Collapsible>\n );\n};\n\nconst WorkflowFormInput = ({\n schema,\n defaultValues,\n isSubmitLoading,\n submitButtonLabel,\n onSubmit,\n children,\n submitActions,\n leftActions,\n submitButtonIcon,\n submitButtonVariant,\n submitButtonFullWidth,\n onValuesChange,\n}: WorkflowInputDataProps & { onValuesChange: (value: unknown) => void }) => (\n <DynamicForm\n schema={schema}\n defaultValues={defaultValues}\n onValuesChange={onValuesChange}\n isSubmitLoading={isSubmitLoading}\n submitButtonLabel={submitButtonLabel}\n submitButtonIcon={submitButtonIcon}\n submitButtonVariant={submitButtonVariant}\n submitButtonFullWidth={submitButtonFullWidth}\n onSubmit={onSubmit}\n readOnly={isSubmitLoading}\n submitActions={submitActions}\n leftActions={leftActions}\n >\n {children}\n </DynamicForm>\n);\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mastra/playground-ui",
3
3
  "type": "module",
4
- "version": "60.0.0-alpha.6",
4
+ "version": "60.0.0-alpha.8",
5
5
  "description": "Mastra Playground components",
6
6
  "sideEffects": [
7
7
  "**/*.css"
@@ -207,8 +207,8 @@
207
207
  "react": ">=19.0.0",
208
208
  "react-dom": ">=19.0.0",
209
209
  "tailwindcss": "^4.0.0",
210
- "@mastra/react": "1.7.0-alpha.6",
211
- "@mastra/client-js": "^1.51.0-alpha.6",
210
+ "@mastra/client-js": "^1.51.0-alpha.8",
211
+ "@mastra/react": "1.7.0-alpha.8",
212
212
  "@mastra/ai-sdk": "^1.10.5"
213
213
  },
214
214
  "devDependencies": {
@@ -253,13 +253,13 @@
253
253
  "vite-plugin-dts": "^4.5.4",
254
254
  "vite-plugin-lib-inject-css": "^2.2.2",
255
255
  "vitest": "4.1.11",
256
- "@internal/lint": "0.0.137",
257
- "@mastra/memory": "1.33.0-alpha.3",
258
256
  "@mastra/ai-sdk": "1.10.5",
259
- "@mastra/client-js": "^1.51.0-alpha.6",
257
+ "@internal/lint": "0.0.137",
258
+ "@mastra/client-js": "^1.51.0-alpha.8",
259
+ "@mastra/memory": "1.33.0-alpha.4",
260
+ "@mastra/react": "1.7.0-alpha.8",
260
261
  "@mastra/schema-compat": "1.3.12-alpha.1",
261
- "@mastra/core": "1.72.0-alpha.6",
262
- "@mastra/react": "1.7.0-alpha.6"
262
+ "@mastra/core": "1.72.0-alpha.8"
263
263
  },
264
264
  "homepage": "https://mastra.ai",
265
265
  "repository": {