@remoraflow/ui 0.9.0 → 0.10.0
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/components/ui/select.d.ts +3 -1
- package/dist/components/ui/select.d.ts.map +1 -1
- package/dist/editors/expression-editor.d.ts +6 -0
- package/dist/editors/expression-editor.d.ts.map +1 -1
- package/dist/editors/params/agent-loop-params.d.ts +3 -2
- package/dist/editors/params/agent-loop-params.d.ts.map +1 -1
- package/dist/editors/params/tool-call-params.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +373 -223
- package/dist/index.js.map +14 -13
- package/dist/nodes/agent-loop-node.d.ts.map +1 -1
- package/dist/nodes/tool-call-node.d.ts.map +1 -1
- package/dist/panels/step-detail-panel.d.ts.map +1 -1
- package/dist/panels/step-editor-panel.d.ts.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tool-schemas-context.d.ts +5 -0
- package/dist/tool-schemas-context.d.ts.map +1 -0
- package/dist/workflow-viewer.d.ts +6 -1
- package/dist/workflow-viewer.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../src/components/ui/button.tsx", "../src/lib/utils.ts", "../src/components/replay-slider.tsx", "../src/components/step-palette.tsx", "../src/components/ui/collapsible.tsx", "../src/components/ui/dropdown-menu.tsx", "../src/components/ui/input.tsx", "../src/components/ui/label.tsx", "../src/components/ui/select.tsx", "../src/components/ui/switch.tsx", "../src/components/ui/textarea.tsx", "../src/editors/expression-editor.tsx", "../src/components/ui/tabs.tsx", "../src/editors/json-code-editor.tsx", "../src/editors/codemirror-theme.ts", "../src/editors/json-viewer.tsx", "../src/execution-state.ts", "../src/graph-layout.ts", "../src/utils/group-refs.ts", "../src/hooks/use-workflow-execution.ts", "../src/panels/shared.tsx", "../src/panels/step-detail-panel.tsx", "../src/editors/shared-editors.tsx", "../src/editors/params/agent-loop-params.tsx", "../src/editors/params/end-params.tsx", "../src/editors/params/extract-data-params.tsx", "../src/editors/params/for-each-params.tsx", "../src/editors/params/llm-prompt-params.tsx", "../src/editors/params/sleep-params.tsx", "../src/editors/params/start-params.tsx", "../src/editors/params/switch-case-params.tsx", "../src/editors/params/tool-call-params.tsx", "../src/editors/params/wait-for-condition-params.tsx", "../src/panels/step-editor-panel.tsx", "../src/theme.tsx", "../src/utils/step-defaults.ts", "../src/workflow-viewer.tsx", "../src/components/canvas-context-menu.tsx", "../src/components/workflow-json-dialog.tsx", "../src/edges/workflow-edge.tsx", "../src/edit-context.tsx", "../src/hooks/use-context-menu.ts", "../src/hooks/use-editable-workflow.ts", "../src/hooks/use-selection-state.ts", "../src/nodes/agent-loop-node.tsx", "../src/nodes/base-node.tsx", "../src/nodes/end-node.tsx", "../src/nodes/extract-data-node.tsx", "../src/nodes/for-each-node.tsx", "../src/nodes/group-header-node.tsx", "../src/nodes/llm-prompt-node.tsx", "../src/nodes/sleep-node.tsx", "../src/nodes/start-node.tsx", "../src/nodes/start-step-node.tsx", "../src/nodes/switch-case-node.tsx", "../src/nodes/tool-call-node.tsx", "../src/nodes/wait-for-condition-node.tsx"],
|
|
3
|
+
"sources": ["../src/index.ts", "../src/components/ui/button.tsx", "../src/lib/utils.ts", "../src/components/replay-slider.tsx", "../src/components/step-palette.tsx", "../src/components/ui/collapsible.tsx", "../src/components/ui/dropdown-menu.tsx", "../src/components/ui/input.tsx", "../src/components/ui/label.tsx", "../src/components/ui/select.tsx", "../src/components/ui/switch.tsx", "../src/components/ui/textarea.tsx", "../src/editors/expression-editor.tsx", "../src/components/ui/tabs.tsx", "../src/editors/json-code-editor.tsx", "../src/editors/codemirror-theme.ts", "../src/editors/json-viewer.tsx", "../src/execution-state.ts", "../src/graph-layout.ts", "../src/utils/group-refs.ts", "../src/hooks/use-workflow-execution.ts", "../src/tool-schemas-context.tsx", "../src/panels/shared.tsx", "../src/panels/step-detail-panel.tsx", "../src/editors/shared-editors.tsx", "../src/editors/params/agent-loop-params.tsx", "../src/editors/params/end-params.tsx", "../src/editors/params/extract-data-params.tsx", "../src/editors/params/for-each-params.tsx", "../src/editors/params/llm-prompt-params.tsx", "../src/editors/params/sleep-params.tsx", "../src/editors/params/start-params.tsx", "../src/editors/params/switch-case-params.tsx", "../src/editors/params/tool-call-params.tsx", "../src/editors/params/wait-for-condition-params.tsx", "../src/panels/step-editor-panel.tsx", "../src/theme.tsx", "../src/utils/step-defaults.ts", "../src/workflow-viewer.tsx", "../src/components/canvas-context-menu.tsx", "../src/components/workflow-json-dialog.tsx", "../src/edges/workflow-edge.tsx", "../src/edit-context.tsx", "../src/hooks/use-context-menu.ts", "../src/hooks/use-editable-workflow.ts", "../src/hooks/use-selection-state.ts", "../src/nodes/agent-loop-node.tsx", "../src/nodes/base-node.tsx", "../src/nodes/end-node.tsx", "../src/nodes/extract-data-node.tsx", "../src/nodes/for-each-node.tsx", "../src/nodes/group-header-node.tsx", "../src/nodes/llm-prompt-node.tsx", "../src/nodes/sleep-node.tsx", "../src/nodes/start-node.tsx", "../src/nodes/start-step-node.tsx", "../src/nodes/switch-case-node.tsx", "../src/nodes/tool-call-node.tsx", "../src/nodes/wait-for-condition-node.tsx"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"/** @module viewer */\nimport \"./styles.css\";\n\n// shadcn/ui components\n\nexport type { ReplaySliderProps } from \"./components/replay-slider\";\nexport { ReplaySlider } from \"./components/replay-slider\";\nexport type { StepPaletteProps } from \"./components/step-palette\";\nexport { StepPalette } from \"./components/step-palette\";\nexport { Button } from \"./components/ui/button\";\nexport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"./components/ui/collapsible\";\nexport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"./components/ui/dropdown-menu\";\nexport { Input } from \"./components/ui/input\";\nexport { Label } from \"./components/ui/label\";\nexport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"./components/ui/select\";\nexport { Switch } from \"./components/ui/switch\";\nexport { Textarea } from \"./components/ui/textarea\";\nexport type { ExpressionEditorProps } from \"./editors/expression-editor\";\nexport { ExpressionEditor } from \"./editors/expression-editor\";\nexport type { JsonCodeEditorProps } from \"./editors/json-code-editor\";\nexport { JsonCodeEditor } from \"./editors/json-code-editor\";\nexport type { JsonViewerProps } from \"./editors/json-viewer\";\nexport { JsonViewer } from \"./editors/json-viewer\";\nexport type { StepExecutionSummary } from \"./execution-state\";\nexport { deriveStepSummaries } from \"./execution-state\";\nexport type { LayoutDirection, StepNodeData } from \"./graph-layout\";\nexport { buildEditableLayout, buildLayout } from \"./graph-layout\";\nexport type {\n UseWorkflowExecutionOptions,\n WorkflowExecutionControls,\n} from \"./hooks/use-workflow-execution\";\nexport { useWorkflowExecution } from \"./hooks/use-workflow-execution\";\nexport type { StepDetailPanelProps } from \"./panels/step-detail-panel\";\nexport { StepDetailPanel } from \"./panels/step-detail-panel\";\nexport type { StepEditorPanelProps } from \"./panels/step-editor-panel\";\nexport { StepEditorPanel } from \"./panels/step-editor-panel\";\nexport { useDarkMode } from \"./theme\";\nexport { createDefaultStep, resetStepCounter } from \"./utils/step-defaults\";\nexport type { WorkflowViewerProps } from \"./workflow-viewer\";\nexport { WorkflowViewer } from \"./workflow-viewer\";\n",
|
|
5
|
+
"/** @module viewer */\nimport \"./styles.css\";\n\n// shadcn/ui components\n\nexport type { ReplaySliderProps } from \"./components/replay-slider\";\nexport { ReplaySlider } from \"./components/replay-slider\";\nexport type { StepPaletteProps } from \"./components/step-palette\";\nexport { StepPalette } from \"./components/step-palette\";\nexport { Button } from \"./components/ui/button\";\nexport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"./components/ui/collapsible\";\nexport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"./components/ui/dropdown-menu\";\nexport { Input } from \"./components/ui/input\";\nexport { Label } from \"./components/ui/label\";\nexport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"./components/ui/select\";\nexport { Switch } from \"./components/ui/switch\";\nexport { Textarea } from \"./components/ui/textarea\";\nexport type { ExpressionEditorProps } from \"./editors/expression-editor\";\nexport { ExpressionEditor } from \"./editors/expression-editor\";\nexport type { JsonCodeEditorProps } from \"./editors/json-code-editor\";\nexport { JsonCodeEditor } from \"./editors/json-code-editor\";\nexport type { JsonViewerProps } from \"./editors/json-viewer\";\nexport { JsonViewer } from \"./editors/json-viewer\";\nexport type { StepExecutionSummary } from \"./execution-state\";\nexport { deriveStepSummaries } from \"./execution-state\";\nexport type { LayoutDirection, StepNodeData } from \"./graph-layout\";\nexport { buildEditableLayout, buildLayout } from \"./graph-layout\";\nexport type {\n UseWorkflowExecutionOptions,\n WorkflowExecutionControls,\n} from \"./hooks/use-workflow-execution\";\nexport { useWorkflowExecution } from \"./hooks/use-workflow-execution\";\nexport type { StepDetailPanelProps } from \"./panels/step-detail-panel\";\nexport { StepDetailPanel } from \"./panels/step-detail-panel\";\nexport type { StepEditorPanelProps } from \"./panels/step-editor-panel\";\nexport { StepEditorPanel } from \"./panels/step-editor-panel\";\nexport { useDarkMode } from \"./theme\";\nexport {\n ToolSchemasContext,\n useToolDisplayName,\n useToolSchemas,\n} from \"./tool-schemas-context\";\nexport { createDefaultStep, resetStepCounter } from \"./utils/step-defaults\";\nexport type { WorkflowViewerProps } from \"./workflow-viewer\";\nexport { WorkflowViewer } from \"./workflow-viewer\";\n",
|
|
6
6
|
"import { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n xs: \"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot.Root : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Button };\n",
|
|
7
7
|
"import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n",
|
|
8
8
|
"import type { ExecutionState } from \"@remoraflow/core\";\nimport type React from \"react\";\nimport { Button } from \"./ui/button\";\n\nexport interface ReplaySliderProps {\n stateHistory: ExecutionState[];\n replayIndex: number | null;\n isRunning: boolean;\n onSeek: (index: number) => void;\n onGoLive: () => void;\n}\n\nexport function ReplaySlider({\n stateHistory,\n replayIndex,\n isRunning,\n onSeek,\n onGoLive,\n}: ReplaySliderProps) {\n if (stateHistory.length <= 1) return null;\n\n const currentIndex = replayIndex ?? stateHistory.length - 1;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onSeek(Number(e.target.value));\n };\n\n const latestStatus = stateHistory[stateHistory.length - 1]?.status;\n const base =\n \"w-[72px] h-[24px] text-[11px] font-medium rounded flex items-center justify-center\";\n\n let badge: React.ReactNode;\n if (replayIndex !== null) {\n badge = (\n <Button\n variant=\"outline\"\n size=\"xs\"\n onClick={onGoLive}\n className=\"w-[72px]\"\n >\n Live\n </Button>\n );\n } else if (isRunning) {\n badge = (\n <span className={`${base} text-green-600 dark:text-green-400 gap-1`}>\n <span className=\"w-1.5 h-1.5 rounded-full bg-green-500 animate-pulse\" />\n Live\n </span>\n );\n } else if (latestStatus === \"completed\") {\n badge = (\n <span className={`${base} text-green-600 dark:text-green-400`}>\n Complete\n </span>\n );\n } else if (latestStatus === \"failed\") {\n badge = (\n <span className={`${base} text-red-600 dark:text-red-400`}>Failed</span>\n );\n } else {\n badge = <span className={base} />;\n }\n\n return (\n <div className=\"bg-card dark:bg-secondary/40 border-t border-border px-4 py-2 flex items-center gap-3 shrink-0\">\n <input\n type=\"range\"\n min={0}\n max={stateHistory.length - 1}\n value={currentIndex}\n onChange={handleChange}\n className=\"flex-1 h-1.5 accent-primary\"\n />\n <span className=\"text-xs text-muted-foreground tabular-nums min-w-[60px] text-right\">\n {currentIndex + 1} / {stateHistory.length}\n </span>\n {badge}\n </div>\n );\n}\n",
|
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
"\"use client\";\n\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n",
|
|
12
12
|
"import type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30\",\n \"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50\",\n \"aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n",
|
|
13
13
|
"\"use client\";\n\nimport { Label as LabelPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n",
|
|
14
|
-
"import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction _SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction _SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"px-2 py-1.5 text-xs text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"relative flex w-full cursor-default items-
|
|
14
|
+
"import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction _SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction _SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"px-2 py-1.5 text-xs text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n description,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item> & {\n description?: React.ReactNode;\n}) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"relative flex w-full cursor-default flex-col items-stretch gap-0.5 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground\",\n className,\n )}\n {...props}\n >\n <span\n data-slot=\"select-item-indicator\"\n className=\"absolute right-2 top-1.5 flex size-3.5 items-center justify-center\"\n >\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n {description && (\n <span className=\"text-[11px] text-muted-foreground leading-snug whitespace-normal\">\n {description}\n </span>\n )}\n </SelectPrimitive.Item>\n );\n}\n\nfunction _SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"pointer-events-none -mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue };\n",
|
|
15
15
|
"import { Switch as SwitchPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Switch({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n \"peer group/switch inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[1.15rem] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0 dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground\",\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n",
|
|
16
16
|
"import type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n",
|
|
17
|
-
"import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Input } from \"../components/ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../components/ui/select\";\nimport {\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from \"../components/ui/tabs\";\nimport { Textarea } from \"../components/ui/textarea\";\nimport { JsonCodeEditor } from \"./json-code-editor\";\n\ntype Expression =\n | { type: \"literal\"; value: unknown }\n | { type: \"jmespath\"; expression: string }\n | { type: \"template\"; template: string };\n\nexport interface ExpressionEditorProps {\n value: Expression;\n onChange: (value: Expression) => void;\n label?: string;\n /** Optional JSON Schema hint to constrain literal mode. */\n schemaHint?: {\n type?: string;\n enum?: unknown[];\n };\n}\n\ntype LiteralType = \"string\" | \"number\" | \"boolean\" | \"json\";\n\nfunction inferLiteralType(value: unknown): LiteralType {\n if (typeof value === \"string\") return \"string\";\n if (typeof value === \"number\") return \"number\";\n if (typeof value === \"boolean\") return \"boolean\";\n return \"json\";\n}\n\nfunction schemaTypeToLiteralType(t: string | undefined): LiteralType | null {\n switch (t) {\n case \"string\":\n return \"string\";\n case \"number\":\n case \"integer\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"object\":\n case \"array\":\n return \"json\";\n default:\n return null;\n }\n}\n\nfunction defaultValueForSchemaType(t: string | undefined): unknown {\n switch (t) {\n case \"string\":\n return \"\";\n case \"number\":\n case \"integer\":\n return 0;\n case \"boolean\":\n return false;\n case \"array\":\n return [];\n case \"object\":\n return {};\n default:\n return \"\";\n }\n}\n\nexport function ExpressionEditor({\n value,\n onChange,\n label,\n schemaHint,\n}: ExpressionEditorProps) {\n const hintedLiteralType = schemaTypeToLiteralType(schemaHint?.type);\n const hasEnum = schemaHint?.enum && schemaHint.enum.length > 0;\n const allowTemplate = !schemaHint?.type || schemaHint.type === \"string\";\n\n const [literalType, setLiteralType] = useState<LiteralType>(\n hintedLiteralType ??\n (value.type === \"literal\" ? inferLiteralType(value.value) : \"string\"),\n );\n\n // Only sync literalType from value when the expression type changes to\n // literal from a different type. We must NOT re-infer on every value change,\n // because that would fight the user's tab selection (e.g. switching to JSON\n // sets an empty object, but inferLiteralType would call that \"json\" only if\n // it's not a string/number/boolean — and the initial default value could\n // be misclassified).\n const prevExprType = useRef(value.type);\n useEffect(() => {\n if (value.type === \"literal\" && prevExprType.current !== \"literal\") {\n setLiteralType(hintedLiteralType ?? inferLiteralType(value.value));\n }\n prevExprType.current = value.type;\n }, [value, hintedLiteralType]);\n\n const handleTypeChange = useCallback(\n (newType: string) => {\n switch (newType) {\n case \"literal\":\n if (hasEnum) {\n onChange({\n type: \"literal\",\n value: schemaHint?.enum?.[0],\n });\n } else {\n onChange({\n type: \"literal\",\n value: defaultValueForSchemaType(schemaHint?.type),\n });\n }\n break;\n case \"jmespath\":\n onChange({\n type: \"jmespath\",\n expression: value.type === \"jmespath\" ? value.expression : \"\",\n });\n break;\n case \"template\":\n onChange({\n type: \"template\",\n template: value.type === \"template\" ? value.template : \"\",\n });\n break;\n }\n },\n [value, onChange, hasEnum, schemaHint],\n );\n\n const handleLiteralChange = useCallback(\n (raw: string, type: LiteralType) => {\n let parsed: unknown;\n switch (type) {\n case \"string\":\n parsed = raw;\n break;\n case \"number\":\n parsed = raw === \"\" ? 0 : Number(raw);\n break;\n case \"boolean\":\n parsed = raw === \"true\";\n break;\n case \"json\":\n try {\n parsed = JSON.parse(raw);\n } catch {\n parsed = raw;\n }\n break;\n }\n onChange({ type: \"literal\", value: parsed });\n },\n [onChange],\n );\n\n const handleLiteralTypeChange = useCallback(\n (lt: string) => {\n const newType = lt as LiteralType;\n setLiteralType(newType);\n switch (newType) {\n case \"boolean\":\n onChange({ type: \"literal\", value: false });\n break;\n case \"number\":\n onChange({ type: \"literal\", value: 0 });\n break;\n case \"json\":\n onChange({ type: \"literal\", value: {} });\n break;\n case \"string\":\n onChange({ type: \"literal\", value: \"\" });\n break;\n }\n },\n [onChange],\n );\n\n return (\n <div className=\"space-y-1.5\">\n {label && (\n <div className=\"text-[11px] font-medium text-muted-foreground mb-1\">\n {label}\n </div>\n )}\n {(() => {\n // Extract literal value once so TabsContent children (which are\n // always mounted) can reference it without TS narrowing issues.\n const litVal = value.type === \"literal\" ? value.value : undefined;\n\n return (\n <Tabs value={value.type} onValueChange={handleTypeChange}>\n <TabsList>\n <TabsTrigger value=\"literal\">Literal</TabsTrigger>\n <TabsTrigger value=\"jmespath\">Expression</TabsTrigger>\n {allowTemplate && (\n <TabsTrigger value=\"template\">String Template</TabsTrigger>\n )}\n </TabsList>\n\n <TabsContent value=\"literal\">\n {hasEnum ? (\n <Select\n value={String(litVal ?? \"\")}\n onValueChange={(val) => {\n // Try to preserve the original type of the enum value\n const match = schemaHint?.enum?.find(\n (e) => String(e) === val,\n );\n onChange({\n type: \"literal\",\n value: match ?? val,\n });\n }}\n >\n <SelectTrigger className=\"h-8 text-xs font-mono w-full\">\n <SelectValue placeholder=\"-- select --\" />\n </SelectTrigger>\n <SelectContent>\n {schemaHint?.enum?.map((v) => (\n <SelectItem key={String(v)} value={String(v)}>\n {String(v)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : hintedLiteralType ? (\n <LiteralWidget\n type={hintedLiteralType}\n value={litVal}\n onChange={(raw) =>\n handleLiteralChange(raw, hintedLiteralType)\n }\n onValueChange={onChange}\n />\n ) : (\n <Tabs\n value={literalType}\n onValueChange={handleLiteralTypeChange}\n >\n <TabsList>\n <TabsTrigger value=\"string\">string</TabsTrigger>\n <TabsTrigger value=\"number\">number</TabsTrigger>\n <TabsTrigger value=\"boolean\">boolean</TabsTrigger>\n <TabsTrigger value=\"json\">json</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"string\">\n <Input\n type=\"text\"\n value={String(litVal ?? \"\")}\n onChange={(e) =>\n handleLiteralChange(e.target.value, \"string\")\n }\n className=\"h-8 text-xs font-mono\"\n placeholder=\"Enter value...\"\n />\n </TabsContent>\n\n <TabsContent value=\"number\">\n <Input\n type=\"number\"\n value={String(litVal ?? \"\")}\n onChange={(e) =>\n handleLiteralChange(e.target.value, \"number\")\n }\n className=\"h-8 text-xs font-mono\"\n placeholder=\"0\"\n />\n </TabsContent>\n\n <TabsContent value=\"boolean\">\n <Select\n value={litVal === true ? \"true\" : \"false\"}\n onValueChange={(val) =>\n onChange({\n type: \"literal\",\n value: val === \"true\",\n })\n }\n >\n <SelectTrigger className=\"h-8 text-xs font-mono w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"true\">true</SelectItem>\n <SelectItem value=\"false\">false</SelectItem>\n </SelectContent>\n </Select>\n </TabsContent>\n\n <TabsContent value=\"json\">\n <JsonCodeEditor\n value={\n typeof litVal === \"string\"\n ? litVal\n : JSON.stringify(litVal, null, 2)\n }\n onChange={(val) => handleLiteralChange(val, \"json\")}\n placeholderText='{\"key\": \"value\"}'\n />\n </TabsContent>\n </Tabs>\n )}\n </TabsContent>\n\n <TabsContent value=\"jmespath\">\n <Input\n value={value.type === \"jmespath\" ? value.expression : \"\"}\n onChange={(e) =>\n onChange({\n type: \"jmespath\",\n expression: e.target.value,\n })\n }\n className=\"h-8 text-xs font-mono\"\n placeholder=\"stepId.outputKey\"\n />\n </TabsContent>\n\n {allowTemplate && (\n <TabsContent value=\"template\">\n <Textarea\n value={value.type === \"template\" ? value.template : \"\"}\n onChange={(e) =>\n onChange({\n type: \"template\",\n template: e.target.value,\n })\n }\n rows={3}\n className=\"text-xs font-mono resize-y\"\n placeholder=\"Hello ${stepId.name}, your total is ${order.total}\"\n />\n </TabsContent>\n )}\n </Tabs>\n );\n })()}\n </div>\n );\n}\n\n/** Renders a single literal input widget without the type sub-tabs. */\nfunction LiteralWidget({\n type,\n value,\n onChange,\n onValueChange,\n}: {\n type: LiteralType;\n value: unknown;\n onChange: (raw: string) => void;\n onValueChange: (expr: Expression) => void;\n}) {\n switch (type) {\n case \"string\":\n return (\n <Input\n type=\"text\"\n value={String(value ?? \"\")}\n onChange={(e) => onChange(e.target.value)}\n className=\"h-8 text-xs font-mono\"\n placeholder=\"Enter value...\"\n />\n );\n case \"number\":\n return (\n <Input\n type=\"number\"\n value={String(value ?? \"\")}\n onChange={(e) => onChange(e.target.value)}\n className=\"h-8 text-xs font-mono\"\n placeholder=\"0\"\n />\n );\n case \"boolean\":\n return (\n <Select\n value={value === true ? \"true\" : \"false\"}\n onValueChange={(val) =>\n onValueChange({\n type: \"literal\",\n value: val === \"true\",\n })\n }\n >\n <SelectTrigger className=\"h-8 text-xs font-mono w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"true\">true</SelectItem>\n <SelectItem value=\"false\">false</SelectItem>\n </SelectContent>\n </Select>\n );\n case \"json\":\n return (\n <JsonCodeEditor\n value={\n typeof value === \"string\" ? value : JSON.stringify(value, null, 2)\n }\n onChange={onChange}\n placeholderText='{\"key\": \"value\"}'\n />\n );\n }\n}\n",
|
|
17
|
+
"import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Input } from \"../components/ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../components/ui/select\";\nimport {\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from \"../components/ui/tabs\";\nimport { Textarea } from \"../components/ui/textarea\";\nimport { JsonCodeEditor } from \"./json-code-editor\";\n\ntype Expression =\n | { type: \"literal\"; value: unknown }\n | { type: \"jmespath\"; expression: string }\n | { type: \"template\"; template: string };\n\nexport interface ExpressionEditorProps {\n value: Expression;\n onChange: (value: Expression) => void;\n label?: string;\n /** Optional JSON Schema hint to constrain literal mode. */\n schemaHint?: {\n type?: string;\n enum?: unknown[];\n /**\n * JSON Schema `default`. When present, rendered as placeholder text in\n * literal inputs to show what the tool will use if the input is left\n * empty or omitted.\n */\n default?: unknown;\n };\n}\n\nfunction formatDefault(value: unknown): string | undefined {\n if (value === undefined) return undefined;\n if (typeof value === \"string\") return value;\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\ntype LiteralType = \"string\" | \"number\" | \"boolean\" | \"json\";\n\nfunction inferLiteralType(value: unknown): LiteralType {\n if (typeof value === \"string\") return \"string\";\n if (typeof value === \"number\") return \"number\";\n if (typeof value === \"boolean\") return \"boolean\";\n return \"json\";\n}\n\nfunction schemaTypeToLiteralType(t: string | undefined): LiteralType | null {\n switch (t) {\n case \"string\":\n return \"string\";\n case \"number\":\n case \"integer\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"object\":\n case \"array\":\n return \"json\";\n default:\n return null;\n }\n}\n\nfunction defaultValueForSchemaType(t: string | undefined): unknown {\n switch (t) {\n case \"string\":\n return \"\";\n case \"number\":\n case \"integer\":\n return 0;\n case \"boolean\":\n return false;\n case \"array\":\n return [];\n case \"object\":\n return {};\n default:\n return \"\";\n }\n}\n\nexport function ExpressionEditor({\n value,\n onChange,\n label,\n schemaHint,\n}: ExpressionEditorProps) {\n const hintedLiteralType = schemaTypeToLiteralType(schemaHint?.type);\n const hasEnum = schemaHint?.enum && schemaHint.enum.length > 0;\n const allowTemplate = !schemaHint?.type || schemaHint.type === \"string\";\n const defaultHint = formatDefault(schemaHint?.default);\n const defaultJsonHint =\n schemaHint?.default !== undefined\n ? typeof schemaHint.default === \"string\"\n ? schemaHint.default\n : JSON.stringify(schemaHint.default, null, 2)\n : undefined;\n\n const [literalType, setLiteralType] = useState<LiteralType>(\n hintedLiteralType ??\n (value.type === \"literal\" ? inferLiteralType(value.value) : \"string\"),\n );\n\n // Only sync literalType from value when the expression type changes to\n // literal from a different type. We must NOT re-infer on every value change,\n // because that would fight the user's tab selection (e.g. switching to JSON\n // sets an empty object, but inferLiteralType would call that \"json\" only if\n // it's not a string/number/boolean — and the initial default value could\n // be misclassified).\n const prevExprType = useRef(value.type);\n useEffect(() => {\n if (value.type === \"literal\" && prevExprType.current !== \"literal\") {\n setLiteralType(hintedLiteralType ?? inferLiteralType(value.value));\n }\n prevExprType.current = value.type;\n }, [value, hintedLiteralType]);\n\n const handleTypeChange = useCallback(\n (newType: string) => {\n switch (newType) {\n case \"literal\":\n if (hasEnum) {\n onChange({\n type: \"literal\",\n value: schemaHint?.enum?.[0],\n });\n } else {\n onChange({\n type: \"literal\",\n value: defaultValueForSchemaType(schemaHint?.type),\n });\n }\n break;\n case \"jmespath\":\n onChange({\n type: \"jmespath\",\n expression: value.type === \"jmespath\" ? value.expression : \"\",\n });\n break;\n case \"template\":\n onChange({\n type: \"template\",\n template: value.type === \"template\" ? value.template : \"\",\n });\n break;\n }\n },\n [value, onChange, hasEnum, schemaHint],\n );\n\n const handleLiteralChange = useCallback(\n (raw: string, type: LiteralType) => {\n let parsed: unknown;\n switch (type) {\n case \"string\":\n parsed = raw;\n break;\n case \"number\":\n parsed = raw === \"\" ? 0 : Number(raw);\n break;\n case \"boolean\":\n parsed = raw === \"true\";\n break;\n case \"json\":\n try {\n parsed = JSON.parse(raw);\n } catch {\n parsed = raw;\n }\n break;\n }\n onChange({ type: \"literal\", value: parsed });\n },\n [onChange],\n );\n\n const handleLiteralTypeChange = useCallback(\n (lt: string) => {\n const newType = lt as LiteralType;\n setLiteralType(newType);\n switch (newType) {\n case \"boolean\":\n onChange({ type: \"literal\", value: false });\n break;\n case \"number\":\n onChange({ type: \"literal\", value: 0 });\n break;\n case \"json\":\n onChange({ type: \"literal\", value: {} });\n break;\n case \"string\":\n onChange({ type: \"literal\", value: \"\" });\n break;\n }\n },\n [onChange],\n );\n\n return (\n <div className=\"space-y-1.5\">\n {label && (\n <div className=\"text-[11px] font-medium text-muted-foreground mb-1\">\n {label}\n </div>\n )}\n {(() => {\n // Extract literal value once so TabsContent children (which are\n // always mounted) can reference it without TS narrowing issues.\n const litVal = value.type === \"literal\" ? value.value : undefined;\n\n return (\n <Tabs value={value.type} onValueChange={handleTypeChange}>\n <TabsList>\n <TabsTrigger value=\"literal\">Literal</TabsTrigger>\n <TabsTrigger value=\"jmespath\">Expression</TabsTrigger>\n {allowTemplate && (\n <TabsTrigger value=\"template\">String Template</TabsTrigger>\n )}\n </TabsList>\n\n <TabsContent value=\"literal\">\n {hasEnum ? (\n <Select\n value={String(litVal ?? \"\")}\n onValueChange={(val) => {\n // Try to preserve the original type of the enum value\n const match = schemaHint?.enum?.find(\n (e) => String(e) === val,\n );\n onChange({\n type: \"literal\",\n value: match ?? val,\n });\n }}\n >\n <SelectTrigger className=\"h-8 text-xs font-mono w-full\">\n <SelectValue\n placeholder={\n defaultHint !== undefined\n ? `default: ${defaultHint}`\n : \"-- select --\"\n }\n />\n </SelectTrigger>\n <SelectContent>\n {schemaHint?.enum?.map((v) => (\n <SelectItem key={String(v)} value={String(v)}>\n {String(v)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : hintedLiteralType ? (\n <LiteralWidget\n type={hintedLiteralType}\n value={litVal}\n onChange={(raw) =>\n handleLiteralChange(raw, hintedLiteralType)\n }\n onValueChange={onChange}\n defaultHint={defaultHint}\n defaultJsonHint={defaultJsonHint}\n />\n ) : (\n <Tabs\n value={literalType}\n onValueChange={handleLiteralTypeChange}\n >\n <TabsList>\n <TabsTrigger value=\"string\">string</TabsTrigger>\n <TabsTrigger value=\"number\">number</TabsTrigger>\n <TabsTrigger value=\"boolean\">boolean</TabsTrigger>\n <TabsTrigger value=\"json\">json</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"string\">\n <Input\n type=\"text\"\n value={String(litVal ?? \"\")}\n onChange={(e) =>\n handleLiteralChange(e.target.value, \"string\")\n }\n className=\"h-8 text-xs font-mono\"\n placeholder={defaultHint ?? \"Enter value...\"}\n />\n </TabsContent>\n\n <TabsContent value=\"number\">\n <Input\n type=\"number\"\n value={String(litVal ?? \"\")}\n onChange={(e) =>\n handleLiteralChange(e.target.value, \"number\")\n }\n className=\"h-8 text-xs font-mono\"\n placeholder={defaultHint ?? \"0\"}\n />\n </TabsContent>\n\n <TabsContent value=\"boolean\">\n <Select\n value={litVal === true ? \"true\" : \"false\"}\n onValueChange={(val) =>\n onChange({\n type: \"literal\",\n value: val === \"true\",\n })\n }\n >\n <SelectTrigger className=\"h-8 text-xs font-mono w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"true\">true</SelectItem>\n <SelectItem value=\"false\">false</SelectItem>\n </SelectContent>\n </Select>\n </TabsContent>\n\n <TabsContent value=\"json\">\n <JsonCodeEditor\n value={\n typeof litVal === \"string\"\n ? litVal\n : JSON.stringify(litVal, null, 2)\n }\n onChange={(val) => handleLiteralChange(val, \"json\")}\n placeholderText={defaultJsonHint ?? '{\"key\": \"value\"}'}\n />\n </TabsContent>\n </Tabs>\n )}\n </TabsContent>\n\n <TabsContent value=\"jmespath\">\n <Input\n value={value.type === \"jmespath\" ? value.expression : \"\"}\n onChange={(e) =>\n onChange({\n type: \"jmespath\",\n expression: e.target.value,\n })\n }\n className=\"h-8 text-xs font-mono\"\n placeholder=\"stepId.outputKey\"\n />\n </TabsContent>\n\n {allowTemplate && (\n <TabsContent value=\"template\">\n <Textarea\n value={value.type === \"template\" ? value.template : \"\"}\n onChange={(e) =>\n onChange({\n type: \"template\",\n template: e.target.value,\n })\n }\n rows={3}\n className=\"text-xs font-mono resize-y\"\n placeholder=\"Hello ${stepId.name}, your total is ${order.total}\"\n />\n </TabsContent>\n )}\n </Tabs>\n );\n })()}\n </div>\n );\n}\n\n/** Renders a single literal input widget without the type sub-tabs. */\nfunction LiteralWidget({\n type,\n value,\n onChange,\n onValueChange,\n defaultHint,\n defaultJsonHint,\n}: {\n type: LiteralType;\n value: unknown;\n onChange: (raw: string) => void;\n onValueChange: (expr: Expression) => void;\n defaultHint?: string;\n defaultJsonHint?: string;\n}) {\n switch (type) {\n case \"string\":\n return (\n <Input\n type=\"text\"\n value={String(value ?? \"\")}\n onChange={(e) => onChange(e.target.value)}\n className=\"h-8 text-xs font-mono\"\n placeholder={defaultHint ?? \"Enter value...\"}\n />\n );\n case \"number\":\n return (\n <Input\n type=\"number\"\n value={String(value ?? \"\")}\n onChange={(e) => onChange(e.target.value)}\n className=\"h-8 text-xs font-mono\"\n placeholder={defaultHint ?? \"0\"}\n />\n );\n case \"boolean\":\n return (\n <Select\n value={value === true ? \"true\" : \"false\"}\n onValueChange={(val) =>\n onValueChange({\n type: \"literal\",\n value: val === \"true\",\n })\n }\n >\n <SelectTrigger className=\"h-8 text-xs font-mono w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"true\">true</SelectItem>\n <SelectItem value=\"false\">false</SelectItem>\n </SelectContent>\n </Select>\n );\n case \"json\":\n return (\n <JsonCodeEditor\n value={\n typeof value === \"string\" ? value : JSON.stringify(value, null, 2)\n }\n onChange={onChange}\n placeholderText={defaultJsonHint ?? '{\"key\": \"value\"}'}\n />\n );\n }\n}\n",
|
|
18
18
|
"import { Tabs as TabsPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Tabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"inline-flex w-fit items-center justify-center rounded-lg bg-muted/50 p-0.5 text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-2.5 py-1 text-[11px] font-medium transition-all disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-foreground data-[state=active]:text-background data-[state=active]:shadow-sm\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n );\n}\n\nexport { Tabs, TabsContent, TabsList, TabsTrigger };\n",
|
|
19
19
|
"import { closeBrackets, closeBracketsKeymap } from \"@codemirror/autocomplete\";\nimport { defaultKeymap, history, historyKeymap } from \"@codemirror/commands\";\nimport { json, jsonParseLinter } from \"@codemirror/lang-json\";\nimport {\n bracketMatching,\n foldKeymap,\n indentOnInput,\n} from \"@codemirror/language\";\nimport { linter } from \"@codemirror/lint\";\nimport { Compartment, EditorState, type Extension } from \"@codemirror/state\";\nimport {\n drawSelection,\n EditorView,\n highlightSpecialChars,\n keymap,\n lineNumbers,\n placeholder,\n} from \"@codemirror/view\";\nimport { useEffect, useRef } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { buildEditorTheme } from \"./codemirror-theme\";\n\nexport interface JsonCodeEditorProps {\n value: string;\n onChange: (value: string) => void;\n className?: string;\n placeholderText?: string;\n onBlur?: () => void;\n /** Max height for the scrollable area. Defaults to \"300px\". Use \"none\" for unconstrained. */\n maxHeight?: string;\n}\n\nexport function JsonCodeEditor({\n value,\n onChange,\n className,\n placeholderText,\n onBlur,\n maxHeight,\n}: JsonCodeEditorProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const viewRef = useRef<EditorView | null>(null);\n const themeCompartmentRef = useRef(new Compartment());\n const onChangeRef = useRef(onChange);\n const onBlurRef = useRef(onBlur);\n const initialValueRef = useRef(value);\n const placeholderRef = useRef(placeholderText);\n const maxHeightRef = useRef(maxHeight);\n\n onChangeRef.current = onChange;\n onBlurRef.current = onBlur;\n\n // Create editor on mount\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n if (viewRef.current) return;\n\n const dark =\n typeof document !== \"undefined\" &&\n document.documentElement.classList.contains(\"dark\");\n\n const extensions: Extension[] = [\n lineNumbers(),\n highlightSpecialChars(),\n history(),\n drawSelection(),\n bracketMatching(),\n closeBrackets(),\n indentOnInput(),\n json(),\n linter(jsonParseLinter(), { delay: 300 }),\n keymap.of([\n ...closeBracketsKeymap,\n ...defaultKeymap,\n ...historyKeymap,\n ...foldKeymap,\n ]),\n EditorView.updateListener.of((update) => {\n if (update.docChanged) {\n onChangeRef.current(update.state.doc.toString());\n }\n if (update.focusChanged && !update.view.hasFocus) {\n onBlurRef.current?.();\n }\n }),\n EditorView.lineWrapping,\n themeCompartmentRef.current.of(\n buildEditorTheme(dark, maxHeightRef.current),\n ),\n ];\n\n if (placeholderRef.current) {\n extensions.push(placeholder(placeholderRef.current));\n }\n\n const state = EditorState.create({\n doc: initialValueRef.current,\n extensions,\n });\n\n const view = new EditorView({ state, parent: container });\n viewRef.current = view;\n\n return () => {\n view.destroy();\n viewRef.current = null;\n };\n }, []);\n\n // Sync external value changes into the editor\n useEffect(() => {\n const view = viewRef.current;\n if (!view) return;\n const current = view.state.doc.toString();\n if (current !== value) {\n view.dispatch({\n changes: { from: 0, to: current.length, insert: value },\n });\n }\n }, [value]);\n\n // Observe dark mode changes and update theme\n useEffect(() => {\n const el = document.documentElement;\n const observer = new MutationObserver(() => {\n const view = viewRef.current;\n if (!view) return;\n const dark = el.classList.contains(\"dark\");\n view.dispatch({\n effects: themeCompartmentRef.current.reconfigure(\n buildEditorTheme(dark, maxHeightRef.current),\n ),\n });\n });\n observer.observe(el, { attributes: true, attributeFilter: [\"class\"] });\n return () => observer.disconnect();\n }, []);\n\n return (\n <div ref={containerRef} className={cn(\"json-code-editor\", className)} />\n );\n}\n",
|
|
20
20
|
"import { HighlightStyle, syntaxHighlighting } from \"@codemirror/language\";\nimport type { Extension } from \"@codemirror/state\";\nimport { EditorView } from \"@codemirror/view\";\nimport { tags } from \"@lezer/highlight\";\n\nexport function buildJsonHighlightStyle(dark: boolean) {\n return HighlightStyle.define([\n {\n tag: tags.propertyName,\n color: dark ? \"#7dd3fc\" : \"#0369a1\", // sky-300 / sky-700\n },\n {\n tag: tags.string,\n color: dark ? \"#86efac\" : \"#15803d\", // green-300 / green-700\n },\n {\n tag: tags.number,\n color: dark ? \"#c4b5fd\" : \"#7c3aed\", // violet-300 / violet-600\n },\n {\n tag: [tags.bool, tags.null],\n color: dark ? \"#fdba74\" : \"#c2410c\", // orange-300 / orange-700\n },\n {\n tag: tags.punctuation,\n color: \"var(--color-muted-foreground, var(--muted-foreground))\",\n },\n ]);\n}\n\nexport function buildEditorTheme(\n dark: boolean,\n scrollerMaxHeight?: string,\n): Extension[] {\n const editorTheme = EditorView.theme(\n {\n \"&\": {\n fontSize: \"12px\",\n fontFamily:\n 'ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace',\n borderRadius: \"calc(var(--radius) - 2px)\",\n border: \"1px solid var(--color-border, var(--border))\",\n backgroundColor: dark\n ? \"var(--color-input, var(--input))\"\n : \"var(--color-background, var(--background))\",\n },\n \"&.cm-focused\": {\n outline: \"none\",\n borderColor: \"var(--color-ring, var(--ring))\",\n boxShadow:\n \"0 0 0 3px color-mix(in srgb, var(--color-ring, var(--ring)) 50%, transparent)\",\n },\n \".cm-content\": {\n padding: \"8px 0\",\n caretColor: \"var(--color-foreground, var(--foreground))\",\n color: \"var(--color-foreground, var(--foreground))\",\n },\n \".cm-cursor\": {\n borderLeftColor: \"var(--color-foreground, var(--foreground))\",\n },\n \".cm-gutters\": {\n backgroundColor: \"transparent\",\n borderRight: \"none\",\n color: \"var(--color-muted-foreground, var(--muted-foreground))\",\n paddingLeft: \"2px\",\n },\n \".cm-lineNumbers .cm-gutterElement\": {\n paddingRight: \"4px\",\n minWidth: \"16px\",\n },\n \".cm-activeLineGutter\": {\n backgroundColor: \"transparent\",\n color: \"var(--color-foreground, var(--foreground))\",\n },\n \".cm-activeLine\": {\n backgroundColor: dark ? \"rgba(255,255,255,0.03)\" : \"rgba(0,0,0,0.03)\",\n },\n \".cm-selectionBackground\": {\n backgroundColor: dark\n ? \"rgba(255,255,255,0.1) !important\"\n : \"rgba(0,0,0,0.1) !important\",\n },\n \".cm-line\": {\n padding: \"0 8px\",\n },\n \".cm-lintRange-error\": {\n backgroundImage: \"none\",\n textDecoration:\n \"wavy underline var(--color-destructive, var(--destructive))\",\n textDecorationSkipInk: \"none\",\n },\n \".cm-lint-marker-error\": {\n content: \"'!'\",\n },\n \".cm-tooltip-lint\": {\n backgroundColor: \"var(--color-popover, var(--popover))\",\n border: \"1px solid var(--color-border, var(--border))\",\n borderRadius: \"calc(var(--radius) - 2px)\",\n color: \"var(--color-popover-foreground, var(--popover-foreground))\",\n fontSize: \"11px\",\n },\n \".cm-diagnostic-error\": {\n borderLeft: \"3px solid var(--color-destructive, var(--destructive))\",\n color: \"var(--color-destructive, var(--destructive))\",\n },\n \".cm-placeholder\": {\n color: \"var(--color-muted-foreground, var(--muted-foreground))\",\n },\n \".cm-scroller\": {\n maxHeight: scrollerMaxHeight ?? \"300px\",\n overflow: \"auto\",\n },\n },\n { dark },\n );\n\n return [editorTheme, syntaxHighlighting(buildJsonHighlightStyle(dark))];\n}\n",
|
|
@@ -23,10 +23,11 @@
|
|
|
23
23
|
"import dagre from \"@dagrejs/dagre\";\nimport type {\n Diagnostic,\n ExecutionState,\n WorkflowDefinition,\n WorkflowStep,\n} from \"@remoraflow/core\";\nimport type { Edge, Node } from \"@xyflow/react\";\nimport {\n deriveStepSummaries,\n type StepExecutionSummary,\n} from \"./execution-state\";\nimport {\n GROUP_STEP_TYPES,\n getChildStepIds,\n isGroupStep,\n} from \"./utils/group-refs\";\n\n/** Controls whether the DAG flows top-to-bottom (`\"vertical\"`) or left-to-right (`\"horizontal\"`). */\nexport type LayoutDirection = \"vertical\" | \"horizontal\";\n\nexport interface StepNodeData {\n step: WorkflowStep;\n diagnostics: Diagnostic[];\n hasSourceEdge?: boolean;\n inputSchema?: object;\n outputSchema?: object;\n /** Execution summary for this step, when executionState is provided. */\n executionSummary?: StepExecutionSummary;\n /** Whether the workflow execution is currently paused. */\n paused?: boolean;\n /** Layout direction so node components can orient their handles. */\n layoutDirection?: LayoutDirection;\n}\n\nconst NODE_WIDTH = 300;\nconst NODE_HEIGHT = 180;\nconst START_NODE_SIZE = 60;\nconst GROUP_HEADER_WIDTH = 280;\nconst GROUP_HEADER_HEIGHT = 80;\nexport const GROUP_PADDING = 30;\nexport const GROUP_HEADER = 40;\n\nconst RANK_SEP = 60;\nconst NODE_SEP = 40;\n\nfunction dagreGraphOptions(direction: LayoutDirection) {\n return {\n rankdir: direction === \"horizontal\" ? \"LR\" : \"TB\",\n ranksep: RANK_SEP,\n nodesep: NODE_SEP,\n rankalign: direction === \"horizontal\" ? \"top\" : \"center\",\n };\n}\n\nconst START_NODE_ID = \"__start__\";\n\nfunction getOrThrow<K, V>(map: Map<K, V>, key: K): V {\n const val = map.get(key);\n if (val === undefined) throw new Error(`Missing map key: ${String(key)}`);\n return val;\n}\n\nfunction stepNodeType(step: WorkflowStep): string | undefined {\n switch (step.type) {\n case \"tool-call\":\n return \"toolCall\";\n case \"llm-prompt\":\n return \"llmPrompt\";\n case \"extract-data\":\n return \"extractData\";\n case \"switch-case\":\n return \"switchCase\";\n case \"for-each\":\n return \"forEach\";\n case \"start\":\n return \"startStep\";\n case \"end\":\n return \"end\";\n case \"sleep\":\n return \"sleep\";\n case \"wait-for-condition\":\n return \"waitForCondition\";\n case \"agent-loop\":\n return \"agentLoop\";\n }\n}\n\nfunction renderExpression(\n expr:\n | { type: \"literal\"; value: unknown }\n | { type: \"jmespath\"; expression: string }\n | { type: \"template\"; template: string },\n): string {\n if (expr.type === \"literal\") return JSON.stringify(expr.value);\n if (expr.type === \"template\") return expr.template;\n return expr.expression;\n}\n\nconst DEFAULT_NODE_SIZE = { w: NODE_WIDTH, h: NODE_HEIGHT };\n\n/**\n * Estimate node height based on step type and content.\n * BaseNode structure: py-2.5 padding top/bottom, header ~24px, name ~18px,\n * description ~16px per line, content varies by type.\n * Handle areas add ~8px total.\n */\nfunction estimateStepHeight(step: WorkflowStep): number {\n const BASE = 70; // header + name + padding + handles\n const DESC_LINE = 16;\n const descLines = step.description\n ? Math.min(Math.ceil(step.description.length / 40), 3)\n : 0;\n\n switch (step.type) {\n case \"start\":\n return BASE + descLines * DESC_LINE;\n case \"end\":\n return BASE + descLines * DESC_LINE + (step.params?.output ? 30 : 0);\n case \"tool-call\": {\n const inputCount = Object.keys(step.params.toolInput).length;\n // tool name row + each input row\n return BASE + descLines * DESC_LINE + 28 + inputCount * 20;\n }\n case \"llm-prompt\":\n // prompt preview is line-clamped to 3 lines\n return BASE + descLines * DESC_LINE + 60;\n case \"extract-data\":\n return BASE + descLines * DESC_LINE + 50;\n case \"agent-loop\":\n // instructions preview (2 lines) + tools count\n return (\n BASE +\n descLines * DESC_LINE +\n 50 +\n (step.params.tools.length > 0 ? 20 : 0)\n );\n case \"sleep\":\n return BASE + descLines * DESC_LINE + 24;\n default:\n return NODE_HEIGHT;\n }\n}\n\nfunction collectChildSteps(\n step: WorkflowStep,\n stepMap: Map<string, WorkflowStep>,\n): Set<string> {\n const children = new Set<string>();\n const continuation = step.nextStepId;\n\n const seeds = getChildStepIds(step);\n if (seeds.length === 0) return children;\n\n const queue = [...seeds];\n while (queue.length > 0) {\n const id = queue.shift();\n if (id === undefined) continue;\n if (children.has(id) || id === continuation || id === step.id) continue;\n const s = stepMap.get(id);\n if (!s) continue;\n children.add(id);\n if (s.nextStepId) queue.push(s.nextStepId);\n for (const childId of getChildStepIds(s)) queue.push(childId);\n }\n return children;\n}\n\nfunction buildParentMap(\n workflow: WorkflowDefinition,\n stepMap: Map<string, WorkflowStep>,\n): Map<string, string> {\n const parentMap = new Map<string, string>();\n const allGroupChildren = new Map<string, Set<string>>();\n\n for (const step of workflow.steps) {\n if (isGroupStep(step)) {\n allGroupChildren.set(step.id, collectChildSteps(step, stepMap));\n }\n }\n\n for (const [groupId, children] of allGroupChildren) {\n for (const childId of children) {\n const currentParent = parentMap.get(childId);\n if (!currentParent) {\n parentMap.set(childId, groupId);\n } else {\n const currentParentChildren = allGroupChildren.get(currentParent);\n if (currentParentChildren?.has(groupId)) {\n parentMap.set(childId, groupId);\n }\n }\n }\n }\n\n return parentMap;\n}\n\nfunction getDirectChildren(\n groupId: string,\n parentMap: Map<string, string>,\n): Set<string> {\n const direct = new Set<string>();\n for (const [childId, pid] of parentMap) {\n if (pid === groupId) direct.add(childId);\n }\n return direct;\n}\n\nfunction groupProcessingOrder(\n groupIds: Set<string>,\n parentMap: Map<string, string>,\n): string[] {\n const order: string[] = [];\n const visited = new Set<string>();\n\n function visit(id: string) {\n if (visited.has(id)) return;\n visited.add(id);\n for (const [childId, pid] of parentMap) {\n if (pid === id && groupIds.has(childId)) {\n visit(childId);\n }\n }\n order.push(id);\n }\n\n for (const id of groupIds) {\n visit(id);\n }\n return order;\n}\n\nfunction groupHeaderId(groupId: string): string {\n return `__header__${groupId}`;\n}\n\nfunction getNodeDimensions(\n nodeId: string,\n groupIds: Set<string>,\n computedSizes: Map<string, { w: number; h: number }>,\n nodeDimensions?: Map<string, { width: number; height: number }>,\n stepMap?: Map<string, WorkflowStep>,\n): { w: number; h: number } {\n if (groupIds.has(nodeId)) {\n return computedSizes.get(nodeId) ?? DEFAULT_NODE_SIZE;\n }\n const measured = nodeDimensions?.get(nodeId);\n if (measured) {\n return { w: measured.width, h: measured.height };\n }\n const step = stepMap?.get(nodeId);\n if (step) {\n return { w: NODE_WIDTH, h: estimateStepHeight(step) };\n }\n return DEFAULT_NODE_SIZE;\n}\n\nexport function buildLayout(\n workflow: WorkflowDefinition | null,\n diagnostics: Diagnostic[] = [],\n executionState?: ExecutionState,\n nodeDimensions?: Map<string, { width: number; height: number }>,\n paused?: boolean,\n direction: LayoutDirection = \"vertical\",\n): { nodes: Node[]; edges: Edge[] } {\n if (!workflow || workflow.steps.length === 0) {\n return { nodes: [], edges: [] };\n }\n\n // --- Step 1: Build maps ---\n const stepSummaries = executionState\n ? deriveStepSummaries(executionState)\n : undefined;\n const diagnosticsByStep = new Map<string, Diagnostic[]>();\n for (const d of diagnostics) {\n if (d.location.stepId) {\n const existing = diagnosticsByStep.get(d.location.stepId) ?? [];\n existing.push(d);\n diagnosticsByStep.set(d.location.stepId, existing);\n }\n }\n\n const stepMap = new Map<string, WorkflowStep>();\n for (const step of workflow.steps) {\n stepMap.set(step.id, step);\n }\n\n const parentMap = buildParentMap(workflow, stepMap);\n\n // --- Step 2: Identify groups ---\n const groupIds = new Set<string>();\n for (const step of workflow.steps) {\n if (isGroupStep(step)) {\n const hasChildren = [...parentMap.values()].some(\n (pid) => pid === step.id,\n );\n if (hasChildren) groupIds.add(step.id);\n }\n }\n\n // --- Step 3: Compute group sizes bottom-up ---\n const processOrder = groupProcessingOrder(groupIds, parentMap);\n const computedSizes = new Map<string, { w: number; h: number }>();\n const groupChildPositions = new Map<\n string,\n Map<string, { x: number; y: number }>\n >();\n\n for (const groupId of processOrder) {\n const groupStep = getOrThrow(stepMap, groupId);\n const directChildren = getDirectChildren(groupId, parentMap);\n if (directChildren.size === 0) {\n groupIds.delete(groupId);\n continue;\n }\n\n const subG = new dagre.graphlib.Graph();\n subG.setGraph(dagreGraphOptions(direction));\n subG.setDefaultEdgeLabel(() => ({}));\n\n // Add a synthetic header node for this group\n const headerId = groupHeaderId(groupId);\n subG.setNode(headerId, {\n width: GROUP_HEADER_WIDTH,\n height: GROUP_HEADER_HEIGHT,\n });\n\n // Add child nodes\n for (const childId of directChildren) {\n const { w, h } = getNodeDimensions(\n childId,\n groupIds,\n computedSizes,\n nodeDimensions,\n stepMap,\n );\n subG.setNode(childId, { width: w, height: h });\n }\n\n // Edges from header to entry points\n for (const childId of getChildStepIds(groupStep)) {\n if (directChildren.has(childId)) {\n subG.setEdge(headerId, childId);\n }\n }\n\n // Edges between direct children\n for (const childId of directChildren) {\n const step = getOrThrow(stepMap, childId);\n if (step.nextStepId && directChildren.has(step.nextStepId)) {\n subG.setEdge(childId, step.nextStepId);\n }\n for (const ref of getChildStepIds(step)) {\n if (directChildren.has(ref)) {\n subG.setEdge(childId, ref);\n }\n }\n }\n\n dagre.layout(subG);\n\n let minX = Number.POSITIVE_INFINITY;\n let minY = Number.POSITIVE_INFINITY;\n let maxX = Number.NEGATIVE_INFINITY;\n let maxY = Number.NEGATIVE_INFINITY;\n\n const allSubNodes = new Set(directChildren);\n allSubNodes.add(headerId);\n\n const rawPositions = new Map<string, { x: number; y: number }>();\n for (const nodeId of allSubNodes) {\n const pos = subG.node(nodeId);\n let w: number;\n let h: number;\n if (nodeId === headerId) {\n w = GROUP_HEADER_WIDTH;\n h = GROUP_HEADER_HEIGHT;\n } else {\n const dims = getNodeDimensions(\n nodeId,\n groupIds,\n computedSizes,\n nodeDimensions,\n stepMap,\n );\n w = dims.w;\n h = dims.h;\n }\n const x = pos.x - w / 2;\n const y = pos.y - h / 2;\n rawPositions.set(nodeId, { x, y });\n minX = Math.min(minX, x);\n minY = Math.min(minY, y);\n maxX = Math.max(maxX, x + w);\n maxY = Math.max(maxY, y + h);\n }\n\n const positions = new Map<string, { x: number; y: number }>();\n for (const [nodeId, pos] of rawPositions) {\n positions.set(nodeId, {\n x: pos.x - minX + GROUP_PADDING,\n y: pos.y - minY + GROUP_HEADER,\n });\n }\n groupChildPositions.set(groupId, positions);\n\n const contentWidth = maxX - minX;\n const contentHeight = maxY - minY;\n computedSizes.set(groupId, {\n w: contentWidth + GROUP_PADDING * 2,\n h: contentHeight + GROUP_HEADER + GROUP_PADDING * 2,\n });\n }\n\n // Remove groups whose sizes could not be computed (e.g. circular references)\n for (const groupId of [...groupIds]) {\n if (!computedSizes.has(groupId)) {\n groupIds.delete(groupId);\n }\n }\n\n // --- Step 4: Top-level dagre layout ---\n const topG = new dagre.graphlib.Graph();\n topG.setGraph(dagreGraphOptions(direction));\n topG.setDefaultEdgeLabel(() => ({}));\n\n // Start node — skip pseudo-node when initialStepId is a \"start\" step\n const initialStep = stepMap.get(workflow.initialStepId);\n const hasStartStep = initialStep?.type === \"start\";\n\n if (!hasStartStep) {\n topG.setNode(START_NODE_ID, {\n width: START_NODE_SIZE,\n height: START_NODE_SIZE,\n });\n }\n\n const topLevelStepIds: string[] = [];\n for (const step of workflow.steps) {\n if (!parentMap.has(step.id)) {\n topLevelStepIds.push(step.id);\n const { w, h } = getNodeDimensions(\n step.id,\n groupIds,\n computedSizes,\n nodeDimensions,\n stepMap,\n );\n topG.setNode(step.id, { width: w, height: h });\n }\n }\n\n // Start → initial step\n if (!hasStartStep) {\n topG.setEdge(START_NODE_ID, workflow.initialStepId);\n }\n\n const topLevelSet = new Set(topLevelStepIds);\n for (const stepId of topLevelStepIds) {\n const step = getOrThrow(stepMap, stepId);\n if (step.nextStepId && topLevelSet.has(step.nextStepId)) {\n topG.setEdge(stepId, step.nextStepId);\n }\n for (const ref of getChildStepIds(step)) {\n if (topLevelSet.has(ref)) {\n topG.setEdge(stepId, ref);\n }\n }\n }\n\n dagre.layout(topG);\n\n const topLevelPositions = new Map<string, { x: number; y: number }>();\n\n if (!hasStartStep) {\n const startPos = topG.node(START_NODE_ID);\n topLevelPositions.set(START_NODE_ID, {\n x: startPos.x - START_NODE_SIZE / 2,\n y: startPos.y - START_NODE_SIZE / 2,\n });\n }\n\n for (const stepId of topLevelStepIds) {\n const pos = topG.node(stepId);\n const { w, h } = getNodeDimensions(\n stepId,\n groupIds,\n computedSizes,\n nodeDimensions,\n stepMap,\n );\n topLevelPositions.set(stepId, {\n x: pos.x - w / 2,\n y: pos.y - h / 2,\n });\n }\n\n // In horizontal mode, top-align all top-level nodes so they share the\n // same y coordinate regardless of height differences.\n if (direction === \"horizontal\") {\n let minY = Number.POSITIVE_INFINITY;\n for (const pos of topLevelPositions.values()) {\n if (pos.y < minY) minY = pos.y;\n }\n for (const [id, pos] of topLevelPositions) {\n topLevelPositions.set(id, { x: pos.x, y: minY });\n }\n }\n\n // --- Step 5: Build React Flow nodes ---\n const nodes: Node[] = [];\n\n // Start pseudo-node (only when no explicit start step exists)\n if (!hasStartStep) {\n const startNodePos = getOrThrow(topLevelPositions, START_NODE_ID);\n nodes.push({\n id: START_NODE_ID,\n type: \"start\",\n position: startNodePos,\n data: { layoutDirection: direction },\n selectable: false,\n measured: { width: START_NODE_SIZE, height: START_NODE_SIZE },\n });\n }\n\n function addNodesForContext(\n nodeIds: Iterable<string>,\n getPosition: (id: string) => { x: number; y: number },\n parentId?: string,\n ) {\n const groups: string[] = [];\n const headers: string[] = [];\n const nonGroups: string[] = [];\n for (const id of nodeIds) {\n if (groupIds.has(id)) groups.push(id);\n else if (id.startsWith(\"__header__\")) headers.push(id);\n else nonGroups.push(id);\n }\n\n for (const id of groups) {\n const step = getOrThrow(stepMap, id);\n const pos = getPosition(id);\n const size = getOrThrow(computedSizes, id);\n\n nodes.push({\n id,\n type: stepNodeType(step),\n position: pos,\n data: {\n step,\n diagnostics: diagnosticsByStep.get(id) ?? [],\n isGroup: true,\n groupWidth: size.w,\n groupHeight: size.h,\n ...(step.nextStepId ? { hasSourceEdge: true as const } : {}),\n executionSummary: stepSummaries?.get(id),\n paused,\n layoutDirection: direction,\n },\n style: { width: size.w, height: size.h },\n ...(parentId ? { parentId, extent: \"parent\" as const } : {}),\n });\n\n const childPositions = getOrThrow(groupChildPositions, id);\n addNodesForContext(\n childPositions.keys(),\n (childId) => getOrThrow(childPositions, childId),\n id,\n );\n }\n\n for (const id of headers) {\n const pos = getPosition(id);\n const gid = id.replace(\"__header__\", \"\");\n const step = getOrThrow(stepMap, gid);\n\n const summary = stepSummaries?.get(gid);\n const resolvedInputs = summary?.latestResolvedInputs as\n | Record<string, unknown>\n | undefined;\n\n if (step.type === \"switch-case\") {\n nodes.push({\n id,\n type: \"groupHeader\",\n position: pos,\n data: {\n variant: \"switch\",\n description: step.description,\n expression: renderExpression(step.params.switchOn),\n resolvedExpression: resolvedInputs?.switchOn,\n step,\n diagnostics: diagnosticsByStep.get(gid) ?? [],\n layoutDirection: direction,\n },\n ...(parentId ? { parentId, extent: \"parent\" as const } : {}),\n });\n } else if (step.type === \"for-each\") {\n nodes.push({\n id,\n type: \"groupHeader\",\n position: pos,\n data: {\n variant: \"loop\",\n description: step.description,\n target: renderExpression(step.params.target),\n resolvedTarget: resolvedInputs?.target,\n itemName: step.params.itemName,\n step,\n diagnostics: diagnosticsByStep.get(gid) ?? [],\n layoutDirection: direction,\n },\n ...(parentId ? { parentId, extent: \"parent\" as const } : {}),\n });\n } else if (step.type === \"wait-for-condition\") {\n nodes.push({\n id,\n type: \"groupHeader\",\n position: pos,\n data: {\n variant: \"condition\",\n description: step.description,\n condition: renderExpression(step.params.condition),\n layoutDirection: direction,\n },\n ...(parentId ? { parentId, extent: \"parent\" as const } : {}),\n });\n }\n }\n\n for (const id of nonGroups) {\n const step = getOrThrow(stepMap, id);\n const pos = getPosition(id);\n\n const nodeData: Record<string, unknown> = {\n step,\n diagnostics: diagnosticsByStep.get(id) ?? [],\n ...(step.nextStepId ? { hasSourceEdge: true as const } : {}),\n executionSummary: stepSummaries?.get(id),\n layoutDirection: direction,\n };\n if (step.type === \"start\" && workflow?.inputSchema) {\n nodeData.inputSchema = workflow.inputSchema;\n }\n if (step.type === \"end\" && workflow?.outputSchema) {\n nodeData.outputSchema = workflow.outputSchema;\n }\n\n const { w: nw, h: nh } = getNodeDimensions(\n id,\n groupIds,\n computedSizes,\n nodeDimensions,\n stepMap,\n );\n nodes.push({\n id,\n type: stepNodeType(step),\n position: pos,\n data: nodeData,\n measured: { width: nw, height: nh },\n ...(parentId ? { parentId, extent: \"parent\" as const } : {}),\n });\n }\n }\n\n addNodesForContext(topLevelStepIds, (id) =>\n getOrThrow(topLevelPositions, id),\n );\n\n // --- Step 6: Build edges ---\n const edges: Edge[] = [];\n const hasExecState = !!stepSummaries;\n\n function isStepExecuted(stepId: string): boolean {\n const s = stepSummaries?.get(stepId);\n return s?.status === \"completed\" || s?.status === \"running\";\n }\n\n // Start → initial step (only when no explicit start step exists)\n if (!hasStartStep) {\n edges.push({\n id: `${START_NODE_ID}->${workflow.initialStepId}`,\n source: START_NODE_ID,\n target: workflow.initialStepId,\n type: \"workflow\",\n data: {\n edgeKind: \"sequential\",\n executed: hasExecState && isStepExecuted(workflow.initialStepId),\n hasExecutionState: hasExecState,\n },\n });\n }\n\n for (const step of workflow.steps) {\n // Group header → child edges (only for groups with rendered children)\n if (groupIds.has(step.id)) {\n const headerId = groupHeaderId(step.id);\n if (step.type === \"switch-case\") {\n // Switch cases get labeled branch edges\n for (const c of step.params.cases) {\n const label =\n c.value.type === \"default\" ? \"default\" : renderExpression(c.value);\n edges.push({\n id: `${headerId}->${c.branchBodyStepId}`,\n source: headerId,\n target: c.branchBodyStepId,\n label,\n type: \"workflow\",\n data: {\n edgeKind: \"branch\",\n executed: hasExecState && isStepExecuted(c.branchBodyStepId),\n hasExecutionState: hasExecState,\n },\n });\n }\n } else {\n // For-each and wait-for-condition get simple sequential edges\n for (const childId of getChildStepIds(step)) {\n edges.push({\n id: `${headerId}->${childId}`,\n source: headerId,\n target: childId,\n type: \"workflow\",\n data: {\n edgeKind: \"sequential\",\n executed: hasExecState && isStepExecuted(childId),\n hasExecutionState: hasExecState,\n },\n });\n }\n }\n }\n\n // nextStepId → sequential edge (common to all step types)\n if (step.nextStepId) {\n edges.push({\n id: `${step.id}->${step.nextStepId}`,\n source: step.id,\n target: step.nextStepId,\n type: \"workflow\",\n data: {\n edgeKind: \"sequential\",\n executed: hasExecState && isStepExecuted(step.nextStepId),\n hasExecutionState: hasExecState,\n },\n });\n }\n }\n\n return { nodes, edges };\n}\n\nconst EMPTY_GROUP_WIDTH = GROUP_HEADER_WIDTH + GROUP_PADDING * 2;\nconst EMPTY_GROUP_HEIGHT = GROUP_HEADER_HEIGHT + GROUP_HEADER + GROUP_PADDING;\n\nfunction buildGroupHeaderData(\n step: WorkflowStep,\n diagnostics: Diagnostic[],\n): Record<string, unknown> {\n const stepDiags = diagnostics.filter((d) => d.location.stepId === step.id);\n\n if (step.type === \"switch-case\") {\n return {\n variant: \"switch\",\n description: step.description,\n expression: renderExpression(step.params.switchOn),\n step,\n diagnostics: stepDiags,\n };\n }\n if (step.type === \"for-each\") {\n return {\n variant: \"loop\",\n description: step.description,\n target: renderExpression(step.params.target),\n itemName: step.params.itemName,\n step,\n diagnostics: stepDiags,\n };\n }\n if (step.type === \"wait-for-condition\") {\n return {\n variant: \"condition\",\n description: step.description,\n condition: renderExpression(step.params.condition),\n };\n }\n return {};\n}\n\n/**\n * Build layout for edit mode, applying user position overrides on top of dagre layout.\n * Nodes with overrides get their dagre-computed position replaced.\n */\nexport function buildEditableLayout(\n workflow: WorkflowDefinition | null,\n diagnostics: Diagnostic[] = [],\n executionState?: ExecutionState,\n positionOverrides?: Map<string, { x: number; y: number }>,\n dimensionOverrides?: Map<string, { width: number; height: number }>,\n nodeDimensions?: Map<string, { width: number; height: number }>,\n direction: LayoutDirection = \"vertical\",\n): { nodes: Node[]; edges: Edge[] } {\n const result = buildLayout(\n workflow,\n diagnostics,\n executionState,\n nodeDimensions,\n undefined,\n direction,\n );\n\n // Filter out the pseudo __start__ node in edit mode — users create explicit start/end steps instead.\n // Keep __header__* nodes since those are group headers for for-each/switch-case/wait-for-condition.\n let nodes = result.nodes.filter((n) => n.id !== \"__start__\");\n const edges = result.edges.filter(\n (e) => e.source !== \"__start__\" && e.target !== \"__start__\",\n );\n\n // In edit mode, group-type steps without children should still render as\n // group containers with a header node so users can connect children to them.\n const emptyGroupIds = new Set<string>();\n if (workflow) {\n const existingGroupIds = new Set(\n nodes\n .filter((n) => (n.data as Record<string, unknown>)?.isGroup === true)\n .map((n) => n.id),\n );\n for (const step of workflow.steps) {\n if (!GROUP_STEP_TYPES.has(step.type)) continue;\n if (existingGroupIds.has(step.id)) continue;\n if (!nodes.some((n) => n.id === step.id)) continue;\n emptyGroupIds.add(step.id);\n }\n }\n\n // Single pass: apply position/dimension overrides, remove extent constraints,\n // and promote empty group-type steps to group containers.\n const stepMap = workflow\n ? new Map(workflow.steps.map((s) => [s.id, s]))\n : new Map<string, WorkflowStep>();\n\n nodes = nodes.map((node) => {\n let n = node;\n\n // Remove extent constraint so children can be dragged freely\n if (n.parentId && n.extent) {\n const { extent, ...rest } = n;\n n = rest;\n }\n\n // Apply position overrides (top-level nodes only)\n if (positionOverrides?.size && !n.parentId) {\n const override = positionOverrides.get(n.id);\n if (override) n = { ...n, position: override };\n }\n\n // Apply dimension overrides\n if (dimensionOverrides?.size) {\n const dims = dimensionOverrides.get(n.id);\n if (dims) {\n const data = n.data as Record<string, unknown>;\n n = {\n ...n,\n style: { ...n.style, width: dims.width, height: dims.height },\n data: { ...data, groupWidth: dims.width, groupHeight: dims.height },\n };\n }\n }\n\n // Promote empty group-type steps to group containers\n if (emptyGroupIds.has(n.id)) {\n const data = n.data as Record<string, unknown>;\n n = {\n ...n,\n data: {\n ...data,\n isGroup: true,\n groupWidth: EMPTY_GROUP_WIDTH,\n groupHeight: EMPTY_GROUP_HEIGHT,\n },\n style: { width: EMPTY_GROUP_WIDTH, height: EMPTY_GROUP_HEIGHT },\n };\n }\n\n return n;\n });\n\n // Inject header nodes for empty groups\n for (const stepId of emptyGroupIds) {\n const step = stepMap.get(stepId);\n if (!step) continue;\n nodes.push({\n id: groupHeaderId(stepId),\n type: \"groupHeader\",\n position: {\n x: (EMPTY_GROUP_WIDTH - GROUP_HEADER_WIDTH) / 2,\n y: GROUP_HEADER,\n },\n data: buildGroupHeaderData(step, diagnostics),\n parentId: stepId,\n });\n }\n\n return { nodes, edges };\n}\n",
|
|
24
24
|
"/**\n * Utilities for working with group-type step child references.\n *\n * Three step types contain references to child steps:\n * - for-each → params.loopBodyStepId\n * - switch-case → params.cases[].branchBodyStepId\n * - wait-for-condition → params.conditionStepId\n *\n * Every mutation in the editing workflow (remove, rename, connect, disconnect)\n * needs to update these references. These helpers centralise that logic.\n */\nimport type { WorkflowStep } from \"@remoraflow/core\";\n\n/** Step types that act as group containers with child step references. */\nexport const GROUP_STEP_TYPES = new Set<WorkflowStep[\"type\"]>([\n \"for-each\",\n \"switch-case\",\n \"wait-for-condition\",\n]);\n\n/** Returns true if the step type can contain child step references. */\nexport function isGroupStep(step: WorkflowStep): boolean {\n return GROUP_STEP_TYPES.has(step.type);\n}\n\n/**\n * Get all child step IDs referenced by a group step.\n * Returns an empty array for non-group steps.\n */\nexport function getChildStepIds(step: WorkflowStep): string[] {\n if (step.type === \"for-each\") {\n return step.params.loopBodyStepId ? [step.params.loopBodyStepId] : [];\n }\n if (step.type === \"switch-case\") {\n return step.params.cases\n .map((c) => c.branchBodyStepId)\n .filter((id) => id !== \"\");\n }\n if (step.type === \"wait-for-condition\") {\n return step.params.conditionStepId ? [step.params.conditionStepId] : [];\n }\n return [];\n}\n\n/**\n * Clear all child references that point to `targetId`.\n * Returns a new step if any reference was cleared, otherwise returns the same step.\n */\nexport function clearChildRef(\n step: WorkflowStep,\n targetId: string,\n): WorkflowStep {\n if (step.type === \"for-each\" && step.params.loopBodyStepId === targetId) {\n return {\n ...step,\n params: { ...step.params, loopBodyStepId: \"\" },\n } as WorkflowStep;\n }\n if (step.type === \"switch-case\") {\n const hasMatch = step.params.cases.some(\n (c) => c.branchBodyStepId === targetId,\n );\n if (hasMatch) {\n const cases = step.params.cases.map((c) =>\n c.branchBodyStepId === targetId ? { ...c, branchBodyStepId: \"\" } : c,\n );\n return {\n ...step,\n params: { ...step.params, cases },\n } as WorkflowStep;\n }\n }\n if (\n step.type === \"wait-for-condition\" &&\n step.params.conditionStepId === targetId\n ) {\n return {\n ...step,\n params: { ...step.params, conditionStepId: \"\" },\n } as WorkflowStep;\n }\n return step;\n}\n\n/**\n * Clear ALL child references (used when disconnecting a group header).\n * Returns a new step with all child refs set to empty.\n */\nexport function clearAllChildRefs(step: WorkflowStep): WorkflowStep {\n if (step.type === \"for-each\") {\n return {\n ...step,\n params: { ...step.params, loopBodyStepId: \"\" },\n } as WorkflowStep;\n }\n if (step.type === \"switch-case\") {\n const cases = step.params.cases.map((c) => ({\n ...c,\n branchBodyStepId: \"\",\n }));\n return {\n ...step,\n params: { ...step.params, cases },\n } as WorkflowStep;\n }\n if (step.type === \"wait-for-condition\") {\n return {\n ...step,\n params: { ...step.params, conditionStepId: \"\" },\n } as WorkflowStep;\n }\n return step;\n}\n\n/**\n * Replace references from `oldId` to `newId`.\n * Returns a new step if any reference was replaced, otherwise returns the same step.\n */\nexport function replaceChildRef(\n step: WorkflowStep,\n oldId: string,\n newId: string,\n): WorkflowStep {\n if (step.type === \"for-each\" && step.params.loopBodyStepId === oldId) {\n return {\n ...step,\n params: { ...step.params, loopBodyStepId: newId },\n } as WorkflowStep;\n }\n if (step.type === \"switch-case\") {\n const hasMatch = step.params.cases.some(\n (c) => c.branchBodyStepId === oldId,\n );\n if (hasMatch) {\n const cases = step.params.cases.map((c) =>\n c.branchBodyStepId === oldId ? { ...c, branchBodyStepId: newId } : c,\n );\n return {\n ...step,\n params: { ...step.params, cases },\n } as WorkflowStep;\n }\n }\n if (\n step.type === \"wait-for-condition\" &&\n step.params.conditionStepId === oldId\n ) {\n return {\n ...step,\n params: { ...step.params, conditionStepId: newId },\n } as WorkflowStep;\n }\n return step;\n}\n\n/**\n * Set a child reference on a group step, connecting it to `targetId`.\n * For switch-case, assigns to the first empty case slot.\n * Returns a new step if modified, otherwise returns the same step.\n */\nexport function setChildRef(\n step: WorkflowStep,\n targetId: string,\n): WorkflowStep {\n if (step.type === \"for-each\") {\n return {\n ...step,\n params: { ...step.params, loopBodyStepId: targetId },\n } as WorkflowStep;\n }\n if (step.type === \"switch-case\") {\n let assigned = false;\n const cases = step.params.cases.map((c) => {\n if (!assigned && c.branchBodyStepId === \"\") {\n assigned = true;\n return { ...c, branchBodyStepId: targetId };\n }\n return c;\n });\n return {\n ...step,\n params: { ...step.params, cases },\n } as WorkflowStep;\n }\n if (step.type === \"wait-for-condition\") {\n return {\n ...step,\n params: { ...step.params, conditionStepId: targetId },\n } as WorkflowStep;\n }\n return step;\n}\n\n/**\n * Compute a structural key fragment for a step's group child references.\n * Used for the structural-change fingerprint that determines whether layout\n * needs a full rebuild.\n */\nexport function groupStructuralKey(step: WorkflowStep): string {\n if (step.type === \"for-each\") {\n return `:loop=${step.params.loopBodyStepId}`;\n }\n if (step.type === \"switch-case\") {\n return `:cases=${step.params.cases.map((c) => c.branchBodyStepId).join(\",\")}`;\n }\n if (step.type === \"wait-for-condition\") {\n return `:cond=${step.params.conditionStepId}`;\n }\n return \"\";\n}\n",
|
|
25
25
|
"import type { ExecutionState, WorkflowDefinition } from \"@remoraflow/core\";\nimport { hashWorkflow } from \"@remoraflow/core\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\n// ─── Types ───────────────────────────────────────────────────────\n\nexport interface UseWorkflowExecutionOptions {\n /** Function that starts execution and returns an async iterable of state snapshots. */\n execute: (params: {\n workflow: WorkflowDefinition;\n inputs: Record<string, unknown>;\n initialState?: ExecutionState;\n }) => AsyncIterable<ExecutionState> | Promise<AsyncIterable<ExecutionState>>;\n\n /** Optional persistence layer for pause/resume across page reloads. */\n persist?: {\n save: (hash: string, state: ExecutionState) => void;\n load: (hash: string) => ExecutionState | null;\n clear: (hash: string) => void;\n };\n}\n\nexport interface WorkflowExecutionControls {\n /** The currently displayed execution state (respects replay position). */\n executionState: ExecutionState | null;\n /** Full history of all received state snapshots. */\n stateHistory: ExecutionState[];\n /** Whether a workflow is currently executing. */\n isRunning: boolean;\n /** Whether execution is paused with a resumable state. */\n isPaused: boolean;\n\n /** Start a new execution. */\n run: (inputs?: Record<string, unknown>) => void;\n /** Pause the current execution (can be resumed later). */\n pause: () => void;\n /** Resume a paused execution. */\n resume: () => void;\n /** Reset all execution state. */\n reset: () => void;\n\n /** Current replay slider position, or `null` if viewing live. */\n replayIndex: number | null;\n /** Seek to a specific state in the history. */\n seekTo: (index: number) => void;\n /** Jump to the latest state (exit replay mode). */\n goLive: () => void;\n}\n\n// ─── Hook ────────────────────────────────────────────────────────\n\nexport function useWorkflowExecution(\n workflow: WorkflowDefinition | null,\n options: UseWorkflowExecutionOptions,\n): WorkflowExecutionControls {\n const [executionState, setExecutionState] = useState<ExecutionState | null>(\n null,\n );\n const [stateHistory, setStateHistory] = useState<ExecutionState[]>([]);\n const [isRunning, setIsRunning] = useState(false);\n const [replayIndex, setReplayIndex] = useState<number | null>(null);\n const [pausedState, setPausedState] = useState<ExecutionState | null>(() => {\n if (!workflow) return null;\n return options.persist?.load(hashWorkflow(workflow)) ?? null;\n });\n\n const abortRef = useRef<AbortController | null>(null);\n const lastInputsRef = useRef<Record<string, unknown>>({});\n const stateHistoryRef = useRef<ExecutionState[]>([]);\n const replayIndexRef = useRef<number | null>(null);\n\n // Keep refs in sync with state.\n stateHistoryRef.current = stateHistory;\n replayIndexRef.current = replayIndex;\n\n // Clear paused state when workflow changes and hash no longer matches.\n useEffect(() => {\n if (!workflow || !pausedState) return;\n const hash = hashWorkflow(workflow);\n if (pausedState.workflowHash !== hash) {\n setPausedState(null);\n options.persist?.clear(hash);\n }\n }, [workflow, pausedState, options.persist]);\n\n const startStreaming = useCallback(\n async (inputs: Record<string, unknown>, initialState?: ExecutionState) => {\n if (!workflow) return;\n\n const ac = new AbortController();\n abortRef.current = ac;\n const wfHash = hashWorkflow(workflow);\n\n try {\n const iterableOrPromise = options.execute({\n workflow,\n inputs,\n initialState,\n });\n const iterable =\n iterableOrPromise instanceof Promise\n ? await iterableOrPromise\n : iterableOrPromise;\n\n for await (const state of iterable) {\n if (ac.signal.aborted) break;\n setStateHistory((prev) => {\n const next = [...prev, state];\n stateHistoryRef.current = next;\n return next;\n });\n // Only update the visible state if not in replay mode.\n if (replayIndexRef.current === null) {\n setExecutionState(state);\n }\n }\n } catch (err) {\n if (!ac.signal.aborted) {\n console.error(\"Workflow execution error:\", err);\n }\n } finally {\n if (!ac.signal.aborted) {\n setIsRunning(false);\n options.persist?.clear(wfHash);\n }\n abortRef.current = null;\n }\n },\n [workflow, options],\n );\n\n const run = useCallback(\n (inputs?: Record<string, unknown>) => {\n if (!workflow || isRunning) return;\n const resolvedInputs = inputs ?? {};\n lastInputsRef.current = resolvedInputs;\n\n // Clear any prior state.\n setPausedState(null);\n if (workflow) options.persist?.clear(hashWorkflow(workflow));\n setExecutionState(null);\n setStateHistory([]);\n stateHistoryRef.current = [];\n setReplayIndex(null);\n setIsRunning(true);\n\n startStreaming(resolvedInputs);\n },\n [workflow, isRunning, startStreaming, options],\n );\n\n const pause = useCallback(() => {\n if (!workflow || !isRunning) return;\n const wfHash = hashWorkflow(workflow);\n const latest =\n stateHistoryRef.current[stateHistoryRef.current.length - 1] ?? null;\n if (latest) {\n options.persist?.save(wfHash, latest);\n setPausedState(latest);\n }\n abortRef.current?.abort();\n setIsRunning(false);\n }, [workflow, isRunning, options]);\n\n const resume = useCallback(() => {\n if (!workflow || !pausedState || isRunning) return;\n const wfHash = hashWorkflow(workflow);\n if (pausedState.workflowHash !== wfHash) {\n setPausedState(null);\n options.persist?.clear(wfHash);\n return;\n }\n setPausedState(null);\n setReplayIndex(null);\n setIsRunning(true);\n startStreaming(lastInputsRef.current, pausedState);\n }, [workflow, pausedState, isRunning, startStreaming, options]);\n\n const reset = useCallback(() => {\n abortRef.current?.abort();\n setExecutionState(null);\n setStateHistory([]);\n stateHistoryRef.current = [];\n setReplayIndex(null);\n setIsRunning(false);\n setPausedState(null);\n if (workflow) options.persist?.clear(hashWorkflow(workflow));\n }, [workflow, options]);\n\n const seekTo = useCallback((index: number) => {\n const isAtEnd = index === stateHistoryRef.current.length - 1;\n setReplayIndex(isAtEnd ? null : index);\n const target = stateHistoryRef.current[index];\n if (target) setExecutionState(target);\n }, []);\n\n const goLive = useCallback(() => {\n setReplayIndex(null);\n const latest =\n stateHistoryRef.current[stateHistoryRef.current.length - 1] ?? null;\n setExecutionState(latest);\n }, []);\n\n return {\n executionState,\n stateHistory,\n isRunning,\n isPaused: !!pausedState,\n run,\n pause,\n resume,\n reset,\n replayIndex,\n seekTo,\n goLive,\n };\n}\n",
|
|
26
|
+
"import type { ToolDefinitionMap } from \"@remoraflow/core\";\nimport { createContext, useContext } from \"react\";\n\nexport const ToolSchemasContext = createContext<ToolDefinitionMap | undefined>(\n undefined,\n);\n\nexport function useToolSchemas(): ToolDefinitionMap | undefined {\n return useContext(ToolSchemasContext);\n}\n\nexport function useToolDisplayName(toolName: string): string {\n const schemas = useToolSchemas();\n return schemas?.[toolName]?.displayName ?? toolName;\n}\n",
|
|
26
27
|
"import {\n Bot,\n FileOutput,\n GitBranch,\n Hand,\n Moon,\n Play,\n Repeat,\n Sparkles,\n Timer,\n Wrench,\n} from \"lucide-react\";\nimport type React from \"react\";\nimport type { ComponentType } from \"react\";\n\nconst STEP_TYPE_META: Record<\n string,\n {\n label: string;\n color: string;\n icon: ComponentType<{ className?: string }>;\n }\n> = {\n start: {\n label: \"Start\",\n color: \"text-green-600 dark:text-green-400\",\n icon: Play,\n },\n end: {\n label: \"End\",\n color: \"text-muted-foreground\",\n icon: Hand,\n },\n \"tool-call\": {\n label: \"Tool Call\",\n color: \"text-blue-600 dark:text-blue-400\",\n icon: Wrench,\n },\n \"llm-prompt\": {\n label: \"LLM Prompt\",\n color: \"text-violet-600 dark:text-violet-400\",\n icon: Sparkles,\n },\n \"extract-data\": {\n label: \"Extract Data\",\n color: \"text-purple-600 dark:text-purple-400\",\n icon: FileOutput,\n },\n \"switch-case\": {\n label: \"Switch Case\",\n color: \"text-amber-600 dark:text-amber-400\",\n icon: GitBranch,\n },\n \"for-each\": {\n label: \"For Each\",\n color: \"text-emerald-600 dark:text-emerald-400\",\n icon: Repeat,\n },\n sleep: {\n label: \"Sleep\",\n color: \"text-yellow-600 dark:text-yellow-400\",\n icon: Moon,\n },\n \"wait-for-condition\": {\n label: \"Wait\",\n color: \"text-orange-600 dark:text-orange-400\",\n icon: Timer,\n },\n \"agent-loop\": {\n label: \"Agent Loop\",\n color: \"text-teal-600 dark:text-teal-400\",\n icon: Bot,\n },\n};\n\nexport function TypeBadge({ type }: { type: string }) {\n const meta = STEP_TYPE_META[type];\n if (!meta) {\n return (\n <span className=\"text-[10px] font-semibold uppercase tracking-wide text-muted-foreground\">\n {type}\n </span>\n );\n }\n const Icon = meta.icon;\n return (\n <span className={`inline-flex items-center gap-1.5 shrink-0 ${meta.color}`}>\n <Icon className=\"w-3.5 h-3.5\" />\n <span className=\"text-[10px] font-semibold uppercase tracking-wide\">\n {meta.label}\n </span>\n </span>\n );\n}\n\nexport function SectionHeader({ children }: { children: React.ReactNode }) {\n return (\n <div className=\"text-xs font-semibold text-foreground\">{children}</div>\n );\n}\n\nexport function Label({ children }: { children: React.ReactNode }) {\n return (\n <div className=\"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground mb-1.5\">\n {children}\n </div>\n );\n}\n\nexport function Code({ children }: { children: React.ReactNode }) {\n return (\n <pre className=\"text-xs rounded-md p-2.5 whitespace-pre-wrap font-mono overflow-auto max-h-[200px] text-foreground bg-muted/60 border border-border/50\">\n {children}\n </pre>\n );\n}\n",
|
|
27
|
-
"import type {\n Diagnostic,\n ExecutionPathSegment,\n StepExecutionRecord,\n TraceEntry,\n WorkflowStep,\n} from \"@remoraflow/core\";\nimport type React from \"react\";\nimport { JsonViewer } from \"../editors/json-viewer\";\nimport type { StepExecutionSummary } from \"../execution-state\";\nimport { Label, SectionHeader, TypeBadge } from \"./shared\";\n\nfunction jsonString(value: unknown): string {\n return typeof value === \"string\" ? value : JSON.stringify(value, null, 2);\n}\n\nexport interface StepDetailPanelProps {\n step: WorkflowStep;\n diagnostics: Diagnostic[];\n executionSummary?: StepExecutionSummary;\n executionRecords?: StepExecutionRecord[];\n onClose: () => void;\n}\n\nfunction renderExpression(\n expr:\n | { type: \"literal\"; value: unknown }\n | { type: \"jmespath\"; expression: string }\n | { type: \"template\"; template: string },\n): string {\n if (expr.type === \"literal\") return JSON.stringify(expr.value);\n if (expr.type === \"template\") return expr.template;\n return expr.expression;\n}\n\nfunction StatusBadge({ summary }: { summary: StepExecutionSummary }) {\n const colors: Record<string, string> = {\n pending: \"bg-muted text-muted-foreground border border-border\",\n running: \"bg-blue-500/10 text-blue-600 border border-blue-500/20\",\n completed: \"bg-green-500/10 text-green-600 border border-green-500/20\",\n failed: \"bg-destructive/10 text-destructive border border-destructive/20\",\n skipped: \"bg-muted text-muted-foreground border border-border\",\n };\n return (\n <span\n className={`text-[11px] font-semibold px-2.5 py-0.5 rounded-full ${colors[summary.status]}`}\n >\n {summary.status}\n </span>\n );\n}\n\nfunction ResolvedCode({\n value,\n expression,\n}: {\n value: unknown;\n expression?: string;\n}) {\n const display = jsonString(value);\n if (typeof value === \"string\") {\n return (\n <pre\n className=\"text-xs text-emerald-600 bg-emerald-500/10 rounded-md p-2.5 whitespace-pre-wrap font-mono overflow-auto max-h-[200px] cursor-default border border-emerald-500/20\"\n title={expression}\n >\n {display}\n </pre>\n );\n }\n return <JsonViewer value={display} />;\n}\n\nfunction StepParams({\n step,\n resolvedInputs,\n}: {\n step: WorkflowStep;\n resolvedInputs?: unknown;\n}) {\n const resolved = resolvedInputs as Record<string, unknown> | undefined;\n\n switch (step.type) {\n case \"tool-call\":\n return (\n <div className=\"space-y-3\">\n <div>\n <Label>Tool</Label>\n <div className=\"text-xs font-mono font-medium text-foreground bg-muted/40 rounded px-2 py-1 inline-block\">\n {step.params.toolName}\n </div>\n </div>\n {Object.keys(step.params.toolInput).length > 0 && (\n <div>\n <Label>Inputs</Label>\n <div className=\"space-y-1.5\">\n {Object.entries(step.params.toolInput).map(([key, val]) => {\n const resolvedVal = resolved?.[key];\n const hasResolved = resolvedVal !== undefined;\n return (\n <div\n key={key}\n className=\"flex gap-2 text-xs items-baseline\"\n >\n <span className=\"font-mono font-medium text-muted-foreground shrink-0\">\n {key}\n </span>\n <span className=\"text-muted-foreground/40\">=</span>\n <span\n className={`font-mono ${hasResolved ? \"text-emerald-600\" : \"text-foreground\"}`}\n title={hasResolved ? renderExpression(val) : undefined}\n >\n {hasResolved\n ? typeof resolvedVal === \"string\"\n ? resolvedVal\n : JSON.stringify(resolvedVal)\n : renderExpression(val)}\n </span>\n </div>\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n\n case \"llm-prompt\":\n return (\n <div className=\"space-y-2\">\n <div>\n <Label>Prompt</Label>\n {resolved?.prompt ? (\n <ResolvedCode\n value={resolved.prompt}\n expression={step.params.prompt}\n />\n ) : (\n <pre className=\"text-xs rounded p-2 whitespace-pre-wrap font-mono text-foreground bg-muted\">\n {step.params.prompt}\n </pre>\n )}\n </div>\n <div>\n <Label>Output Format</Label>\n <JsonViewer\n value={JSON.stringify(step.params.outputFormat, null, 2)}\n />\n </div>\n </div>\n );\n\n case \"extract-data\":\n return (\n <div className=\"space-y-2\">\n <div>\n <Label>Source</Label>\n {resolved?.sourceData !== undefined ? (\n <ResolvedCode\n value={resolved.sourceData}\n expression={renderExpression(step.params.sourceData)}\n />\n ) : (\n <Code>{renderExpression(step.params.sourceData)}</Code>\n )}\n </div>\n <div>\n <Label>Output Format</Label>\n <JsonViewer\n value={JSON.stringify(step.params.outputFormat, null, 2)}\n />\n </div>\n </div>\n );\n\n case \"switch-case\":\n return (\n <div className=\"space-y-3\">\n <div>\n <Label>Switch On</Label>\n {resolved?.switchOn !== undefined ? (\n <ResolvedCode\n value={resolved.switchOn}\n expression={renderExpression(step.params.switchOn)}\n />\n ) : (\n <Code>{renderExpression(step.params.switchOn)}</Code>\n )}\n </div>\n <div>\n <Label>Cases</Label>\n <div className=\"space-y-1.5\">\n {step.params.cases.map((c) => (\n <div\n key={c.branchBodyStepId}\n className=\"text-xs flex items-center gap-2 bg-muted/30 rounded-md px-2.5 py-1.5\"\n >\n <span className=\"font-mono font-medium text-muted-foreground\">\n {c.value.type === \"default\"\n ? \"default\"\n : renderExpression(c.value)}\n </span>\n <span className=\"text-muted-foreground/40\">→</span>\n <span className=\"font-mono font-medium text-foreground\">\n {c.branchBodyStepId}\n </span>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n\n case \"for-each\":\n return (\n <div className=\"space-y-2\">\n <div>\n <Label>Target</Label>\n {resolved?.target !== undefined ? (\n <ResolvedCode\n value={resolved.target}\n expression={renderExpression(step.params.target)}\n />\n ) : (\n <Code>{renderExpression(step.params.target)}</Code>\n )}\n </div>\n <div>\n <Label>Item Variable</Label>\n <Code>{step.params.itemName}</Code>\n </div>\n <div>\n <Label>Loop Body</Label>\n <Code>{step.params.loopBodyStepId}</Code>\n </div>\n </div>\n );\n\n case \"sleep\":\n return (\n <div className=\"space-y-2\">\n <div>\n <Label>Duration</Label>\n {resolved?.durationMs !== undefined ? (\n <ResolvedCode\n value={`${resolved.durationMs}ms`}\n expression={renderExpression(step.params.durationMs)}\n />\n ) : (\n <Code>{renderExpression(step.params.durationMs)}ms</Code>\n )}\n </div>\n </div>\n );\n\n case \"wait-for-condition\":\n return (\n <div className=\"space-y-2\">\n <div>\n <Label>Condition</Label>\n {resolved?.condition !== undefined ? (\n <ResolvedCode\n value={resolved.condition}\n expression={renderExpression(step.params.condition)}\n />\n ) : (\n <Code>{renderExpression(step.params.condition)}</Code>\n )}\n </div>\n <div>\n <Label>Condition Step</Label>\n <Code>{step.params.conditionStepId}</Code>\n </div>\n {step.params.maxAttempts && (\n <div>\n <Label>Max Attempts</Label>\n <Code>{renderExpression(step.params.maxAttempts)}</Code>\n </div>\n )}\n {step.params.intervalMs && (\n <div>\n <Label>Interval</Label>\n <Code>{renderExpression(step.params.intervalMs)}ms</Code>\n </div>\n )}\n {step.params.timeoutMs && (\n <div>\n <Label>Timeout</Label>\n <Code>{renderExpression(step.params.timeoutMs)}ms</Code>\n </div>\n )}\n </div>\n );\n\n case \"agent-loop\":\n return (\n <div className=\"space-y-2\">\n <div>\n <Label>Instructions</Label>\n <pre className=\"text-xs rounded p-2 whitespace-pre-wrap font-mono text-foreground bg-muted\">\n {step.params.instructions}\n </pre>\n </div>\n {step.params.tools.length > 0 && (\n <div>\n <Label>Tools</Label>\n <Code>{step.params.tools.join(\", \")}</Code>\n </div>\n )}\n <div>\n <Label>Output Format</Label>\n <JsonViewer\n value={JSON.stringify(step.params.outputFormat, null, 2)}\n />\n </div>\n {step.params.maxSteps && (\n <div>\n <Label>Max Steps</Label>\n <Code>{renderExpression(step.params.maxSteps)}</Code>\n </div>\n )}\n </div>\n );\n\n case \"start\":\n return null;\n\n case \"end\":\n if (step.params?.output) {\n return (\n <div className=\"space-y-2\">\n <div>\n <Label>Output</Label>\n {resolved?.output !== undefined ? (\n <ResolvedCode\n value={resolved.output}\n expression={renderExpression(step.params.output)}\n />\n ) : (\n <Code>{renderExpression(step.params.output)}</Code>\n )}\n </div>\n </div>\n );\n }\n return null;\n }\n}\n\nfunction Code({ children }: { children: React.ReactNode }) {\n return (\n <pre className=\"text-xs rounded-md p-2.5 whitespace-pre-wrap font-mono overflow-auto max-h-[200px] text-foreground bg-muted/60 border border-border/50\">\n {children}\n </pre>\n );\n}\n\nfunction formatPathSegment(seg: ExecutionPathSegment): string {\n switch (seg.type) {\n case \"for-each\":\n return `Iteration ${seg.iterationIndex}: ${formatValue(seg.itemValue)}`;\n case \"switch-case\":\n return `Case ${seg.matchedCaseIndex}: ${formatValue(seg.matchedValue)}`;\n case \"wait-for-condition\":\n return `Poll attempt ${seg.pollAttempt}`;\n }\n}\n\nfunction formatValue(value: unknown): string {\n if (typeof value === \"string\") return value;\n return JSON.stringify(value);\n}\n\nconst recordStatusColors: Record<string, string> = {\n pending: \"bg-muted text-muted-foreground border border-border\",\n running: \"bg-blue-500/10 text-blue-600 border border-blue-500/20\",\n completed: \"bg-green-500/10 text-green-600 border border-green-500/20\",\n failed: \"bg-destructive/10 text-destructive border border-destructive/20\",\n skipped: \"bg-muted text-muted-foreground border border-border\",\n};\n\nfunction TraceSection({ trace }: { trace: TraceEntry[] }) {\n if (trace.length === 0) return null;\n\n return (\n <details className=\"text-xs group\">\n <summary className=\"text-[11px] font-medium text-muted-foreground cursor-pointer select-none hover:text-foreground transition-colors py-0.5\">\n Agent Trace ({trace.length} {trace.length === 1 ? \"entry\" : \"entries\"})\n </summary>\n <div className=\"mt-1.5\">\n <JsonViewer value={JSON.stringify(trace, null, 2)} />\n </div>\n </details>\n );\n}\n\nfunction ExecutionRecordCard({ record }: { record: StepExecutionRecord }) {\n const pathLabel =\n record.path.length > 0\n ? record.path.map(formatPathSegment).join(\" > \")\n : null;\n\n return (\n <div className=\"border border-border rounded-lg p-3 space-y-2 bg-card\">\n {pathLabel && (\n <div className=\"text-[11px] font-medium text-muted-foreground\">\n {pathLabel}\n </div>\n )}\n <div className=\"flex items-center gap-2\">\n <span\n className={`text-[11px] font-semibold px-2.5 py-0.5 rounded-full ${recordStatusColors[record.status]}`}\n >\n {record.status}\n </span>\n {record.durationMs !== undefined && (\n <span className=\"text-[11px] text-muted-foreground tabular-nums\">\n {record.durationMs}ms\n </span>\n )}\n {record.retries.length > 0 && (\n <span className=\"text-[11px] font-medium text-amber-600\">\n {record.retries.length}{\" \"}\n {record.retries.length === 1 ? \"retry\" : \"retries\"}\n </span>\n )}\n </div>\n {record.resolvedInputs !== undefined && (\n <details className=\"text-xs group\">\n <summary className=\"text-[11px] font-medium text-muted-foreground cursor-pointer select-none hover:text-foreground transition-colors py-0.5\">\n Resolved Inputs\n </summary>\n <div className=\"mt-1.5\">\n <ResolvedCode value={record.resolvedInputs} />\n </div>\n </details>\n )}\n {record.output !== undefined && (\n <details className=\"text-xs group\">\n <summary className=\"text-[11px] font-medium text-muted-foreground cursor-pointer select-none hover:text-foreground transition-colors py-0.5\">\n Output\n </summary>\n <div className=\"mt-1.5\">\n <JsonViewer value={jsonString(record.output)} />\n </div>\n </details>\n )}\n {record.trace && record.trace.length > 0 && (\n <TraceSection trace={record.trace} />\n )}\n {record.error && (\n <div className=\"text-xs p-2.5 rounded-md bg-destructive/10 text-destructive border border-destructive/20\">\n <div className=\"font-semibold font-mono\">{record.error.code}</div>\n <div className=\"mt-1 leading-relaxed\">{record.error.message}</div>\n </div>\n )}\n </div>\n );\n}\n\nexport function StepDetailPanel({\n step,\n diagnostics,\n executionSummary,\n executionRecords,\n onClose,\n}: StepDetailPanelProps) {\n return (\n <div className=\"w-[360px] border-l h-full min-h-0 overflow-y-auto bg-card border-border\">\n <div className=\"sticky top-0 z-10 border-b px-4 py-3 flex items-center justify-between bg-card/95 backdrop-blur-sm border-border\">\n <TypeBadge type={step.type} />\n <button\n type=\"button\"\n onClick={onClose}\n className=\"text-lg leading-none text-muted-foreground hover:text-foreground shrink-0 rounded-md w-7 h-7 flex items-center justify-center hover:bg-muted transition-colors\"\n >\n ×\n </button>\n </div>\n\n <div className=\"px-4 py-4 space-y-4\">\n <div className=\"space-y-3\">\n <div>\n <div className=\"font-medium text-sm text-foreground\">\n {step.name}\n </div>\n {step.description && (\n <div className=\"text-xs text-muted-foreground leading-relaxed mt-1\">\n {step.description}\n </div>\n )}\n </div>\n\n <div className=\"grid grid-cols-2 gap-3\">\n <div>\n <Label>Step ID</Label>\n <div className=\"text-xs font-mono text-muted-foreground bg-muted/40 rounded px-2 py-1.5 truncate\">\n {step.id}\n </div>\n </div>\n {step.nextStepId && (\n <div>\n <Label>Next Step</Label>\n <div className=\"text-xs font-mono text-muted-foreground bg-muted/40 rounded px-2 py-1.5 truncate\">\n {step.nextStepId}\n </div>\n </div>\n )}\n </div>\n </div>\n\n <div className=\"border-t pt-4 border-border\">\n <SectionHeader>Parameters</SectionHeader>\n <div className=\"mt-2\">\n <StepParams\n step={step}\n resolvedInputs={\n executionRecords?.length\n ? executionRecords[executionRecords.length - 1]\n ?.resolvedInputs\n : undefined\n }\n />\n </div>\n </div>\n\n {executionSummary && (\n <div className=\"border-t border-border pt-4\">\n <SectionHeader>Execution</SectionHeader>\n <div className=\"mt-2 space-y-3\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <StatusBadge summary={executionSummary} />\n {executionSummary.latestDurationMs !== undefined && (\n <span className=\"text-[11px] text-muted-foreground tabular-nums\">\n {executionSummary.latestDurationMs}ms\n </span>\n )}\n {executionSummary.executionCount > 1 && (\n <span className=\"text-[11px] text-muted-foreground\">\n ({executionSummary.completedCount}/\n {executionSummary.executionCount} iterations)\n </span>\n )}\n </div>\n\n <div>\n <Label>Output</Label>\n <JsonViewer\n value={\n executionSummary.latestOutput !== undefined\n ? jsonString(executionSummary.latestOutput)\n : undefined\n }\n />\n </div>\n\n {executionSummary.latestTrace &&\n executionSummary.latestTrace.length > 0 && (\n <TraceSection trace={executionSummary.latestTrace} />\n )}\n\n {executionSummary.latestError && (\n <div className=\"text-xs p-2.5 rounded-md bg-destructive/10 text-destructive border border-destructive/20\">\n <div className=\"font-semibold font-mono\">\n {executionSummary.latestError.code}\n </div>\n <div className=\"mt-1 leading-relaxed\">\n {executionSummary.latestError.message}\n </div>\n </div>\n )}\n\n {executionSummary.totalRetries > 0 && (\n <div className=\"text-[11px] font-medium text-amber-600\">\n {executionSummary.totalRetries}{\" \"}\n {executionSummary.totalRetries === 1 ? \"retry\" : \"retries\"}{\" \"}\n attempted\n </div>\n )}\n </div>\n </div>\n )}\n\n {executionRecords && executionRecords.length > 0 && (\n <div className=\"border-t border-border pt-4\">\n <SectionHeader>Execution History</SectionHeader>\n <div className=\"space-y-2 mt-2\">\n {executionRecords.map((record, i) => (\n <ExecutionRecordCard\n key={`${record.stepId}-${i}`}\n record={record}\n />\n ))}\n </div>\n </div>\n )}\n\n {diagnostics.length > 0 && (\n <div className=\"border-t pt-4 border-border\">\n <SectionHeader>Diagnostics</SectionHeader>\n <div className=\"space-y-2 mt-2\">\n {diagnostics.map((d) => (\n <div\n key={`${d.code}-${d.message}`}\n className={`text-xs p-2.5 rounded-md ${\n d.severity === \"error\"\n ? \"bg-destructive/10 text-destructive border border-destructive/20\"\n : \"bg-amber-500/10 text-amber-600 border border-amber-500/20\"\n }`}\n >\n <div className=\"font-semibold font-mono\">{d.code}</div>\n <div className=\"mt-1 leading-relaxed\">{d.message}</div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n",
|
|
28
|
+
"import type {\n Diagnostic,\n ExecutionPathSegment,\n StepExecutionRecord,\n TraceEntry,\n WorkflowStep,\n} from \"@remoraflow/core\";\nimport type React from \"react\";\nimport { JsonViewer } from \"../editors/json-viewer\";\nimport type { StepExecutionSummary } from \"../execution-state\";\nimport { useToolDisplayName, useToolSchemas } from \"../tool-schemas-context\";\nimport { Label, SectionHeader, TypeBadge } from \"./shared\";\n\nfunction jsonString(value: unknown): string {\n return typeof value === \"string\" ? value : JSON.stringify(value, null, 2);\n}\n\nexport interface StepDetailPanelProps {\n step: WorkflowStep;\n diagnostics: Diagnostic[];\n executionSummary?: StepExecutionSummary;\n executionRecords?: StepExecutionRecord[];\n onClose: () => void;\n}\n\nfunction renderExpression(\n expr:\n | { type: \"literal\"; value: unknown }\n | { type: \"jmespath\"; expression: string }\n | { type: \"template\"; template: string },\n): string {\n if (expr.type === \"literal\") return JSON.stringify(expr.value);\n if (expr.type === \"template\") return expr.template;\n return expr.expression;\n}\n\nfunction StatusBadge({ summary }: { summary: StepExecutionSummary }) {\n const colors: Record<string, string> = {\n pending: \"bg-muted text-muted-foreground border border-border\",\n running: \"bg-blue-500/10 text-blue-600 border border-blue-500/20\",\n completed: \"bg-green-500/10 text-green-600 border border-green-500/20\",\n failed: \"bg-destructive/10 text-destructive border border-destructive/20\",\n skipped: \"bg-muted text-muted-foreground border border-border\",\n };\n return (\n <span\n className={`text-[11px] font-semibold px-2.5 py-0.5 rounded-full ${colors[summary.status]}`}\n >\n {summary.status}\n </span>\n );\n}\n\nfunction ResolvedCode({\n value,\n expression,\n}: {\n value: unknown;\n expression?: string;\n}) {\n const display = jsonString(value);\n if (typeof value === \"string\") {\n return (\n <pre\n className=\"text-xs text-emerald-600 bg-emerald-500/10 rounded-md p-2.5 whitespace-pre-wrap font-mono overflow-auto max-h-[200px] cursor-default border border-emerald-500/20\"\n title={expression}\n >\n {display}\n </pre>\n );\n }\n return <JsonViewer value={display} />;\n}\n\nfunction StepParams({\n step,\n resolvedInputs,\n}: {\n step: WorkflowStep;\n resolvedInputs?: unknown;\n}) {\n const resolved = resolvedInputs as Record<string, unknown> | undefined;\n const toolSchemas = useToolSchemas();\n const toolCallDisplayName = useToolDisplayName(\n step.type === \"tool-call\" ? step.params.toolName : \"\",\n );\n\n switch (step.type) {\n case \"tool-call\":\n return (\n <div className=\"space-y-3\">\n <div>\n <Label>Tool</Label>\n <div className=\"text-xs font-mono font-medium text-foreground bg-muted/40 rounded px-2 py-1 inline-block\">\n {toolCallDisplayName}\n </div>\n </div>\n {Object.keys(step.params.toolInput).length > 0 && (\n <div>\n <Label>Inputs</Label>\n <div className=\"space-y-1.5\">\n {Object.entries(step.params.toolInput).map(([key, val]) => {\n const resolvedVal = resolved?.[key];\n const hasResolved = resolvedVal !== undefined;\n return (\n <div\n key={key}\n className=\"flex gap-2 text-xs items-baseline\"\n >\n <span className=\"font-mono font-medium text-muted-foreground shrink-0\">\n {key}\n </span>\n <span className=\"text-muted-foreground/40\">=</span>\n <span\n className={`font-mono ${hasResolved ? \"text-emerald-600\" : \"text-foreground\"}`}\n title={hasResolved ? renderExpression(val) : undefined}\n >\n {hasResolved\n ? typeof resolvedVal === \"string\"\n ? resolvedVal\n : JSON.stringify(resolvedVal)\n : renderExpression(val)}\n </span>\n </div>\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n\n case \"llm-prompt\":\n return (\n <div className=\"space-y-2\">\n <div>\n <Label>Prompt</Label>\n {resolved?.prompt ? (\n <ResolvedCode\n value={resolved.prompt}\n expression={step.params.prompt}\n />\n ) : (\n <pre className=\"text-xs rounded p-2 whitespace-pre-wrap font-mono text-foreground bg-muted\">\n {step.params.prompt}\n </pre>\n )}\n </div>\n <div>\n <Label>Output Format</Label>\n <JsonViewer\n value={JSON.stringify(step.params.outputFormat, null, 2)}\n />\n </div>\n </div>\n );\n\n case \"extract-data\":\n return (\n <div className=\"space-y-2\">\n <div>\n <Label>Source</Label>\n {resolved?.sourceData !== undefined ? (\n <ResolvedCode\n value={resolved.sourceData}\n expression={renderExpression(step.params.sourceData)}\n />\n ) : (\n <Code>{renderExpression(step.params.sourceData)}</Code>\n )}\n </div>\n <div>\n <Label>Output Format</Label>\n <JsonViewer\n value={JSON.stringify(step.params.outputFormat, null, 2)}\n />\n </div>\n </div>\n );\n\n case \"switch-case\":\n return (\n <div className=\"space-y-3\">\n <div>\n <Label>Switch On</Label>\n {resolved?.switchOn !== undefined ? (\n <ResolvedCode\n value={resolved.switchOn}\n expression={renderExpression(step.params.switchOn)}\n />\n ) : (\n <Code>{renderExpression(step.params.switchOn)}</Code>\n )}\n </div>\n <div>\n <Label>Cases</Label>\n <div className=\"space-y-1.5\">\n {step.params.cases.map((c) => (\n <div\n key={c.branchBodyStepId}\n className=\"text-xs flex items-center gap-2 bg-muted/30 rounded-md px-2.5 py-1.5\"\n >\n <span className=\"font-mono font-medium text-muted-foreground\">\n {c.value.type === \"default\"\n ? \"default\"\n : renderExpression(c.value)}\n </span>\n <span className=\"text-muted-foreground/40\">→</span>\n <span className=\"font-mono font-medium text-foreground\">\n {c.branchBodyStepId}\n </span>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n\n case \"for-each\":\n return (\n <div className=\"space-y-2\">\n <div>\n <Label>Target</Label>\n {resolved?.target !== undefined ? (\n <ResolvedCode\n value={resolved.target}\n expression={renderExpression(step.params.target)}\n />\n ) : (\n <Code>{renderExpression(step.params.target)}</Code>\n )}\n </div>\n <div>\n <Label>Item Variable</Label>\n <Code>{step.params.itemName}</Code>\n </div>\n <div>\n <Label>Loop Body</Label>\n <Code>{step.params.loopBodyStepId}</Code>\n </div>\n </div>\n );\n\n case \"sleep\":\n return (\n <div className=\"space-y-2\">\n <div>\n <Label>Duration</Label>\n {resolved?.durationMs !== undefined ? (\n <ResolvedCode\n value={`${resolved.durationMs}ms`}\n expression={renderExpression(step.params.durationMs)}\n />\n ) : (\n <Code>{renderExpression(step.params.durationMs)}ms</Code>\n )}\n </div>\n </div>\n );\n\n case \"wait-for-condition\":\n return (\n <div className=\"space-y-2\">\n <div>\n <Label>Condition</Label>\n {resolved?.condition !== undefined ? (\n <ResolvedCode\n value={resolved.condition}\n expression={renderExpression(step.params.condition)}\n />\n ) : (\n <Code>{renderExpression(step.params.condition)}</Code>\n )}\n </div>\n <div>\n <Label>Condition Step</Label>\n <Code>{step.params.conditionStepId}</Code>\n </div>\n {step.params.maxAttempts && (\n <div>\n <Label>Max Attempts</Label>\n <Code>{renderExpression(step.params.maxAttempts)}</Code>\n </div>\n )}\n {step.params.intervalMs && (\n <div>\n <Label>Interval</Label>\n <Code>{renderExpression(step.params.intervalMs)}ms</Code>\n </div>\n )}\n {step.params.timeoutMs && (\n <div>\n <Label>Timeout</Label>\n <Code>{renderExpression(step.params.timeoutMs)}ms</Code>\n </div>\n )}\n </div>\n );\n\n case \"agent-loop\":\n return (\n <div className=\"space-y-2\">\n <div>\n <Label>Instructions</Label>\n <pre className=\"text-xs rounded p-2 whitespace-pre-wrap font-mono text-foreground bg-muted\">\n {step.params.instructions}\n </pre>\n </div>\n {step.params.tools.length > 0 && (\n <div>\n <Label>Tools</Label>\n <Code>\n {step.params.tools\n .map((name) => toolSchemas?.[name]?.displayName ?? name)\n .join(\", \")}\n </Code>\n </div>\n )}\n <div>\n <Label>Output Format</Label>\n <JsonViewer\n value={JSON.stringify(step.params.outputFormat, null, 2)}\n />\n </div>\n {step.params.maxSteps && (\n <div>\n <Label>Max Steps</Label>\n <Code>{renderExpression(step.params.maxSteps)}</Code>\n </div>\n )}\n </div>\n );\n\n case \"start\":\n return null;\n\n case \"end\":\n if (step.params?.output) {\n return (\n <div className=\"space-y-2\">\n <div>\n <Label>Output</Label>\n {resolved?.output !== undefined ? (\n <ResolvedCode\n value={resolved.output}\n expression={renderExpression(step.params.output)}\n />\n ) : (\n <Code>{renderExpression(step.params.output)}</Code>\n )}\n </div>\n </div>\n );\n }\n return null;\n }\n}\n\nfunction Code({ children }: { children: React.ReactNode }) {\n return (\n <pre className=\"text-xs rounded-md p-2.5 whitespace-pre-wrap font-mono overflow-auto max-h-[200px] text-foreground bg-muted/60 border border-border/50\">\n {children}\n </pre>\n );\n}\n\nfunction formatPathSegment(seg: ExecutionPathSegment): string {\n switch (seg.type) {\n case \"for-each\":\n return `Iteration ${seg.iterationIndex}: ${formatValue(seg.itemValue)}`;\n case \"switch-case\":\n return `Case ${seg.matchedCaseIndex}: ${formatValue(seg.matchedValue)}`;\n case \"wait-for-condition\":\n return `Poll attempt ${seg.pollAttempt}`;\n }\n}\n\nfunction formatValue(value: unknown): string {\n if (typeof value === \"string\") return value;\n return JSON.stringify(value);\n}\n\nconst recordStatusColors: Record<string, string> = {\n pending: \"bg-muted text-muted-foreground border border-border\",\n running: \"bg-blue-500/10 text-blue-600 border border-blue-500/20\",\n completed: \"bg-green-500/10 text-green-600 border border-green-500/20\",\n failed: \"bg-destructive/10 text-destructive border border-destructive/20\",\n skipped: \"bg-muted text-muted-foreground border border-border\",\n};\n\nfunction TraceSection({ trace }: { trace: TraceEntry[] }) {\n if (trace.length === 0) return null;\n\n return (\n <details className=\"text-xs group\">\n <summary className=\"text-[11px] font-medium text-muted-foreground cursor-pointer select-none hover:text-foreground transition-colors py-0.5\">\n Agent Trace ({trace.length} {trace.length === 1 ? \"entry\" : \"entries\"})\n </summary>\n <div className=\"mt-1.5\">\n <JsonViewer value={JSON.stringify(trace, null, 2)} />\n </div>\n </details>\n );\n}\n\nfunction ExecutionRecordCard({ record }: { record: StepExecutionRecord }) {\n const pathLabel =\n record.path.length > 0\n ? record.path.map(formatPathSegment).join(\" > \")\n : null;\n\n return (\n <div className=\"border border-border rounded-lg p-3 space-y-2 bg-card\">\n {pathLabel && (\n <div className=\"text-[11px] font-medium text-muted-foreground\">\n {pathLabel}\n </div>\n )}\n <div className=\"flex items-center gap-2\">\n <span\n className={`text-[11px] font-semibold px-2.5 py-0.5 rounded-full ${recordStatusColors[record.status]}`}\n >\n {record.status}\n </span>\n {record.durationMs !== undefined && (\n <span className=\"text-[11px] text-muted-foreground tabular-nums\">\n {record.durationMs}ms\n </span>\n )}\n {record.retries.length > 0 && (\n <span className=\"text-[11px] font-medium text-amber-600\">\n {record.retries.length}{\" \"}\n {record.retries.length === 1 ? \"retry\" : \"retries\"}\n </span>\n )}\n </div>\n {record.resolvedInputs !== undefined && (\n <details className=\"text-xs group\">\n <summary className=\"text-[11px] font-medium text-muted-foreground cursor-pointer select-none hover:text-foreground transition-colors py-0.5\">\n Resolved Inputs\n </summary>\n <div className=\"mt-1.5\">\n <ResolvedCode value={record.resolvedInputs} />\n </div>\n </details>\n )}\n {record.output !== undefined && (\n <details className=\"text-xs group\">\n <summary className=\"text-[11px] font-medium text-muted-foreground cursor-pointer select-none hover:text-foreground transition-colors py-0.5\">\n Output\n </summary>\n <div className=\"mt-1.5\">\n <JsonViewer value={jsonString(record.output)} />\n </div>\n </details>\n )}\n {record.trace && record.trace.length > 0 && (\n <TraceSection trace={record.trace} />\n )}\n {record.error && (\n <div className=\"text-xs p-2.5 rounded-md bg-destructive/10 text-destructive border border-destructive/20\">\n <div className=\"font-semibold font-mono\">{record.error.code}</div>\n <div className=\"mt-1 leading-relaxed\">{record.error.message}</div>\n </div>\n )}\n </div>\n );\n}\n\nexport function StepDetailPanel({\n step,\n diagnostics,\n executionSummary,\n executionRecords,\n onClose,\n}: StepDetailPanelProps) {\n return (\n <div className=\"w-[360px] border-l h-full min-h-0 overflow-y-auto bg-card border-border\">\n <div className=\"sticky top-0 z-10 border-b px-4 py-3 flex items-center justify-between bg-card/95 backdrop-blur-sm border-border\">\n <TypeBadge type={step.type} />\n <button\n type=\"button\"\n onClick={onClose}\n className=\"text-lg leading-none text-muted-foreground hover:text-foreground shrink-0 rounded-md w-7 h-7 flex items-center justify-center hover:bg-muted transition-colors\"\n >\n ×\n </button>\n </div>\n\n <div className=\"px-4 py-4 space-y-4\">\n <div className=\"space-y-3\">\n <div>\n <div className=\"font-medium text-sm text-foreground\">\n {step.name}\n </div>\n {step.description && (\n <div className=\"text-xs text-muted-foreground leading-relaxed mt-1\">\n {step.description}\n </div>\n )}\n </div>\n\n <div className=\"grid grid-cols-2 gap-3\">\n <div>\n <Label>Step ID</Label>\n <div className=\"text-xs font-mono text-muted-foreground bg-muted/40 rounded px-2 py-1.5 truncate\">\n {step.id}\n </div>\n </div>\n {step.nextStepId && (\n <div>\n <Label>Next Step</Label>\n <div className=\"text-xs font-mono text-muted-foreground bg-muted/40 rounded px-2 py-1.5 truncate\">\n {step.nextStepId}\n </div>\n </div>\n )}\n </div>\n </div>\n\n <div className=\"border-t pt-4 border-border\">\n <SectionHeader>Parameters</SectionHeader>\n <div className=\"mt-2\">\n <StepParams\n step={step}\n resolvedInputs={\n executionRecords?.length\n ? executionRecords[executionRecords.length - 1]\n ?.resolvedInputs\n : undefined\n }\n />\n </div>\n </div>\n\n {executionSummary && (\n <div className=\"border-t border-border pt-4\">\n <SectionHeader>Execution</SectionHeader>\n <div className=\"mt-2 space-y-3\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <StatusBadge summary={executionSummary} />\n {executionSummary.latestDurationMs !== undefined && (\n <span className=\"text-[11px] text-muted-foreground tabular-nums\">\n {executionSummary.latestDurationMs}ms\n </span>\n )}\n {executionSummary.executionCount > 1 && (\n <span className=\"text-[11px] text-muted-foreground\">\n ({executionSummary.completedCount}/\n {executionSummary.executionCount} iterations)\n </span>\n )}\n </div>\n\n <div>\n <Label>Output</Label>\n <JsonViewer\n value={\n executionSummary.latestOutput !== undefined\n ? jsonString(executionSummary.latestOutput)\n : undefined\n }\n />\n </div>\n\n {executionSummary.latestTrace &&\n executionSummary.latestTrace.length > 0 && (\n <TraceSection trace={executionSummary.latestTrace} />\n )}\n\n {executionSummary.latestError && (\n <div className=\"text-xs p-2.5 rounded-md bg-destructive/10 text-destructive border border-destructive/20\">\n <div className=\"font-semibold font-mono\">\n {executionSummary.latestError.code}\n </div>\n <div className=\"mt-1 leading-relaxed\">\n {executionSummary.latestError.message}\n </div>\n </div>\n )}\n\n {executionSummary.totalRetries > 0 && (\n <div className=\"text-[11px] font-medium text-amber-600\">\n {executionSummary.totalRetries}{\" \"}\n {executionSummary.totalRetries === 1 ? \"retry\" : \"retries\"}{\" \"}\n attempted\n </div>\n )}\n </div>\n </div>\n )}\n\n {executionRecords && executionRecords.length > 0 && (\n <div className=\"border-t border-border pt-4\">\n <SectionHeader>Execution History</SectionHeader>\n <div className=\"space-y-2 mt-2\">\n {executionRecords.map((record, i) => (\n <ExecutionRecordCard\n key={`${record.stepId}-${i}`}\n record={record}\n />\n ))}\n </div>\n </div>\n )}\n\n {diagnostics.length > 0 && (\n <div className=\"border-t pt-4 border-border\">\n <SectionHeader>Diagnostics</SectionHeader>\n <div className=\"space-y-2 mt-2\">\n {diagnostics.map((d) => (\n <div\n key={`${d.code}-${d.message}`}\n className={`text-xs p-2.5 rounded-md ${\n d.severity === \"error\"\n ? \"bg-destructive/10 text-destructive border border-destructive/20\"\n : \"bg-amber-500/10 text-amber-600 border border-amber-500/20\"\n }`}\n >\n <div className=\"font-semibold font-mono\">{d.code}</div>\n <div className=\"mt-1 leading-relaxed\">{d.message}</div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n",
|
|
28
29
|
"import { useCallback, useEffect, useState } from \"react\";\nimport { Input } from \"../components/ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../components/ui/select\";\nimport { cn } from \"../lib/utils\";\nimport { Label } from \"../panels/shared\";\nimport { JsonCodeEditor } from \"./json-code-editor\";\n\nconst ID_REGEX = /^[a-zA-Z_][a-zA-Z0-9_]+$/;\n\nexport function StepIdInput({\n value,\n onChange,\n}: {\n value: string;\n onChange: (id: string) => void;\n}) {\n const [draft, setDraft] = useState(value);\n const [error, setError] = useState(\"\");\n\n useEffect(() => {\n setDraft(value);\n setError(\"\");\n }, [value]);\n\n const handleBlur = useCallback(() => {\n if (!draft || !ID_REGEX.test(draft)) {\n setError(\n \"Must start with letter/underscore, contain only letters, digits, underscores (min 2 chars)\",\n );\n return;\n }\n setError(\"\");\n if (draft !== value) {\n onChange(draft);\n }\n }, [draft, value, onChange]);\n\n return (\n <div>\n <Label>Step ID</Label>\n <Input\n value={draft}\n onChange={(e) => setDraft(e.target.value)}\n onBlur={handleBlur}\n className={cn(\n \"h-8 text-xs font-mono\",\n error && \"border-red-500 focus-visible:ring-red-500/50\",\n )}\n placeholder=\"step_id\"\n />\n {error && <div className=\"text-[10px] text-red-500 mt-0.5\">{error}</div>}\n </div>\n );\n}\n\nexport function StepIdDropdown({\n label,\n value,\n onChange,\n stepIds,\n allowEmpty,\n}: {\n label: string;\n value: string;\n onChange: (id: string) => void;\n stepIds: string[];\n allowEmpty?: boolean;\n}) {\n return (\n <div>\n <Label>{label}</Label>\n <Select\n value={value || \"__empty__\"}\n onValueChange={(val) => onChange(val === \"__empty__\" ? \"\" : val)}\n >\n <SelectTrigger className=\"h-8 text-xs font-mono w-full\">\n <SelectValue placeholder=\"— none —\" />\n </SelectTrigger>\n <SelectContent>\n {(allowEmpty || !value) && (\n <SelectItem value=\"__empty__\">— none —</SelectItem>\n )}\n {stepIds.map((id) => (\n <SelectItem key={id} value={id}>\n {id}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\n}\n\nexport function JsonEditor({\n label,\n value,\n onChange,\n}: {\n label: string;\n value: object;\n onChange: (value: object) => void;\n}) {\n const [draft, setDraft] = useState(JSON.stringify(value, null, 2));\n\n useEffect(() => {\n setDraft(JSON.stringify(value, null, 2));\n }, [value]);\n\n const handleBlur = useCallback(() => {\n try {\n const parsed = JSON.parse(draft);\n onChange(parsed);\n } catch {\n // Validation errors shown inline by CodeMirror linter\n }\n }, [draft, onChange]);\n\n return (\n <div>\n <Label>{label}</Label>\n <JsonCodeEditor value={draft} onChange={setDraft} onBlur={handleBlur} />\n </div>\n );\n}\n",
|
|
29
|
-
"import type { WorkflowStep } from \"@remoraflow/core\";\nimport { Input } from \"../../components/ui/input\";\nimport { Textarea } from \"../../components/ui/textarea\";\nimport { Label } from \"../../panels/shared\";\nimport { JsonEditor } from \"../shared-editors\";\nimport type { StepOnChange } from \"./types\";\n\nexport function AgentLoopParams({\n step,\n onChange,\n availableToolNames,\n}: {\n step: WorkflowStep & { type: \"agent-loop\" };\n onChange: StepOnChange;\n availableToolNames: string[];\n}) {\n return (\n <div className=\"space-y-3\">\n <div>\n <Label>Instructions</Label>\n <Textarea\n value={step.params.instructions}\n onChange={(e) =>\n onChange({\n params: {\n ...step.params,\n instructions: e.target.value,\n },\n })\n }\n rows={4}\n className=\"text-xs font-mono resize-y\"\n placeholder=\"Write agent instructions. Use ${stepId.field} for interpolation.\"\n />\n </div>\n <div>\n <Label>Tools</Label>\n {availableToolNames.length > 0 ? (\n <div className=\"space-y-1\">\n {availableToolNames.map((name) => (\n
|
|
30
|
+
"import type { ToolDefinitionMap, WorkflowStep } from \"@remoraflow/core\";\nimport { Input } from \"../../components/ui/input\";\nimport { Textarea } from \"../../components/ui/textarea\";\nimport { Label } from \"../../panels/shared\";\nimport { JsonEditor } from \"../shared-editors\";\nimport type { StepOnChange } from \"./types\";\n\nexport function AgentLoopParams({\n step,\n onChange,\n availableToolNames,\n toolSchemas,\n}: {\n step: WorkflowStep & { type: \"agent-loop\" };\n onChange: StepOnChange;\n availableToolNames: string[];\n toolSchemas?: ToolDefinitionMap;\n}) {\n return (\n <div className=\"space-y-3\">\n <div>\n <Label>Instructions</Label>\n <Textarea\n value={step.params.instructions}\n onChange={(e) =>\n onChange({\n params: {\n ...step.params,\n instructions: e.target.value,\n },\n })\n }\n rows={4}\n className=\"text-xs font-mono resize-y\"\n placeholder=\"Write agent instructions. Use ${stepId.field} for interpolation.\"\n />\n </div>\n <div>\n <Label>Tools</Label>\n {availableToolNames.length > 0 ? (\n <div className=\"space-y-1\">\n {availableToolNames.map((name) => {\n const toolSchema = toolSchemas?.[name];\n return (\n <label\n key={name}\n className=\"flex items-start gap-2.5 text-xs text-foreground cursor-pointer select-none\"\n >\n <input\n type=\"checkbox\"\n className=\"mt-0.5 rounded border-border accent-foreground\"\n checked={step.params.tools.includes(name)}\n onChange={(e) => {\n const tools = e.target.checked\n ? [...step.params.tools, name]\n : step.params.tools.filter((t) => t !== name);\n onChange({\n params: { ...step.params, tools },\n });\n }}\n />\n <span className=\"flex flex-col gap-0.5 min-w-0\">\n <span>{toolSchema?.displayName ?? name}</span>\n {toolSchema?.description && (\n <span className=\"text-[11px] text-muted-foreground leading-snug\">\n {toolSchema.description}\n </span>\n )}\n </span>\n </label>\n );\n })}\n </div>\n ) : (\n <Input\n value={step.params.tools.join(\", \")}\n onChange={(e) =>\n onChange({\n params: {\n ...step.params,\n tools: e.target.value\n .split(\",\")\n .map((t) => t.trim())\n .filter(Boolean),\n },\n })\n }\n className=\"h-8 text-xs font-mono\"\n placeholder=\"tool1, tool2\"\n />\n )}\n </div>\n <JsonEditor\n label=\"Output Format (JSON Schema)\"\n value={step.params.outputFormat}\n onChange={(val) =>\n onChange({ params: { ...step.params, outputFormat: val } })\n }\n />\n </div>\n );\n}\n",
|
|
30
31
|
"import type { WorkflowStep } from \"@remoraflow/core\";\nimport { ExpressionEditor } from \"../expression-editor\";\nimport { JsonEditor } from \"../shared-editors\";\nimport type { Expression, StepOnChange } from \"./types\";\n\nexport function EndParams({\n step,\n onChange,\n workflowOutputSchema,\n onWorkflowMetaChange,\n}: {\n step: WorkflowStep & { type: \"end\" };\n onChange: StepOnChange;\n workflowOutputSchema?: object;\n onWorkflowMetaChange?: StepOnChange;\n}) {\n const hasOutput = !!step.params?.output;\n const hasSchema = !!workflowOutputSchema;\n return (\n <div className=\"space-y-3\">\n <label className=\"flex items-center gap-2.5 text-xs text-foreground cursor-pointer select-none group\">\n <input\n type=\"checkbox\"\n checked={hasOutput}\n onChange={(e) => {\n if (e.target.checked) {\n onChange({\n params: {\n output: { type: \"literal\", value: null },\n },\n });\n } else {\n onChange({ params: undefined } as Record<string, unknown>);\n }\n }}\n className=\"rounded border-border accent-foreground\"\n />\n Has output expression\n </label>\n {hasOutput && step.params?.output && (\n <ExpressionEditor\n label=\"Output\"\n value={step.params.output as Expression}\n onChange={(val) => onChange({ params: { output: val } })}\n />\n )}\n <label className=\"flex items-center gap-2.5 text-xs text-foreground cursor-pointer select-none group\">\n <input\n type=\"checkbox\"\n checked={hasSchema}\n onChange={(e) => {\n if (e.target.checked) {\n onWorkflowMetaChange?.({\n outputSchema: {\n type: \"object\",\n properties: {},\n },\n });\n } else {\n onWorkflowMetaChange?.({\n outputSchema: undefined,\n });\n }\n }}\n className=\"rounded border-border accent-foreground\"\n />\n Workflow has output schema\n </label>\n {hasSchema && workflowOutputSchema && (\n <JsonEditor\n label=\"Output Schema (JSON Schema)\"\n value={workflowOutputSchema}\n onChange={(val) => onWorkflowMetaChange?.({ outputSchema: val })}\n />\n )}\n </div>\n );\n}\n",
|
|
31
32
|
"import type { WorkflowStep } from \"@remoraflow/core\";\nimport { ExpressionEditor } from \"../expression-editor\";\nimport { JsonEditor } from \"../shared-editors\";\nimport type { Expression, StepOnChange } from \"./types\";\n\nexport function ExtractDataParams({\n step,\n onChange,\n}: {\n step: WorkflowStep & { type: \"extract-data\" };\n onChange: StepOnChange;\n}) {\n return (\n <div className=\"space-y-3\">\n <ExpressionEditor\n label=\"Source Data\"\n value={step.params.sourceData as Expression}\n onChange={(val) =>\n onChange({ params: { ...step.params, sourceData: val } })\n }\n />\n <JsonEditor\n label=\"Output Format (JSON Schema)\"\n value={step.params.outputFormat}\n onChange={(val) =>\n onChange({ params: { ...step.params, outputFormat: val } })\n }\n />\n </div>\n );\n}\n",
|
|
32
33
|
"import type { WorkflowStep } from \"@remoraflow/core\";\nimport { Input } from \"../../components/ui/input\";\nimport { Label } from \"../../panels/shared\";\nimport { ExpressionEditor } from \"../expression-editor\";\nimport { StepIdDropdown } from \"../shared-editors\";\nimport type { Expression, StepOnChange } from \"./types\";\n\nexport function ForEachParams({\n step,\n onChange,\n allStepIds,\n}: {\n step: WorkflowStep & { type: \"for-each\" };\n onChange: StepOnChange;\n allStepIds: string[];\n}) {\n return (\n <div className=\"space-y-3\">\n <ExpressionEditor\n label=\"Target Array\"\n value={step.params.target as Expression}\n onChange={(val) =>\n onChange({ params: { ...step.params, target: val } })\n }\n />\n <div>\n <Label>Item Variable Name</Label>\n <Input\n value={step.params.itemName}\n onChange={(e) =>\n onChange({\n params: { ...step.params, itemName: e.target.value },\n })\n }\n className=\"h-8 text-xs font-mono\"\n placeholder=\"item\"\n />\n </div>\n <StepIdDropdown\n label=\"Loop Body Step\"\n value={step.params.loopBodyStepId}\n onChange={(id) =>\n onChange({\n params: {\n ...step.params,\n loopBodyStepId: id,\n },\n })\n }\n stepIds={allStepIds}\n allowEmpty\n />\n </div>\n );\n}\n",
|
|
@@ -34,12 +35,12 @@
|
|
|
34
35
|
"import type { WorkflowStep } from \"@remoraflow/core\";\nimport { ExpressionEditor } from \"../expression-editor\";\nimport type { Expression, StepOnChange } from \"./types\";\n\nexport function SleepParams({\n step,\n onChange,\n}: {\n step: WorkflowStep & { type: \"sleep\" };\n onChange: StepOnChange;\n}) {\n return (\n <ExpressionEditor\n label=\"Duration (ms)\"\n value={step.params.durationMs as Expression}\n onChange={(val) =>\n onChange({ params: { ...step.params, durationMs: val } })\n }\n />\n );\n}\n",
|
|
35
36
|
"import { JsonEditor } from \"../shared-editors\";\nimport type { StepOnChange } from \"./types\";\n\nexport function StartParams({\n workflowInputSchema,\n onWorkflowMetaChange,\n}: {\n workflowInputSchema?: object;\n onWorkflowMetaChange?: StepOnChange;\n}) {\n const hasSchema = !!workflowInputSchema;\n return (\n <div className=\"space-y-3\">\n <label className=\"flex items-center gap-2.5 text-xs text-foreground cursor-pointer select-none group\">\n <input\n type=\"checkbox\"\n checked={hasSchema}\n className=\"rounded border-border accent-foreground\"\n onChange={(e) => {\n if (e.target.checked) {\n onWorkflowMetaChange?.({\n inputSchema: {\n type: \"object\",\n properties: {},\n },\n });\n } else {\n onWorkflowMetaChange?.({\n inputSchema: undefined,\n });\n }\n }}\n />\n Workflow has input schema\n </label>\n {hasSchema && workflowInputSchema && (\n <JsonEditor\n label=\"Input Schema (JSON Schema)\"\n value={workflowInputSchema}\n onChange={(val) => onWorkflowMetaChange?.({ inputSchema: val })}\n />\n )}\n </div>\n );\n}\n",
|
|
36
37
|
"import type { WorkflowStep } from \"@remoraflow/core\";\nimport { Button } from \"../../components/ui/button\";\nimport { Label } from \"../../panels/shared\";\nimport { ExpressionEditor } from \"../expression-editor\";\nimport { StepIdDropdown } from \"../shared-editors\";\nimport type { Expression, StepOnChange } from \"./types\";\n\nexport function SwitchCaseParams({\n step,\n onChange,\n allStepIds,\n}: {\n step: WorkflowStep & { type: \"switch-case\" };\n onChange: StepOnChange;\n allStepIds: string[];\n}) {\n return (\n <div className=\"space-y-3\">\n <ExpressionEditor\n label=\"Switch On\"\n value={step.params.switchOn as Expression}\n onChange={(val) =>\n onChange({ params: { ...step.params, switchOn: val } })\n }\n />\n <div>\n <Label>Cases</Label>\n <div className=\"space-y-2\">\n {step.params.cases.map((c, i) => (\n <div\n key={`case-${c.branchBodyStepId || \"empty\"}-${i}`}\n className=\"border border-border/70 rounded-lg p-3 space-y-2 bg-muted/20\"\n >\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs font-semibold text-foreground\">\n Case {i + 1}\n </span>\n <Button\n variant=\"ghost\"\n size=\"xs\"\n className=\"text-red-500 hover:text-red-700\"\n onClick={() => {\n const cases = step.params.cases.filter((_, j) => j !== i);\n onChange({\n params: { ...step.params, cases },\n });\n }}\n >\n remove\n </Button>\n </div>\n {c.value.type === \"default\" ? (\n <div className=\"text-xs text-muted-foreground italic\">\n default case\n </div>\n ) : (\n <ExpressionEditor\n label=\"Value\"\n value={c.value as Expression}\n onChange={(val) => {\n const cases = [...step.params.cases];\n cases[i] = { ...c, value: val as typeof c.value };\n onChange({\n params: { ...step.params, cases },\n });\n }}\n />\n )}\n <StepIdDropdown\n label=\"Branch Body Step\"\n value={c.branchBodyStepId}\n onChange={(id) => {\n const cases = [...step.params.cases];\n cases[i] = {\n ...c,\n branchBodyStepId: id,\n };\n onChange({\n params: { ...step.params, cases },\n });\n }}\n stepIds={allStepIds}\n allowEmpty\n />\n </div>\n ))}\n <div className=\"flex gap-1\">\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => {\n const cases = [\n ...step.params.cases,\n {\n value: {\n type: \"literal\" as const,\n value: \"\",\n },\n branchBodyStepId: \"\",\n },\n ];\n onChange({\n params: { ...step.params, cases },\n });\n }}\n >\n Add Case\n </Button>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => {\n const hasDefault = step.params.cases.some(\n (c) => c.value.type === \"default\",\n );\n if (hasDefault) return;\n const cases = [\n ...step.params.cases,\n {\n value: { type: \"default\" as const },\n branchBodyStepId: \"\",\n },\n ];\n onChange({\n params: { ...step.params, cases },\n });\n }}\n >\n Add Default\n </Button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n",
|
|
37
|
-
"import type { ToolDefinitionMap, WorkflowStep } from \"@remoraflow/core\";\nimport { useEffect, useRef } from \"react\";\nimport { Input } from \"../../components/ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../components/ui/select\";\nimport { Label } from \"../../panels/shared\";\nimport { ExpressionEditor } from \"../expression-editor\";\nimport type { Expression, StepOnChange } from \"./types\";\n\nexport function ToolCallParams({\n step,\n onChange,\n availableToolNames,\n toolSchemas,\n}: {\n step: WorkflowStep & { type: \"tool-call\" };\n onChange: StepOnChange;\n availableToolNames: string[];\n toolSchemas?: ToolDefinitionMap;\n}) {\n const schema = toolSchemas?.[step.params.toolName];\n const schemaKeys = schema?.inputSchema.properties\n ? Object.keys(schema.inputSchema.properties)\n : null;\n const requiredKeys = new Set(schema?.inputSchema.required ?? []);\n\n // When tool name changes, auto-populate missing
|
|
38
|
+
"import type { ToolDefinitionMap, WorkflowStep } from \"@remoraflow/core\";\nimport { Plus, X } from \"lucide-react\";\nimport { useEffect, useRef } from \"react\";\nimport { Input } from \"../../components/ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../components/ui/select\";\nimport { Label } from \"../../panels/shared\";\nimport { ExpressionEditor } from \"../expression-editor\";\nimport type { Expression, StepOnChange } from \"./types\";\n\ntype PropSchema = {\n description?: string;\n type?: string;\n enum?: string[];\n default?: unknown;\n};\n\nfunction formatDefaultSummary(value: unknown): string {\n if (typeof value === \"string\") return value;\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\nexport function ToolCallParams({\n step,\n onChange,\n availableToolNames,\n toolSchemas,\n}: {\n step: WorkflowStep & { type: \"tool-call\" };\n onChange: StepOnChange;\n availableToolNames: string[];\n toolSchemas?: ToolDefinitionMap;\n}) {\n const schema = toolSchemas?.[step.params.toolName];\n const schemaKeys = schema?.inputSchema.properties\n ? Object.keys(schema.inputSchema.properties)\n : null;\n const requiredKeys = new Set(schema?.inputSchema.required ?? []);\n\n // When tool name changes, auto-populate missing *required* params and drop\n // any entries that don't belong to the new schema. Optional inputs are left\n // to the user to add explicitly.\n const prevToolNameRef = useRef(step.params.toolName);\n useEffect(() => {\n if (step.params.toolName === prevToolNameRef.current) return;\n prevToolNameRef.current = step.params.toolName;\n\n const newSchema = toolSchemas?.[step.params.toolName];\n if (!newSchema?.inputSchema.properties) return;\n\n const newRequired = new Set(newSchema.inputSchema.required ?? []);\n const newProps = newSchema.inputSchema.properties;\n const newInput: Record<string, Expression> = {};\n for (const key of Object.keys(newProps)) {\n const existing = step.params.toolInput[key] as Expression | undefined;\n if (existing) {\n newInput[key] = existing;\n } else if (newRequired.has(key)) {\n newInput[key] = { type: \"literal\", value: \"\" };\n }\n }\n onChange({ params: { ...step.params, toolInput: newInput } });\n }, [\n step.params.toolName,\n step.params.toolInput,\n toolSchemas,\n onChange,\n step.params,\n ]);\n\n const toolInput = step.params.toolInput;\n\n // Keys that currently have a value in toolInput — always render these.\n // When a schema is known, order required keys first (by schema order),\n // then any present optional keys (by schema order), then extra keys not\n // in the schema last.\n const presentKeys = schemaKeys\n ? [\n ...schemaKeys.filter((k) => requiredKeys.has(k) || k in toolInput),\n ...Object.keys(toolInput).filter(\n (k) => !schemaKeys.includes(k) && !requiredKeys.has(k),\n ),\n ]\n : Object.keys(toolInput);\n\n // Optional schema keys the user has not added yet.\n const absentOptionalKeys =\n schemaKeys?.filter((k) => !requiredKeys.has(k) && !(k in toolInput)) ?? [];\n\n function setInput(key: string, val: Expression) {\n onChange({\n params: {\n ...step.params,\n toolInput: { ...toolInput, [key]: val },\n },\n });\n }\n\n function removeInput(key: string) {\n const next = { ...toolInput };\n delete next[key];\n onChange({ params: { ...step.params, toolInput: next } });\n }\n\n function addOptional(key: string) {\n const propSchema = schema?.inputSchema.properties?.[key] as\n | PropSchema\n | undefined;\n const seed = propSchema?.default !== undefined ? propSchema.default : \"\";\n setInput(key, { type: \"literal\", value: seed });\n }\n\n return (\n <div className=\"space-y-3\">\n <div>\n <Label>Tool Name</Label>\n {availableToolNames.length > 0 ? (\n <Select\n value={step.params.toolName}\n onValueChange={(val) =>\n onChange({\n params: { ...step.params, toolName: val },\n })\n }\n >\n <SelectTrigger className=\"h-8 text-xs font-mono w-full\">\n <SelectValue placeholder=\"-- select tool --\" />\n </SelectTrigger>\n <SelectContent>\n {availableToolNames.map((name) => {\n const toolSchema = toolSchemas?.[name];\n return (\n <SelectItem\n key={name}\n value={name}\n description={toolSchema?.description}\n >\n {toolSchema?.displayName ?? name}\n </SelectItem>\n );\n })}\n </SelectContent>\n </Select>\n ) : (\n <Input\n value={step.params.toolName}\n onChange={(e) =>\n onChange({\n params: { ...step.params, toolName: e.target.value },\n })\n }\n className=\"h-8 text-xs font-mono\"\n placeholder=\"tool-name\"\n />\n )}\n </div>\n {schema?.description && (\n <p className=\"text-[11px] text-muted-foreground leading-snug\">\n {schema.description}\n </p>\n )}\n {presentKeys.length > 0 && (\n <div>\n <Label>Tool Inputs</Label>\n <div className=\"space-y-2\">\n {presentKeys.map((key) => {\n const expr = toolInput[key] as Expression | undefined;\n const isRequired = requiredKeys.has(key);\n const propSchema = schema?.inputSchema.properties?.[key] as\n | PropSchema\n | undefined;\n return (\n <div\n key={key}\n className=\"border border-border/70 rounded-lg p-3 bg-muted/20\"\n >\n <div className=\"flex items-center gap-1.5 mb-1.5\">\n <span className=\"text-xs font-mono font-medium text-foreground\">\n {key}\n </span>\n {isRequired && (\n <span className=\"text-[10px] font-semibold text-red-500 bg-red-50 dark:bg-red-950/30 px-1.5 py-0.5 rounded\">\n required\n </span>\n )}\n {!isRequired && propSchema?.default !== undefined && (\n <span\n className=\"text-[10px] font-mono text-muted-foreground\"\n title=\"Value used when this input is omitted\"\n >\n default: {formatDefaultSummary(propSchema.default)}\n </span>\n )}\n {!isRequired && (\n <button\n type=\"button\"\n onClick={() => removeInput(key)}\n className=\"ml-auto text-muted-foreground hover:text-foreground rounded p-0.5 hover:bg-muted/60\"\n title=\"Remove optional input\"\n aria-label={`Remove ${key}`}\n >\n <X className=\"w-3 h-3\" />\n </button>\n )}\n </div>\n {propSchema?.description && (\n <p className=\"text-[10px] text-muted-foreground mb-2 leading-relaxed\">\n {propSchema.description}\n </p>\n )}\n <ExpressionEditor\n value={expr ?? { type: \"literal\" as const, value: \"\" }}\n onChange={(val) => setInput(key, val)}\n schemaHint={propSchema}\n />\n </div>\n );\n })}\n </div>\n </div>\n )}\n {absentOptionalKeys.length > 0 && (\n <div>\n <Label>Optional Inputs</Label>\n <div className=\"flex flex-wrap gap-1.5\">\n {absentOptionalKeys.map((key) => {\n const propSchema = schema?.inputSchema.properties?.[key] as\n | PropSchema\n | undefined;\n const hasDefault = propSchema?.default !== undefined;\n const titleParts = [propSchema?.description];\n if (hasDefault) {\n titleParts.push(\n `Default: ${formatDefaultSummary(propSchema?.default)}`,\n );\n }\n const title = titleParts.filter(Boolean).join(\" — \");\n return (\n <button\n key={key}\n type=\"button\"\n onClick={() => addOptional(key)}\n title={title || undefined}\n className=\"inline-flex items-center gap-1 text-[11px] font-mono text-muted-foreground hover:text-foreground border border-dashed border-border hover:border-ring rounded-md px-2 py-1 transition-colors\"\n >\n <Plus className=\"w-3 h-3\" />\n {key}\n {hasDefault && (\n <span className=\"text-muted-foreground/70\">\n = {formatDefaultSummary(propSchema?.default)}\n </span>\n )}\n </button>\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n}\n",
|
|
38
39
|
"import type { WorkflowStep } from \"@remoraflow/core\";\nimport { ExpressionEditor } from \"../expression-editor\";\nimport { StepIdDropdown } from \"../shared-editors\";\nimport type { Expression, StepOnChange } from \"./types\";\n\nexport function WaitForConditionParams({\n step,\n onChange,\n allStepIds,\n}: {\n step: WorkflowStep & { type: \"wait-for-condition\" };\n onChange: StepOnChange;\n allStepIds: string[];\n}) {\n return (\n <div className=\"space-y-3\">\n <StepIdDropdown\n label=\"Condition Step\"\n value={step.params.conditionStepId}\n onChange={(id) =>\n onChange({\n params: {\n ...step.params,\n conditionStepId: id,\n },\n })\n }\n stepIds={allStepIds}\n allowEmpty\n />\n <ExpressionEditor\n label=\"Condition\"\n value={step.params.condition as Expression}\n onChange={(val) =>\n onChange({ params: { ...step.params, condition: val } })\n }\n />\n {step.params.maxAttempts && (\n <ExpressionEditor\n label=\"Max Attempts\"\n value={step.params.maxAttempts as Expression}\n onChange={(val) =>\n onChange({\n params: { ...step.params, maxAttempts: val },\n })\n }\n />\n )}\n {step.params.intervalMs && (\n <ExpressionEditor\n label=\"Interval (ms)\"\n value={step.params.intervalMs as Expression}\n onChange={(val) =>\n onChange({\n params: { ...step.params, intervalMs: val },\n })\n }\n />\n )}\n </div>\n );\n}\n",
|
|
39
|
-
"import type {\n Diagnostic,\n ToolDefinitionMap,\n WorkflowStep,\n} from \"@remoraflow/core\";\nimport { Input } from \"../components/ui/input\";\nimport { Textarea } from \"../components/ui/textarea\";\nimport { AgentLoopParams } from \"../editors/params/agent-loop-params\";\nimport { EndParams } from \"../editors/params/end-params\";\nimport { ExtractDataParams } from \"../editors/params/extract-data-params\";\nimport { ForEachParams } from \"../editors/params/for-each-params\";\nimport { LlmPromptParams } from \"../editors/params/llm-prompt-params\";\nimport { SleepParams } from \"../editors/params/sleep-params\";\nimport { StartParams } from \"../editors/params/start-params\";\nimport { SwitchCaseParams } from \"../editors/params/switch-case-params\";\nimport { ToolCallParams } from \"../editors/params/tool-call-params\";\nimport { WaitForConditionParams } from \"../editors/params/wait-for-condition-params\";\nimport { StepIdInput } from \"../editors/shared-editors\";\nimport { Label, SectionHeader, TypeBadge } from \"./shared\";\n\nexport interface StepEditorPanelProps {\n step: WorkflowStep;\n availableToolNames: string[];\n allStepIds: string[];\n toolSchemas?: ToolDefinitionMap;\n diagnostics?: Diagnostic[];\n workflowInputSchema?: object;\n workflowOutputSchema?: object;\n onChange: (updates: Record<string, unknown>) => void;\n onWorkflowMetaChange?: (updates: Record<string, unknown>) => void;\n onClose: () => void;\n}\n\nfunction StepParamsEditor({\n step,\n onChange,\n availableToolNames,\n allStepIds,\n toolSchemas,\n workflowInputSchema,\n workflowOutputSchema,\n onWorkflowMetaChange,\n}: {\n step: WorkflowStep;\n onChange: StepEditorPanelProps[\"onChange\"];\n availableToolNames: string[];\n allStepIds: string[];\n toolSchemas?: ToolDefinitionMap;\n workflowInputSchema?: object;\n workflowOutputSchema?: object;\n onWorkflowMetaChange?: StepEditorPanelProps[\"onWorkflowMetaChange\"];\n}) {\n switch (step.type) {\n case \"tool-call\":\n return (\n <ToolCallParams\n step={step}\n onChange={onChange}\n availableToolNames={availableToolNames}\n toolSchemas={toolSchemas}\n />\n );\n case \"llm-prompt\":\n return <LlmPromptParams step={step} onChange={onChange} />;\n case \"extract-data\":\n return <ExtractDataParams step={step} onChange={onChange} />;\n case \"switch-case\":\n return (\n <SwitchCaseParams\n step={step}\n onChange={onChange}\n allStepIds={allStepIds}\n />\n );\n case \"for-each\":\n return (\n <ForEachParams\n step={step}\n onChange={onChange}\n allStepIds={allStepIds}\n />\n );\n case \"sleep\":\n return <SleepParams step={step} onChange={onChange} />;\n case \"wait-for-condition\":\n return (\n <WaitForConditionParams\n step={step}\n onChange={onChange}\n allStepIds={allStepIds}\n />\n );\n case \"agent-loop\":\n return (\n <AgentLoopParams\n step={step}\n onChange={onChange}\n availableToolNames={availableToolNames}\n />\n );\n case \"end\":\n return (\n <EndParams\n step={step}\n onChange={onChange}\n workflowOutputSchema={workflowOutputSchema}\n onWorkflowMetaChange={onWorkflowMetaChange}\n />\n );\n case \"start\":\n return (\n <StartParams\n workflowInputSchema={workflowInputSchema}\n onWorkflowMetaChange={onWorkflowMetaChange}\n />\n );\n }\n}\n\nfunction DiagnosticsSection({ diagnostics }: { diagnostics: Diagnostic[] }) {\n if (diagnostics.length === 0) return null;\n const errors = diagnostics.filter((d) => d.severity === \"error\");\n const warnings = diagnostics.filter((d) => d.severity === \"warning\");\n\n return (\n <div className=\"space-y-1.5\">\n {errors.map((d, i) => (\n <div\n key={`err-${d.code}-${i}`}\n className=\"flex gap-2 items-start text-[11px] text-red-700 dark:text-red-300 bg-red-50 dark:bg-red-950/30 rounded-md px-2.5 py-2 border border-red-200/80 dark:border-red-900/60\"\n >\n <span className=\"shrink-0 font-semibold bg-red-100 dark:bg-red-900/50 px-1.5 py-0.5 rounded text-[10px]\">\n Error\n </span>\n <span className=\"leading-relaxed\">{d.message}</span>\n </div>\n ))}\n {warnings.map((d, i) => (\n <div\n key={`warn-${d.code}-${i}`}\n className=\"flex gap-2 items-start text-[11px] text-amber-700 dark:text-amber-300 bg-amber-50 dark:bg-amber-950/30 rounded-md px-2.5 py-2 border border-amber-200/80 dark:border-amber-900/60\"\n >\n <span className=\"shrink-0 font-semibold bg-amber-100 dark:bg-amber-900/50 px-1.5 py-0.5 rounded text-[10px]\">\n Warn\n </span>\n <span className=\"leading-relaxed\">{d.message}</span>\n </div>\n ))}\n </div>\n );\n}\n\nexport function StepEditorPanel({\n step,\n availableToolNames,\n allStepIds,\n toolSchemas,\n diagnostics = [],\n workflowInputSchema,\n workflowOutputSchema,\n onChange,\n onWorkflowMetaChange,\n onClose,\n}: StepEditorPanelProps) {\n return (\n <div className=\"w-[360px] border-l h-full min-h-0 overflow-y-auto bg-card border-border\">\n <div className=\"sticky top-0 z-10 border-b px-4 py-3 flex items-center justify-between bg-card/95 backdrop-blur-sm border-border\">\n <TypeBadge type={step.type} />\n <button\n type=\"button\"\n onClick={onClose}\n className=\"text-lg leading-none text-muted-foreground hover:text-foreground shrink-0 rounded-md w-7 h-7 flex items-center justify-center hover:bg-muted transition-colors\"\n >\n ×\n </button>\n </div>\n\n <div className=\"px-4 py-4 space-y-5\">\n <DiagnosticsSection diagnostics={diagnostics} />\n\n <div>\n <Label>Name</Label>\n <Input\n value={step.name}\n onChange={(e) => onChange({ name: e.target.value })}\n className=\"h-9 text-sm\"\n placeholder=\"Step name\"\n />\n </div>\n\n <StepIdInput value={step.id} onChange={(id) => onChange({ id })} />\n\n <div>\n <Label>Description</Label>\n <Textarea\n value={step.description}\n onChange={(e) => onChange({ description: e.target.value })}\n rows={2}\n className=\"text-xs resize-y\"\n placeholder=\"What does this step do?\"\n />\n </div>\n\n <div className=\"border-t pt-4 border-border\">\n <SectionHeader>Parameters</SectionHeader>\n <StepParamsEditor\n step={step}\n onChange={onChange}\n availableToolNames={availableToolNames}\n allStepIds={allStepIds}\n toolSchemas={toolSchemas}\n workflowInputSchema={workflowInputSchema}\n workflowOutputSchema={workflowOutputSchema}\n onWorkflowMetaChange={onWorkflowMetaChange}\n />\n </div>\n </div>\n </div>\n );\n}\n",
|
|
40
|
+
"import type {\n Diagnostic,\n ToolDefinitionMap,\n WorkflowStep,\n} from \"@remoraflow/core\";\nimport { Input } from \"../components/ui/input\";\nimport { Textarea } from \"../components/ui/textarea\";\nimport { AgentLoopParams } from \"../editors/params/agent-loop-params\";\nimport { EndParams } from \"../editors/params/end-params\";\nimport { ExtractDataParams } from \"../editors/params/extract-data-params\";\nimport { ForEachParams } from \"../editors/params/for-each-params\";\nimport { LlmPromptParams } from \"../editors/params/llm-prompt-params\";\nimport { SleepParams } from \"../editors/params/sleep-params\";\nimport { StartParams } from \"../editors/params/start-params\";\nimport { SwitchCaseParams } from \"../editors/params/switch-case-params\";\nimport { ToolCallParams } from \"../editors/params/tool-call-params\";\nimport { WaitForConditionParams } from \"../editors/params/wait-for-condition-params\";\nimport { StepIdInput } from \"../editors/shared-editors\";\nimport { Label, SectionHeader, TypeBadge } from \"./shared\";\n\nexport interface StepEditorPanelProps {\n step: WorkflowStep;\n availableToolNames: string[];\n allStepIds: string[];\n toolSchemas?: ToolDefinitionMap;\n diagnostics?: Diagnostic[];\n workflowInputSchema?: object;\n workflowOutputSchema?: object;\n onChange: (updates: Record<string, unknown>) => void;\n onWorkflowMetaChange?: (updates: Record<string, unknown>) => void;\n onClose: () => void;\n}\n\nfunction StepParamsEditor({\n step,\n onChange,\n availableToolNames,\n allStepIds,\n toolSchemas,\n workflowInputSchema,\n workflowOutputSchema,\n onWorkflowMetaChange,\n}: {\n step: WorkflowStep;\n onChange: StepEditorPanelProps[\"onChange\"];\n availableToolNames: string[];\n allStepIds: string[];\n toolSchemas?: ToolDefinitionMap;\n workflowInputSchema?: object;\n workflowOutputSchema?: object;\n onWorkflowMetaChange?: StepEditorPanelProps[\"onWorkflowMetaChange\"];\n}) {\n switch (step.type) {\n case \"tool-call\":\n return (\n <ToolCallParams\n step={step}\n onChange={onChange}\n availableToolNames={availableToolNames}\n toolSchemas={toolSchemas}\n />\n );\n case \"llm-prompt\":\n return <LlmPromptParams step={step} onChange={onChange} />;\n case \"extract-data\":\n return <ExtractDataParams step={step} onChange={onChange} />;\n case \"switch-case\":\n return (\n <SwitchCaseParams\n step={step}\n onChange={onChange}\n allStepIds={allStepIds}\n />\n );\n case \"for-each\":\n return (\n <ForEachParams\n step={step}\n onChange={onChange}\n allStepIds={allStepIds}\n />\n );\n case \"sleep\":\n return <SleepParams step={step} onChange={onChange} />;\n case \"wait-for-condition\":\n return (\n <WaitForConditionParams\n step={step}\n onChange={onChange}\n allStepIds={allStepIds}\n />\n );\n case \"agent-loop\":\n return (\n <AgentLoopParams\n step={step}\n onChange={onChange}\n availableToolNames={availableToolNames}\n toolSchemas={toolSchemas}\n />\n );\n case \"end\":\n return (\n <EndParams\n step={step}\n onChange={onChange}\n workflowOutputSchema={workflowOutputSchema}\n onWorkflowMetaChange={onWorkflowMetaChange}\n />\n );\n case \"start\":\n return (\n <StartParams\n workflowInputSchema={workflowInputSchema}\n onWorkflowMetaChange={onWorkflowMetaChange}\n />\n );\n }\n}\n\nfunction DiagnosticsSection({ diagnostics }: { diagnostics: Diagnostic[] }) {\n if (diagnostics.length === 0) return null;\n const errors = diagnostics.filter((d) => d.severity === \"error\");\n const warnings = diagnostics.filter((d) => d.severity === \"warning\");\n\n return (\n <div className=\"space-y-1.5\">\n {errors.map((d, i) => (\n <div\n key={`err-${d.code}-${i}`}\n className=\"flex gap-2 items-start text-[11px] text-red-700 dark:text-red-300 bg-red-50 dark:bg-red-950/30 rounded-md px-2.5 py-2 border border-red-200/80 dark:border-red-900/60\"\n >\n <span className=\"shrink-0 font-semibold bg-red-100 dark:bg-red-900/50 px-1.5 py-0.5 rounded text-[10px]\">\n Error\n </span>\n <span className=\"leading-relaxed\">{d.message}</span>\n </div>\n ))}\n {warnings.map((d, i) => (\n <div\n key={`warn-${d.code}-${i}`}\n className=\"flex gap-2 items-start text-[11px] text-amber-700 dark:text-amber-300 bg-amber-50 dark:bg-amber-950/30 rounded-md px-2.5 py-2 border border-amber-200/80 dark:border-amber-900/60\"\n >\n <span className=\"shrink-0 font-semibold bg-amber-100 dark:bg-amber-900/50 px-1.5 py-0.5 rounded text-[10px]\">\n Warn\n </span>\n <span className=\"leading-relaxed\">{d.message}</span>\n </div>\n ))}\n </div>\n );\n}\n\nexport function StepEditorPanel({\n step,\n availableToolNames,\n allStepIds,\n toolSchemas,\n diagnostics = [],\n workflowInputSchema,\n workflowOutputSchema,\n onChange,\n onWorkflowMetaChange,\n onClose,\n}: StepEditorPanelProps) {\n return (\n <div className=\"w-[360px] border-l h-full min-h-0 overflow-y-auto bg-card border-border\">\n <div className=\"sticky top-0 z-10 border-b px-4 py-3 flex items-center justify-between bg-card/95 backdrop-blur-sm border-border\">\n <TypeBadge type={step.type} />\n <button\n type=\"button\"\n onClick={onClose}\n className=\"text-lg leading-none text-muted-foreground hover:text-foreground shrink-0 rounded-md w-7 h-7 flex items-center justify-center hover:bg-muted transition-colors\"\n >\n ×\n </button>\n </div>\n\n <div className=\"px-4 py-4 space-y-5\">\n <DiagnosticsSection diagnostics={diagnostics} />\n\n <div>\n <Label>Name</Label>\n <Input\n value={step.name}\n onChange={(e) => onChange({ name: e.target.value })}\n className=\"h-9 text-sm\"\n placeholder=\"Step name\"\n />\n </div>\n\n <StepIdInput value={step.id} onChange={(id) => onChange({ id })} />\n\n <div>\n <Label>Description</Label>\n <Textarea\n value={step.description}\n onChange={(e) => onChange({ description: e.target.value })}\n rows={2}\n className=\"text-xs resize-y\"\n placeholder=\"What does this step do?\"\n />\n </div>\n\n <div className=\"border-t pt-4 border-border\">\n <SectionHeader>Parameters</SectionHeader>\n <StepParamsEditor\n step={step}\n onChange={onChange}\n availableToolNames={availableToolNames}\n allStepIds={allStepIds}\n toolSchemas={toolSchemas}\n workflowInputSchema={workflowInputSchema}\n workflowOutputSchema={workflowOutputSchema}\n onWorkflowMetaChange={onWorkflowMetaChange}\n />\n </div>\n </div>\n </div>\n );\n}\n",
|
|
40
41
|
"import { useEffect, useState } from \"react\";\n\n/**\n * Detects dark mode by observing the `dark` class on `<html>`,\n * following the shadcn/Tailwind convention (`darkMode: \"class\"`).\n */\nexport function useDarkMode(): boolean {\n const [dark, setDark] = useState(\n () =>\n typeof document !== \"undefined\" &&\n document.documentElement.classList.contains(\"dark\"),\n );\n\n useEffect(() => {\n const el = document.documentElement;\n const observer = new MutationObserver(() => {\n setDark(el.classList.contains(\"dark\"));\n });\n observer.observe(el, { attributes: true, attributeFilter: [\"class\"] });\n setDark(el.classList.contains(\"dark\"));\n return () => observer.disconnect();\n }, []);\n\n return dark;\n}\n",
|
|
41
42
|
"import type { WorkflowStep } from \"@remoraflow/core\";\n\nlet counter = 0;\n\nfunction nextId(type: string, existingIds?: Set<string>): string {\n counter++;\n let id = `${type.replace(/-/g, \"_\")}_${counter}`;\n if (existingIds) {\n while (existingIds.has(id)) {\n counter++;\n id = `${type.replace(/-/g, \"_\")}_${counter}`;\n }\n }\n return id;\n}\n\n/** Reset the auto-increment counter (useful for tests). */\nexport function resetStepCounter(): void {\n counter = 0;\n}\n\n/** Create a new step with sensible defaults for the given type. */\nexport function createDefaultStep(\n type: WorkflowStep[\"type\"],\n id?: string,\n existingIds?: Set<string>,\n): WorkflowStep {\n const base = {\n id: id ?? nextId(type, existingIds),\n name: defaultName(type),\n description: \"\",\n };\n\n switch (type) {\n case \"start\":\n return { ...base, type: \"start\" };\n case \"end\":\n return { ...base, type: \"end\" };\n case \"tool-call\":\n return {\n ...base,\n type: \"tool-call\",\n params: { toolName: \"\", toolInput: {} },\n };\n case \"llm-prompt\":\n return {\n ...base,\n type: \"llm-prompt\",\n params: {\n prompt: \"\",\n outputFormat: {\n type: \"object\",\n properties: { result: { type: \"string\" } },\n required: [\"result\"],\n },\n },\n };\n case \"extract-data\":\n return {\n ...base,\n type: \"extract-data\",\n params: {\n sourceData: { type: \"literal\", value: \"\" },\n outputFormat: {\n type: \"object\",\n properties: { result: { type: \"string\" } },\n required: [\"result\"],\n },\n },\n };\n case \"switch-case\":\n return {\n ...base,\n type: \"switch-case\",\n params: {\n switchOn: { type: \"literal\", value: \"\" },\n cases: [{ value: { type: \"default\" }, branchBodyStepId: \"\" }],\n },\n };\n case \"for-each\":\n return {\n ...base,\n type: \"for-each\",\n params: {\n target: { type: \"literal\", value: [] },\n itemName: \"item\",\n loopBodyStepId: \"\",\n },\n };\n case \"sleep\":\n return {\n ...base,\n type: \"sleep\",\n params: { durationMs: { type: \"literal\", value: 1000 } },\n };\n case \"wait-for-condition\":\n return {\n ...base,\n type: \"wait-for-condition\",\n params: {\n conditionStepId: \"\",\n condition: { type: \"literal\", value: false },\n },\n };\n case \"agent-loop\":\n return {\n ...base,\n type: \"agent-loop\",\n params: {\n instructions: \"\",\n tools: [],\n outputFormat: {\n type: \"object\",\n properties: { result: { type: \"string\" } },\n required: [\"result\"],\n },\n },\n };\n }\n}\n\nfunction defaultName(type: WorkflowStep[\"type\"]): string {\n const names: Record<WorkflowStep[\"type\"], string> = {\n start: \"Start\",\n end: \"End\",\n \"tool-call\": \"Tool Call\",\n \"llm-prompt\": \"LLM Prompt\",\n \"extract-data\": \"Extract Data\",\n \"switch-case\": \"Switch Case\",\n \"for-each\": \"For Each\",\n sleep: \"Sleep\",\n \"wait-for-condition\": \"Wait for Condition\",\n \"agent-loop\": \"Agent Loop\",\n };\n return names[type];\n}\n",
|
|
42
|
-
"import {\n compileWorkflow,\n type Diagnostic,\n type ExecutionState,\n extractToolSchemas,\n type ToolDefinitionMap,\n type WorkflowDefinition,\n type WorkflowStep,\n} from \"@remoraflow/core\";\nimport {\n Background,\n type Connection,\n Controls,\n type EdgeTypes,\n MiniMap,\n type NodeTypes,\n type OnNodesChange,\n ReactFlow,\n useEdgesState,\n useNodes,\n useNodesState,\n useReactFlow,\n useUpdateNodeInternals,\n} from \"@xyflow/react\";\nimport type { ToolSet } from \"ai\";\nimport { Braces, LayoutGrid } from \"lucide-react\";\nimport type React from \"react\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { CanvasContextMenu } from \"./components/canvas-context-menu\";\nimport { StepPalette } from \"./components/step-palette\";\nimport { WorkflowJsonDialog } from \"./components/workflow-json-dialog\";\nimport { WorkflowEdge } from \"./edges/workflow-edge\";\nimport { EditContext } from \"./edit-context\";\nimport {\n buildEditableLayout,\n buildLayout,\n GROUP_HEADER,\n GROUP_PADDING,\n type LayoutDirection,\n} from \"./graph-layout\";\nimport { useContextMenu } from \"./hooks/use-context-menu\";\nimport { useEditableWorkflow } from \"./hooks/use-editable-workflow\";\nimport { useSelectionState } from \"./hooks/use-selection-state\";\nimport { AgentLoopNode } from \"./nodes/agent-loop-node\";\nimport { EndNode } from \"./nodes/end-node\";\nimport { ExtractDataNode } from \"./nodes/extract-data-node\";\nimport { ForEachNode } from \"./nodes/for-each-node\";\nimport { GroupHeaderNode } from \"./nodes/group-header-node\";\nimport { LlmPromptNode } from \"./nodes/llm-prompt-node\";\nimport { SleepNode } from \"./nodes/sleep-node\";\nimport { StartNode } from \"./nodes/start-node\";\nimport { StartStepNode } from \"./nodes/start-step-node\";\nimport { SwitchCaseNode } from \"./nodes/switch-case-node\";\nimport { ToolCallNode } from \"./nodes/tool-call-node\";\nimport { WaitForConditionNode } from \"./nodes/wait-for-condition-node\";\nimport { StepDetailPanel } from \"./panels/step-detail-panel\";\nimport { StepEditorPanel } from \"./panels/step-editor-panel\";\nimport { groupStructuralKey } from \"./utils/group-refs\";\nimport { createDefaultStep } from \"./utils/step-defaults\";\n\nconst nodeTypes: NodeTypes = {\n toolCall: ToolCallNode,\n llmPrompt: LlmPromptNode,\n extractData: ExtractDataNode,\n switchCase: SwitchCaseNode,\n groupHeader: GroupHeaderNode,\n forEach: ForEachNode,\n end: EndNode,\n start: StartNode,\n startStep: StartStepNode,\n sleep: SleepNode,\n waitForCondition: WaitForConditionNode,\n agentLoop: AgentLoopNode,\n};\n\nconst edgeTypes: EdgeTypes = {\n workflow: WorkflowEdge,\n};\n\nimport { EMPTY_DIAGNOSTICS } from \"./hooks/use-selection-state\";\n\nconst FIT_VIEW_OPTIONS = { padding: 0.2, maxZoom: 1 };\n\n/**\n * Forces React Flow to recalculate handle positions when layout direction\n * changes so edges connect at the correct side (left/right vs top/bottom).\n * Must be rendered inside `<ReactFlow>` to access the React Flow context.\n */\nfunction HandlePositionUpdater({ direction }: { direction: LayoutDirection }) {\n const nodes = useNodes();\n const updateNodeInternals = useUpdateNodeInternals();\n const { fitView } = useReactFlow();\n const appliedDirection = useRef(direction);\n\n useEffect(() => {\n // Check if any node's layoutDirection differs from what we last applied.\n const needsUpdate = nodes.some((n) => {\n const d = (n.data as Record<string, unknown>)?.layoutDirection;\n return d !== undefined && d !== appliedDirection.current;\n });\n if (!needsUpdate) return;\n\n appliedDirection.current = direction;\n const ids = nodes.map((n) => n.id);\n if (ids.length === 0) return;\n\n const raf = requestAnimationFrame(() => {\n updateNodeInternals(ids);\n fitView(FIT_VIEW_OPTIONS);\n });\n return () => cancelAnimationFrame(raf);\n }, [direction, nodes, updateNodeInternals, fitView]);\n\n return null;\n}\n\n/** Props for the {@link WorkflowViewer} component. */\nexport interface WorkflowViewerProps {\n /** The workflow definition to visualize. Pass `null` to start with an empty canvas (requires `isEditing`). */\n workflow: WorkflowDefinition | null;\n /** Compiler diagnostics to display on affected nodes. */\n diagnostics?: Diagnostic[];\n /** Called when a step node is clicked (with the step and its diagnostics) or when the selection is cleared (with `null`). */\n onStepSelect?: (step: WorkflowStep | null, diagnostics: Diagnostic[]) => void;\n /** Execution state to visualize on the workflow DAG. */\n executionState?: ExecutionState;\n /** Whether to show the minimap. @default true */\n showMinimap?: boolean;\n /** Width of the minimap in pixels (capped at 25% of viewer width). @default 200 */\n minimapWidth?: number;\n /** Height of the minimap in pixels. @default 150 */\n minimapHeight?: number;\n /** Whether the workflow execution is currently paused. */\n paused?: boolean;\n /** Enable editing mode. When true, nodes are draggable and editable. */\n isEditing?: boolean;\n /** Called when the workflow is modified in edit mode. */\n onWorkflowChange?: (workflow: WorkflowDefinition) => void;\n /** Tool definitions (AI SDK ToolSet). Used for tool name autocomplete in the editor. Execute functions are optional. */\n tools?: ToolSet;\n /** Pre-extracted tool schemas. When provided, skips extracting schemas from `tools`. */\n toolSchemas?: ToolDefinitionMap;\n /** Hide the built-in detail/editor panel. Use this when rendering `StepDetailPanel` or `StepEditorPanel` externally. */\n hideDetailPanel?: boolean;\n /** Controls whether the DAG flows top-to-bottom (`\"vertical\"`) or left-to-right (`\"horizontal\"`). @see {@link LayoutDirection} */\n layout?: LayoutDirection;\n}\n\n/**\n * React component that renders a workflow as an interactive DAG using React Flow.\n * Supports step selection via callback, minimap, and zoom controls.\n *\n * Dark mode is detected automatically via the `dark` class on `<html>`,\n * following the shadcn/Tailwind convention (`darkMode: \"class\"`).\n *\n * Requires `@xyflow/react` as a peer dependency.\n */\nexport function WorkflowViewer({\n workflow,\n diagnostics = EMPTY_DIAGNOSTICS,\n onStepSelect,\n executionState,\n paused = false,\n showMinimap = true,\n minimapWidth = 200,\n minimapHeight = 150,\n isEditing = false,\n onWorkflowChange,\n tools,\n toolSchemas: toolSchemasProp,\n hideDetailPanel = false,\n layout: direction = \"vertical\",\n}: WorkflowViewerProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState(0);\n\n // --- Editing operations ---\n const {\n workingWorkflow,\n addStep,\n removeStep,\n updateStep,\n connectSteps,\n disconnectStep,\n updateWorkflowMeta,\n } = useEditableWorkflow({ workflow, onWorkflowChange });\n\n const [showJsonDialog, setShowJsonDialog] = useState(false);\n\n const activeWorkflow = isEditing ? workingWorkflow : workflow;\n const positionOverridesRef = useRef<Map<string, { x: number; y: number }>>(\n new Map(),\n );\n const dimensionOverridesRef = useRef<\n Map<string, { width: number; height: number }>\n >(new Map());\n\n // Real DOM dimensions captured from React Flow's onNodesChange events,\n // used instead of heuristic estimates for accurate dagre sizing.\n const measuredDimensionsRef = useRef<\n Map<string, { width: number; height: number }>\n >(new Map());\n const initialMeasureDoneRef = useRef(false);\n // Hidden until the first measurement-based re-layout completes to\n // avoid flashing the heuristic-estimated layout.\n const [layoutReady, setLayoutReady] = useState(false);\n\n // --- Tool schemas ---\n const [toolSchemas, setToolSchemas] = useState<ToolDefinitionMap>({});\n useEffect(() => {\n if (toolSchemasProp) {\n setToolSchemas(toolSchemasProp);\n return;\n }\n if (!tools) {\n setToolSchemas({});\n return;\n }\n let cancelled = false;\n extractToolSchemas(tools).then((schemas) => {\n if (!cancelled) setToolSchemas(schemas);\n });\n return () => {\n cancelled = true;\n };\n }, [tools, toolSchemasProp]);\n\n // --- Live diagnostics ---\n const [editDiagnostics, setEditDiagnostics] = useState<Diagnostic[]>([]);\n useEffect(() => {\n if (!isEditing || !activeWorkflow) {\n setEditDiagnostics([]);\n return;\n }\n let cancelled = false;\n const timer = setTimeout(() => {\n compileWorkflow(activeWorkflow, { tools }).then((result) => {\n if (!cancelled) setEditDiagnostics(result.diagnostics);\n });\n }, 300);\n return () => {\n cancelled = true;\n clearTimeout(timer);\n };\n }, [isEditing, activeWorkflow, tools]);\n\n const activeDiagnostics = isEditing ? editDiagnostics : diagnostics;\n\n // --- Layout computation ---\n const editStructuralKey = useMemo(() => {\n if (!isEditing || !activeWorkflow) return \"\";\n return `${activeWorkflow.steps\n .map(\n (s) =>\n `${s.id}:${s.type}:${s.nextStepId ?? \"\"}${groupStructuralKey(s)}`,\n )\n .join(\"|\")}|init:${activeWorkflow.initialStepId}|dir:${direction}`;\n }, [isEditing, activeWorkflow, direction]);\n\n // Structural key for view mode — changes only when the workflow graph shape changes,\n // not when execution state updates. This lets us skip full layout rebuilds during execution.\n const viewStructuralKey = useMemo(() => {\n if (isEditing || !activeWorkflow) return \"\";\n return `${activeWorkflow.steps\n .map(\n (s) =>\n `${s.id}:${s.type}:${s.nextStepId ?? \"\"}${groupStructuralKey(s)}`,\n )\n .join(\"|\")}|init:${activeWorkflow.initialStepId}|dir:${direction}`;\n }, [isEditing, activeWorkflow, direction]);\n\n const prevViewStructuralKeyRef = useRef(viewStructuralKey);\n const prevIsEditingRef = useRef(isEditing);\n\n const layout = useMemo(() => {\n // layoutReady transitions false→true when real DOM measurements arrive,\n // forcing this memo to recompute with accurate dimensions from the ref.\n const dims =\n layoutReady && measuredDimensionsRef.current.size > 0\n ? measuredDimensionsRef.current\n : undefined;\n if (isEditing) {\n return buildEditableLayout(\n activeWorkflow,\n activeDiagnostics,\n undefined,\n positionOverridesRef.current,\n dimensionOverridesRef.current,\n dims,\n direction,\n );\n }\n return buildLayout(\n activeWorkflow,\n activeDiagnostics,\n executionState,\n dims,\n paused,\n direction,\n );\n }, [\n activeWorkflow,\n activeDiagnostics,\n executionState,\n isEditing,\n paused,\n direction,\n layoutReady,\n ]);\n\n const [nodes, setNodes, onNodesChangeBase] = useNodesState(layout.nodes);\n const [edges, setEdges, onEdgesChange] = useEdgesState(layout.edges);\n\n const onNodesChange: OnNodesChange = useCallback(\n (changes) => {\n onNodesChangeBase(changes);\n for (const change of changes) {\n if (\n change.type === \"dimensions\" &&\n change.dimensions?.width &&\n change.dimensions?.height\n ) {\n measuredDimensionsRef.current.set(change.id, change.dimensions);\n }\n }\n },\n [onNodesChangeBase],\n );\n\n // One-time re-layout with real DOM measurements. Depends on `nodes` so it\n // re-fires when React Flow processes dimension events. Reads from\n // measuredDimensionsRef (not node.measured) because buildLayout pre-sets\n // measured with heuristic estimates that would trigger a false positive.\n useEffect(() => {\n if (initialMeasureDoneRef.current) return;\n if (nodes.length === 0 || measuredDimensionsRef.current.size === 0) return;\n initialMeasureDoneRef.current = true;\n const dims = measuredDimensionsRef.current;\n if (isEditing) {\n const fresh = buildEditableLayout(\n activeWorkflow,\n activeDiagnostics,\n undefined,\n positionOverridesRef.current,\n dimensionOverridesRef.current,\n dims,\n direction,\n );\n setNodes(fresh.nodes);\n setEdges(fresh.edges);\n } else {\n const fresh = buildLayout(\n activeWorkflow,\n activeDiagnostics,\n executionState,\n dims,\n paused,\n direction,\n );\n setNodes(fresh.nodes);\n setEdges(fresh.edges);\n }\n setLayoutReady(true);\n }, [\n nodes,\n activeWorkflow,\n activeDiagnostics,\n executionState,\n isEditing,\n paused,\n direction,\n setNodes,\n setEdges,\n ]);\n\n const prevEditStructuralKeyRef = useRef(editStructuralKey);\n\n useEffect(() => {\n const wasEditing = prevIsEditingRef.current;\n prevIsEditingRef.current = isEditing;\n\n if (!isEditing) {\n const justLeftEditMode = wasEditing;\n const viewStructureChanged =\n viewStructuralKey !== prevViewStructuralKeyRef.current;\n prevViewStructuralKeyRef.current = viewStructuralKey;\n\n if (justLeftEditMode) {\n // Leaving edit mode — clear drag/resize overrides and do a full\n // auto-layout so the graph snaps back to clean Dagre positions.\n positionOverridesRef.current.clear();\n dimensionOverridesRef.current.clear();\n const freshDims =\n measuredDimensionsRef.current.size > 0\n ? measuredDimensionsRef.current\n : undefined;\n const fresh = buildLayout(\n activeWorkflow,\n activeDiagnostics,\n executionState,\n freshDims,\n paused,\n direction,\n );\n setNodes(fresh.nodes);\n setEdges(fresh.edges);\n } else if (viewStructureChanged) {\n // Workflow graph shape changed — full layout reset needed\n measuredDimensionsRef.current.clear();\n initialMeasureDoneRef.current = false;\n setNodes(layout.nodes);\n setEdges(layout.edges);\n } else {\n // Structure is the same — only update node data (execution summaries)\n // and edge data (executed flags) to avoid position recalculation flicker\n const dataMap = new Map(layout.nodes.map((n) => [n.id, n.data]));\n setNodes((prev) =>\n prev.map((n) => {\n const newData = dataMap.get(n.id);\n return newData ? { ...n, data: newData } : n;\n }),\n );\n const edgeDataMap = new Map(layout.edges.map((e) => [e.id, e.data]));\n setEdges((prev) =>\n prev.map((e) => {\n const newData = edgeDataMap.get(e.id);\n return newData ? { ...e, data: newData } : e;\n }),\n );\n }\n return;\n }\n\n const structureChanged =\n editStructuralKey !== prevEditStructuralKeyRef.current;\n prevEditStructuralKeyRef.current = editStructuralKey;\n\n if (skipNextLayoutEffectRef.current) {\n skipNextLayoutEffectRef.current = false;\n return;\n }\n\n if (structureChanged) {\n // Clear user drag/resize overrides — old positions are meaningless\n // for the new structure. Don't store dagre positions as overrides;\n // overrides should only come from explicit user actions (drag/resize).\n positionOverridesRef.current.clear();\n dimensionOverridesRef.current.clear();\n measuredDimensionsRef.current.clear();\n initialMeasureDoneRef.current = false;\n setNodes(layout.nodes);\n setEdges(layout.edges);\n } else {\n const dataMap = new Map(layout.nodes.map((n) => [n.id, n.data]));\n setNodes((prev) =>\n prev.map((n) => {\n const newData = dataMap.get(n.id);\n return newData ? { ...n, data: newData } : n;\n }),\n );\n }\n }, [\n layout,\n setNodes,\n setEdges,\n isEditing,\n editStructuralKey,\n viewStructuralKey,\n activeWorkflow,\n activeDiagnostics,\n executionState,\n paused,\n direction,\n ]);\n\n // --- Container resize ---\n useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) setContainerWidth(entry.contentRect.width);\n });\n observer.observe(el);\n return () => observer.disconnect();\n }, []);\n\n const effectiveMinimapWidth =\n containerWidth > 0\n ? Math.min(minimapWidth, containerWidth * 0.25)\n : minimapWidth;\n const effectiveMinimapHeight =\n minimapHeight * (effectiveMinimapWidth / minimapWidth);\n\n // --- Derived data ---\n const availableToolNames = useMemo(\n () =>\n toolSchemasProp\n ? Object.keys(toolSchemasProp)\n : tools\n ? Object.keys(tools)\n : [],\n [tools, toolSchemasProp],\n );\n\n const allStepIds = useMemo(\n () => activeWorkflow?.steps.map((s) => s.id) ?? [],\n [activeWorkflow],\n );\n\n // --- Selection ---\n const {\n selectedStep,\n selectedDiagnostics,\n selectedExecutionSummary,\n selectedExecutionRecords,\n clearSelection,\n onNodeClick,\n selectStepForEditing,\n setSelectedStep,\n setSelectedDiagnostics,\n } = useSelectionState({\n activeWorkflow,\n activeDiagnostics,\n executionState,\n onStepSelect,\n });\n\n // --- Context menu ---\n const {\n contextMenu,\n onPaneContextMenu,\n onNodeContextMenu,\n closeContextMenu,\n } = useContextMenu(isEditing, containerRef);\n\n const onPaneClick = useCallback(() => {\n clearSelection();\n closeContextMenu();\n }, [clearSelection, closeContextMenu]);\n\n // --- Edit mode: connections ---\n const onConnect = useCallback(\n (connection: Connection) => {\n if (!isEditing || !connection.source || !connection.target) return;\n connectSteps(connection.source, connection.target);\n },\n [isEditing, connectSteps],\n );\n\n // --- Edit mode: group resize on drag ---\n const resizeParentToFit = useCallback(\n (parentId: string, shrink: boolean) => {\n setNodes((nds) => {\n const parent = nds.find((n) => n.id === parentId);\n if (!parent) return nds;\n\n const children = nds.filter((n) => n.parentId === parentId);\n if (children.length === 0) return nds;\n\n let minX = Number.POSITIVE_INFINITY;\n let minY = Number.POSITIVE_INFINITY;\n let maxRight = 0;\n let maxBottom = 0;\n\n for (const child of children) {\n const childW = child.measured?.width ?? 300;\n const childH = child.measured?.height ?? 180;\n minX = Math.min(minX, child.position.x);\n minY = Math.min(minY, child.position.y);\n maxRight = Math.max(\n maxRight,\n child.position.x + childW + GROUP_PADDING,\n );\n maxBottom = Math.max(\n maxBottom,\n child.position.y + childH + GROUP_PADDING,\n );\n }\n\n const parentW =\n (parent.style?.width as number) ?? parent.measured?.width ?? 0;\n const parentH =\n (parent.style?.height as number) ?? parent.measured?.height ?? 0;\n\n const shiftX = shrink\n ? GROUP_PADDING - minX\n : minX < GROUP_PADDING\n ? GROUP_PADDING - minX\n : 0;\n const shiftY = shrink\n ? GROUP_HEADER - minY\n : minY < GROUP_HEADER\n ? GROUP_HEADER - minY\n : 0;\n\n const adjustedMaxRight = maxRight + shiftX;\n const adjustedMaxBottom = maxBottom + shiftY;\n\n const newW = shrink\n ? adjustedMaxRight\n : Math.max(parentW + shiftX, adjustedMaxRight);\n const newH = shrink\n ? adjustedMaxBottom\n : Math.max(parentH + shiftY, adjustedMaxBottom);\n\n const needsShift = shiftX !== 0 || shiftY !== 0;\n const needsResize = newW !== parentW || newH !== parentH;\n\n if (!needsShift && !needsResize) return nds;\n\n dimensionOverridesRef.current.set(parentId, {\n width: newW,\n height: newH,\n });\n const newParentPos = {\n x: parent.position.x - shiftX,\n y: parent.position.y - shiftY,\n };\n positionOverridesRef.current.set(parentId, newParentPos);\n\n return nds.map((n) => {\n if (n.id === parentId) {\n const data = n.data as Record<string, unknown>;\n return {\n ...n,\n position: newParentPos,\n style: { ...n.style, width: newW, height: newH },\n data: { ...data, groupWidth: newW, groupHeight: newH },\n };\n }\n if (n.parentId === parentId && needsShift) {\n const newPos = {\n x: n.position.x + shiftX,\n y: n.position.y + shiftY,\n };\n positionOverridesRef.current.set(n.id, newPos);\n return { ...n, position: newPos };\n }\n return n;\n });\n });\n },\n [setNodes],\n );\n\n const onNodeDrag = useCallback(\n (\n _: React.MouseEvent,\n node: {\n id: string;\n parentId?: string;\n position: { x: number; y: number };\n },\n ) => {\n if (!isEditing || !node.parentId) return;\n resizeParentToFit(node.parentId, true);\n },\n [isEditing, resizeParentToFit],\n );\n\n const onNodeDragStop = useCallback(\n (\n _: React.MouseEvent,\n node: {\n id: string;\n parentId?: string;\n position: { x: number; y: number };\n },\n ) => {\n if (!isEditing) return;\n positionOverridesRef.current.set(node.id, node.position);\n if (node.parentId) {\n resizeParentToFit(node.parentId, true);\n }\n },\n [isEditing, resizeParentToFit],\n );\n\n // --- Edit mode: step operations ---\n const handleDeleteStep = useCallback(\n (stepId: string) => {\n positionOverridesRef.current.delete(stepId);\n removeStep(stepId);\n if (selectedStep?.id === stepId) {\n clearSelection();\n }\n },\n [removeStep, selectedStep, clearSelection],\n );\n\n const handleAddStep = useCallback(\n (type: WorkflowStep[\"type\"], position?: { x: number; y: number }) => {\n const existingIds = new Set(activeWorkflow?.steps.map((s) => s.id) ?? []);\n const step = createDefaultStep(type, undefined, existingIds);\n if (position) {\n positionOverridesRef.current.set(step.id, position);\n }\n addStep(step);\n setSelectedStep(step);\n setSelectedDiagnostics([]);\n },\n [addStep, setSelectedStep, setSelectedDiagnostics, activeWorkflow],\n );\n\n // --- Edit mode: keyboard ---\n const onKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (\n !isEditing ||\n !selectedStep ||\n (event.key !== \"Delete\" && event.key !== \"Backspace\")\n )\n return;\n const target = event.target as HTMLElement;\n if (\n target.tagName === \"INPUT\" ||\n target.tagName === \"TEXTAREA\" ||\n target.tagName === \"SELECT\" ||\n target.isContentEditable\n )\n return;\n handleDeleteStep(selectedStep.id);\n },\n [isEditing, selectedStep, handleDeleteStep],\n );\n\n // --- Edit mode: drag-to-add ---\n const onDragOver = useCallback(\n (event: React.DragEvent) => {\n if (!isEditing) return;\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n },\n [isEditing],\n );\n\n const onDrop = useCallback(\n (event: React.DragEvent) => {\n if (!isEditing) return;\n event.preventDefault();\n const stepType = event.dataTransfer.getData(\n \"application/remora-step-type\",\n ) as WorkflowStep[\"type\"] | \"\";\n if (!stepType) return;\n\n const bounds = containerRef.current?.getBoundingClientRect();\n if (!bounds) return;\n\n const position = {\n x: event.clientX - bounds.left,\n y: event.clientY - bounds.top,\n };\n\n handleAddStep(stepType, position);\n },\n [isEditing, handleAddStep],\n );\n\n // --- Edit mode: auto-layout ---\n const skipNextLayoutEffectRef = useRef(false);\n const handleAutoLayout = useCallback(() => {\n positionOverridesRef.current.clear();\n dimensionOverridesRef.current.clear();\n const dims =\n measuredDimensionsRef.current.size > 0\n ? measuredDimensionsRef.current\n : undefined;\n const fresh = buildEditableLayout(\n activeWorkflow,\n activeDiagnostics,\n undefined,\n undefined,\n undefined,\n dims,\n direction,\n );\n // Prevent the big layout useEffect from overwriting with a data-only\n // update on the next render — auto-layout's result is authoritative.\n skipNextLayoutEffectRef.current = true;\n setNodes(fresh.nodes);\n setEdges(fresh.edges);\n }, [activeWorkflow, activeDiagnostics, setNodes, setEdges, direction]);\n\n // --- Edit context ---\n const editContextValue = useMemo(\n () => ({\n isEditing,\n onDeleteStep: handleDeleteStep,\n onDisconnectStep: disconnectStep,\n onSelectStepForEditing: selectStepForEditing,\n availableToolNames,\n allStepIds,\n }),\n [\n isEditing,\n handleDeleteStep,\n disconnectStep,\n selectStepForEditing,\n availableToolNames,\n allStepIds,\n ],\n );\n\n // --- Render ---\n return (\n <EditContext.Provider value={editContextValue}>\n <div\n role=\"application\"\n className=\"flex h-full w-full min-h-0\"\n onKeyDown={onKeyDown}\n tabIndex={-1}\n >\n <div\n ref={containerRef}\n className=\"flex-1 relative\"\n style={layoutReady ? undefined : { visibility: \"hidden\" }}\n >\n <ReactFlow\n nodes={nodes}\n edges={edges}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n onNodeClick={onNodeClick}\n onPaneClick={onPaneClick}\n onConnect={isEditing ? onConnect : undefined}\n onNodeDrag={isEditing ? onNodeDrag : undefined}\n onNodeDragStop={isEditing ? onNodeDragStop : undefined}\n onPaneContextMenu={isEditing ? onPaneContextMenu : undefined}\n onNodeContextMenu={isEditing ? onNodeContextMenu : undefined}\n onDragOver={isEditing ? onDragOver : undefined}\n onDrop={isEditing ? onDrop : undefined}\n nodeTypes={nodeTypes}\n edgeTypes={edgeTypes}\n fitView\n fitViewOptions={FIT_VIEW_OPTIONS}\n minZoom={0.1}\n nodesDraggable={isEditing}\n nodesConnectable={isEditing}\n defaultEdgeOptions={{\n type: \"workflow\",\n }}\n proOptions={{ hideAttribution: true }}\n >\n <HandlePositionUpdater direction={direction} />\n <Background size={3} />\n <Controls showInteractive={false} />\n {showMinimap && (\n <MiniMap\n nodeStrokeWidth={2}\n pannable\n zoomable\n style={{\n width: effectiveMinimapWidth,\n height: effectiveMinimapHeight,\n }}\n nodeColor={\"rgba(0, 0, 0, 0.1)\"}\n />\n )}\n </ReactFlow>\n <div className=\"absolute top-3 left-3 z-10 flex flex-col gap-2\">\n <div className=\"flex rounded-lg border border-border shadow-md overflow-hidden bg-card divide-x divide-border\">\n {isEditing && (\n <button\n type=\"button\"\n onClick={handleAutoLayout}\n title=\"Auto-layout\"\n className=\"px-2.5 py-1.5 text-xs font-medium text-foreground hover:bg-muted/50 transition-colors flex items-center gap-1.5\"\n >\n <LayoutGrid className=\"w-3.5 h-3.5\" />\n <span>Auto-layout</span>\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => setShowJsonDialog(true)}\n title=\"View JSON\"\n className=\"px-2.5 py-1.5 text-xs font-medium text-foreground hover:bg-muted/50 transition-colors flex items-center gap-1.5\"\n >\n <Braces className=\"w-3.5 h-3.5\" />\n <span>JSON</span>\n </button>\n </div>\n {isEditing && (\n <StepPalette onAddStep={(type) => handleAddStep(type)} />\n )}\n </div>\n {contextMenu && (\n <CanvasContextMenu\n position={{\n x: contextMenu.screenX,\n y: contextMenu.screenY,\n }}\n canvasPosition={{\n x: contextMenu.flowX,\n y: contextMenu.flowY,\n }}\n onAddStep={(type, pos) => {\n handleAddStep(type, pos);\n closeContextMenu();\n }}\n onClose={closeContextMenu}\n targetNodeId={contextMenu.nodeId}\n onDeleteNode={\n contextMenu.nodeId\n ? (id) => {\n handleDeleteStep(id);\n closeContextMenu();\n }\n : undefined\n }\n onEditNode={\n contextMenu.nodeId\n ? (id) => {\n selectStepForEditing(id);\n closeContextMenu();\n }\n : undefined\n }\n />\n )}\n {isEditing && !activeWorkflow?.steps.length && (\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none\">\n <div className=\"text-muted-foreground text-sm bg-card/80 rounded-lg px-6 py-4 border border-border\">\n Add a step from the palette or right-click to get started\n </div>\n </div>\n )}\n </div>\n {!hideDetailPanel &&\n selectedStep &&\n (isEditing ? (\n <StepEditorPanel\n step={selectedStep}\n availableToolNames={availableToolNames}\n allStepIds={allStepIds}\n toolSchemas={toolSchemas}\n diagnostics={editDiagnostics.filter(\n (d) => d.location.stepId === selectedStep.id,\n )}\n workflowInputSchema={\n activeWorkflow?.inputSchema as object | undefined\n }\n workflowOutputSchema={\n activeWorkflow?.outputSchema as object | undefined\n }\n onChange={(updates) => updateStep(selectedStep.id, updates)}\n onWorkflowMetaChange={updateWorkflowMeta}\n onClose={clearSelection}\n />\n ) : (\n <StepDetailPanel\n step={selectedStep}\n diagnostics={selectedDiagnostics}\n executionSummary={selectedExecutionSummary}\n executionRecords={selectedExecutionRecords}\n onClose={clearSelection}\n />\n ))}\n </div>\n {showJsonDialog && (\n <WorkflowJsonDialog\n workflow={activeWorkflow}\n isEditing={isEditing}\n onApply={(wf) => onWorkflowChange?.(wf)}\n onClose={() => setShowJsonDialog(false)}\n />\n )}\n </EditContext.Provider>\n );\n}\n",
|
|
43
|
+
"import {\n compileWorkflow,\n type Diagnostic,\n type ExecutionState,\n extractToolSchemas,\n type ToolDefinitionMap,\n type WorkflowDefinition,\n type WorkflowStep,\n} from \"@remoraflow/core\";\nimport {\n Background,\n type Connection,\n Controls,\n type EdgeTypes,\n MiniMap,\n type NodeTypes,\n type OnNodesChange,\n ReactFlow,\n useEdgesState,\n useNodes,\n useNodesState,\n useReactFlow,\n useUpdateNodeInternals,\n} from \"@xyflow/react\";\nimport type { ToolSet } from \"ai\";\nimport { Braces, LayoutGrid } from \"lucide-react\";\nimport type React from \"react\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { CanvasContextMenu } from \"./components/canvas-context-menu\";\nimport { StepPalette } from \"./components/step-palette\";\nimport { WorkflowJsonDialog } from \"./components/workflow-json-dialog\";\nimport { WorkflowEdge } from \"./edges/workflow-edge\";\nimport { EditContext } from \"./edit-context\";\nimport {\n buildEditableLayout,\n buildLayout,\n GROUP_HEADER,\n GROUP_PADDING,\n type LayoutDirection,\n} from \"./graph-layout\";\nimport { useContextMenu } from \"./hooks/use-context-menu\";\nimport { useEditableWorkflow } from \"./hooks/use-editable-workflow\";\nimport { useSelectionState } from \"./hooks/use-selection-state\";\nimport { AgentLoopNode } from \"./nodes/agent-loop-node\";\nimport { EndNode } from \"./nodes/end-node\";\nimport { ExtractDataNode } from \"./nodes/extract-data-node\";\nimport { ForEachNode } from \"./nodes/for-each-node\";\nimport { GroupHeaderNode } from \"./nodes/group-header-node\";\nimport { LlmPromptNode } from \"./nodes/llm-prompt-node\";\nimport { SleepNode } from \"./nodes/sleep-node\";\nimport { StartNode } from \"./nodes/start-node\";\nimport { StartStepNode } from \"./nodes/start-step-node\";\nimport { SwitchCaseNode } from \"./nodes/switch-case-node\";\nimport { ToolCallNode } from \"./nodes/tool-call-node\";\nimport { WaitForConditionNode } from \"./nodes/wait-for-condition-node\";\nimport { StepDetailPanel } from \"./panels/step-detail-panel\";\nimport { StepEditorPanel } from \"./panels/step-editor-panel\";\nimport { ToolSchemasContext } from \"./tool-schemas-context\";\nimport { groupStructuralKey } from \"./utils/group-refs\";\nimport { createDefaultStep } from \"./utils/step-defaults\";\n\nconst nodeTypes: NodeTypes = {\n toolCall: ToolCallNode,\n llmPrompt: LlmPromptNode,\n extractData: ExtractDataNode,\n switchCase: SwitchCaseNode,\n groupHeader: GroupHeaderNode,\n forEach: ForEachNode,\n end: EndNode,\n start: StartNode,\n startStep: StartStepNode,\n sleep: SleepNode,\n waitForCondition: WaitForConditionNode,\n agentLoop: AgentLoopNode,\n};\n\nconst edgeTypes: EdgeTypes = {\n workflow: WorkflowEdge,\n};\n\nimport { EMPTY_DIAGNOSTICS } from \"./hooks/use-selection-state\";\n\nconst FIT_VIEW_OPTIONS = { padding: 0.2, maxZoom: 1 };\n\n/**\n * Forces React Flow to recalculate handle positions when layout direction\n * changes so edges connect at the correct side (left/right vs top/bottom).\n * Must be rendered inside `<ReactFlow>` to access the React Flow context.\n */\nfunction HandlePositionUpdater({ direction }: { direction: LayoutDirection }) {\n const nodes = useNodes();\n const updateNodeInternals = useUpdateNodeInternals();\n const { fitView } = useReactFlow();\n const appliedDirection = useRef(direction);\n\n useEffect(() => {\n // Check if any node's layoutDirection differs from what we last applied.\n const needsUpdate = nodes.some((n) => {\n const d = (n.data as Record<string, unknown>)?.layoutDirection;\n return d !== undefined && d !== appliedDirection.current;\n });\n if (!needsUpdate) return;\n\n appliedDirection.current = direction;\n const ids = nodes.map((n) => n.id);\n if (ids.length === 0) return;\n\n const raf = requestAnimationFrame(() => {\n updateNodeInternals(ids);\n fitView(FIT_VIEW_OPTIONS);\n });\n return () => cancelAnimationFrame(raf);\n }, [direction, nodes, updateNodeInternals, fitView]);\n\n return null;\n}\n\n/** Props for the {@link WorkflowViewer} component. */\nexport interface WorkflowViewerProps {\n /** The workflow definition to visualize. Pass `null` to start with an empty canvas (requires `isEditing`). */\n workflow: WorkflowDefinition | null;\n /** Compiler diagnostics to display on affected nodes. */\n diagnostics?: Diagnostic[];\n /** Called when a step node is clicked (with the step and its diagnostics) or when the selection is cleared (with `null`). */\n onStepSelect?: (step: WorkflowStep | null, diagnostics: Diagnostic[]) => void;\n /** Execution state to visualize on the workflow DAG. */\n executionState?: ExecutionState;\n /** Whether to show the minimap. @default true */\n showMinimap?: boolean;\n /** Width of the minimap in pixels (capped at 25% of viewer width). @default 200 */\n minimapWidth?: number;\n /** Height of the minimap in pixels. @default 150 */\n minimapHeight?: number;\n /** Whether the workflow execution is currently paused. */\n paused?: boolean;\n /** Enable editing mode. When true, nodes are draggable and editable. */\n isEditing?: boolean;\n /** Called when the workflow is modified in edit mode. */\n onWorkflowChange?: (workflow: WorkflowDefinition) => void;\n /** Tool definitions (AI SDK ToolSet). Used for tool name autocomplete in the editor. Execute functions are optional. */\n tools?: ToolSet;\n /**\n * Pre-extracted tool schemas. When provided, skips extracting schemas from\n * `tools`. Each schema may include an optional `displayName` to render a\n * human-friendly label in the UI; the compiled workflow continues to\n * reference tools by their actual keys.\n */\n toolSchemas?: ToolDefinitionMap;\n /** Hide the built-in detail/editor panel. Use this when rendering `StepDetailPanel` or `StepEditorPanel` externally. */\n hideDetailPanel?: boolean;\n /** Controls whether the DAG flows top-to-bottom (`\"vertical\"`) or left-to-right (`\"horizontal\"`). @see {@link LayoutDirection} */\n layout?: LayoutDirection;\n}\n\n/**\n * React component that renders a workflow as an interactive DAG using React Flow.\n * Supports step selection via callback, minimap, and zoom controls.\n *\n * Dark mode is detected automatically via the `dark` class on `<html>`,\n * following the shadcn/Tailwind convention (`darkMode: \"class\"`).\n *\n * Requires `@xyflow/react` as a peer dependency.\n */\nexport function WorkflowViewer({\n workflow,\n diagnostics = EMPTY_DIAGNOSTICS,\n onStepSelect,\n executionState,\n paused = false,\n showMinimap = true,\n minimapWidth = 200,\n minimapHeight = 150,\n isEditing = false,\n onWorkflowChange,\n tools,\n toolSchemas: toolSchemasProp,\n hideDetailPanel = false,\n layout: direction = \"vertical\",\n}: WorkflowViewerProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState(0);\n\n // --- Editing operations ---\n const {\n workingWorkflow,\n addStep,\n removeStep,\n updateStep,\n connectSteps,\n disconnectStep,\n updateWorkflowMeta,\n } = useEditableWorkflow({ workflow, onWorkflowChange });\n\n const [showJsonDialog, setShowJsonDialog] = useState(false);\n\n const activeWorkflow = isEditing ? workingWorkflow : workflow;\n const positionOverridesRef = useRef<Map<string, { x: number; y: number }>>(\n new Map(),\n );\n const dimensionOverridesRef = useRef<\n Map<string, { width: number; height: number }>\n >(new Map());\n\n // Real DOM dimensions captured from React Flow's onNodesChange events,\n // used instead of heuristic estimates for accurate dagre sizing.\n const measuredDimensionsRef = useRef<\n Map<string, { width: number; height: number }>\n >(new Map());\n const initialMeasureDoneRef = useRef(false);\n // Hidden until the first measurement-based re-layout completes to\n // avoid flashing the heuristic-estimated layout.\n const [layoutReady, setLayoutReady] = useState(false);\n\n // --- Tool schemas ---\n const [toolSchemas, setToolSchemas] = useState<ToolDefinitionMap>({});\n useEffect(() => {\n if (toolSchemasProp) {\n setToolSchemas(toolSchemasProp);\n return;\n }\n if (!tools) {\n setToolSchemas({});\n return;\n }\n let cancelled = false;\n extractToolSchemas(tools).then((schemas) => {\n if (!cancelled) setToolSchemas(schemas);\n });\n return () => {\n cancelled = true;\n };\n }, [tools, toolSchemasProp]);\n\n // --- Live diagnostics ---\n const [editDiagnostics, setEditDiagnostics] = useState<Diagnostic[]>([]);\n useEffect(() => {\n if (!isEditing || !activeWorkflow) {\n setEditDiagnostics([]);\n return;\n }\n let cancelled = false;\n const timer = setTimeout(() => {\n compileWorkflow(activeWorkflow, { tools }).then((result) => {\n if (!cancelled) setEditDiagnostics(result.diagnostics);\n });\n }, 300);\n return () => {\n cancelled = true;\n clearTimeout(timer);\n };\n }, [isEditing, activeWorkflow, tools]);\n\n const activeDiagnostics = isEditing ? editDiagnostics : diagnostics;\n\n // --- Layout computation ---\n const editStructuralKey = useMemo(() => {\n if (!isEditing || !activeWorkflow) return \"\";\n return `${activeWorkflow.steps\n .map(\n (s) =>\n `${s.id}:${s.type}:${s.nextStepId ?? \"\"}${groupStructuralKey(s)}`,\n )\n .join(\"|\")}|init:${activeWorkflow.initialStepId}|dir:${direction}`;\n }, [isEditing, activeWorkflow, direction]);\n\n // Structural key for view mode — changes only when the workflow graph shape changes,\n // not when execution state updates. This lets us skip full layout rebuilds during execution.\n const viewStructuralKey = useMemo(() => {\n if (isEditing || !activeWorkflow) return \"\";\n return `${activeWorkflow.steps\n .map(\n (s) =>\n `${s.id}:${s.type}:${s.nextStepId ?? \"\"}${groupStructuralKey(s)}`,\n )\n .join(\"|\")}|init:${activeWorkflow.initialStepId}|dir:${direction}`;\n }, [isEditing, activeWorkflow, direction]);\n\n const prevViewStructuralKeyRef = useRef(viewStructuralKey);\n const prevIsEditingRef = useRef(isEditing);\n\n const layout = useMemo(() => {\n // layoutReady transitions false→true when real DOM measurements arrive,\n // forcing this memo to recompute with accurate dimensions from the ref.\n const dims =\n layoutReady && measuredDimensionsRef.current.size > 0\n ? measuredDimensionsRef.current\n : undefined;\n if (isEditing) {\n return buildEditableLayout(\n activeWorkflow,\n activeDiagnostics,\n undefined,\n positionOverridesRef.current,\n dimensionOverridesRef.current,\n dims,\n direction,\n );\n }\n return buildLayout(\n activeWorkflow,\n activeDiagnostics,\n executionState,\n dims,\n paused,\n direction,\n );\n }, [\n activeWorkflow,\n activeDiagnostics,\n executionState,\n isEditing,\n paused,\n direction,\n layoutReady,\n ]);\n\n const [nodes, setNodes, onNodesChangeBase] = useNodesState(layout.nodes);\n const [edges, setEdges, onEdgesChange] = useEdgesState(layout.edges);\n\n const onNodesChange: OnNodesChange = useCallback(\n (changes) => {\n onNodesChangeBase(changes);\n for (const change of changes) {\n if (\n change.type === \"dimensions\" &&\n change.dimensions?.width &&\n change.dimensions?.height\n ) {\n measuredDimensionsRef.current.set(change.id, change.dimensions);\n }\n }\n },\n [onNodesChangeBase],\n );\n\n // One-time re-layout with real DOM measurements. Depends on `nodes` so it\n // re-fires when React Flow processes dimension events. Reads from\n // measuredDimensionsRef (not node.measured) because buildLayout pre-sets\n // measured with heuristic estimates that would trigger a false positive.\n useEffect(() => {\n if (initialMeasureDoneRef.current) return;\n if (nodes.length === 0 || measuredDimensionsRef.current.size === 0) return;\n initialMeasureDoneRef.current = true;\n const dims = measuredDimensionsRef.current;\n if (isEditing) {\n const fresh = buildEditableLayout(\n activeWorkflow,\n activeDiagnostics,\n undefined,\n positionOverridesRef.current,\n dimensionOverridesRef.current,\n dims,\n direction,\n );\n setNodes(fresh.nodes);\n setEdges(fresh.edges);\n } else {\n const fresh = buildLayout(\n activeWorkflow,\n activeDiagnostics,\n executionState,\n dims,\n paused,\n direction,\n );\n setNodes(fresh.nodes);\n setEdges(fresh.edges);\n }\n setLayoutReady(true);\n }, [\n nodes,\n activeWorkflow,\n activeDiagnostics,\n executionState,\n isEditing,\n paused,\n direction,\n setNodes,\n setEdges,\n ]);\n\n const prevEditStructuralKeyRef = useRef(editStructuralKey);\n\n useEffect(() => {\n const wasEditing = prevIsEditingRef.current;\n prevIsEditingRef.current = isEditing;\n\n if (!isEditing) {\n const justLeftEditMode = wasEditing;\n const viewStructureChanged =\n viewStructuralKey !== prevViewStructuralKeyRef.current;\n prevViewStructuralKeyRef.current = viewStructuralKey;\n\n if (justLeftEditMode) {\n // Leaving edit mode — clear drag/resize overrides and do a full\n // auto-layout so the graph snaps back to clean Dagre positions.\n positionOverridesRef.current.clear();\n dimensionOverridesRef.current.clear();\n const freshDims =\n measuredDimensionsRef.current.size > 0\n ? measuredDimensionsRef.current\n : undefined;\n const fresh = buildLayout(\n activeWorkflow,\n activeDiagnostics,\n executionState,\n freshDims,\n paused,\n direction,\n );\n setNodes(fresh.nodes);\n setEdges(fresh.edges);\n } else if (viewStructureChanged) {\n // Workflow graph shape changed — full layout reset needed\n measuredDimensionsRef.current.clear();\n initialMeasureDoneRef.current = false;\n setNodes(layout.nodes);\n setEdges(layout.edges);\n } else {\n // Structure is the same — only update node data (execution summaries)\n // and edge data (executed flags) to avoid position recalculation flicker\n const dataMap = new Map(layout.nodes.map((n) => [n.id, n.data]));\n setNodes((prev) =>\n prev.map((n) => {\n const newData = dataMap.get(n.id);\n return newData ? { ...n, data: newData } : n;\n }),\n );\n const edgeDataMap = new Map(layout.edges.map((e) => [e.id, e.data]));\n setEdges((prev) =>\n prev.map((e) => {\n const newData = edgeDataMap.get(e.id);\n return newData ? { ...e, data: newData } : e;\n }),\n );\n }\n return;\n }\n\n const structureChanged =\n editStructuralKey !== prevEditStructuralKeyRef.current;\n prevEditStructuralKeyRef.current = editStructuralKey;\n\n if (skipNextLayoutEffectRef.current) {\n skipNextLayoutEffectRef.current = false;\n return;\n }\n\n if (structureChanged) {\n // Clear user drag/resize overrides — old positions are meaningless\n // for the new structure. Don't store dagre positions as overrides;\n // overrides should only come from explicit user actions (drag/resize).\n positionOverridesRef.current.clear();\n dimensionOverridesRef.current.clear();\n measuredDimensionsRef.current.clear();\n initialMeasureDoneRef.current = false;\n setNodes(layout.nodes);\n setEdges(layout.edges);\n } else {\n const dataMap = new Map(layout.nodes.map((n) => [n.id, n.data]));\n setNodes((prev) =>\n prev.map((n) => {\n const newData = dataMap.get(n.id);\n return newData ? { ...n, data: newData } : n;\n }),\n );\n }\n }, [\n layout,\n setNodes,\n setEdges,\n isEditing,\n editStructuralKey,\n viewStructuralKey,\n activeWorkflow,\n activeDiagnostics,\n executionState,\n paused,\n direction,\n ]);\n\n // --- Container resize ---\n useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) setContainerWidth(entry.contentRect.width);\n });\n observer.observe(el);\n return () => observer.disconnect();\n }, []);\n\n const effectiveMinimapWidth =\n containerWidth > 0\n ? Math.min(minimapWidth, containerWidth * 0.25)\n : minimapWidth;\n const effectiveMinimapHeight =\n minimapHeight * (effectiveMinimapWidth / minimapWidth);\n\n // --- Derived data ---\n const availableToolNames = useMemo(\n () =>\n toolSchemasProp\n ? Object.keys(toolSchemasProp)\n : tools\n ? Object.keys(tools)\n : [],\n [tools, toolSchemasProp],\n );\n\n const allStepIds = useMemo(\n () => activeWorkflow?.steps.map((s) => s.id) ?? [],\n [activeWorkflow],\n );\n\n // --- Selection ---\n const {\n selectedStep,\n selectedDiagnostics,\n selectedExecutionSummary,\n selectedExecutionRecords,\n clearSelection,\n onNodeClick,\n selectStepForEditing,\n setSelectedStep,\n setSelectedDiagnostics,\n } = useSelectionState({\n activeWorkflow,\n activeDiagnostics,\n executionState,\n onStepSelect,\n });\n\n // --- Context menu ---\n const {\n contextMenu,\n onPaneContextMenu,\n onNodeContextMenu,\n closeContextMenu,\n } = useContextMenu(isEditing, containerRef);\n\n const onPaneClick = useCallback(() => {\n clearSelection();\n closeContextMenu();\n }, [clearSelection, closeContextMenu]);\n\n // --- Edit mode: connections ---\n const onConnect = useCallback(\n (connection: Connection) => {\n if (!isEditing || !connection.source || !connection.target) return;\n connectSteps(connection.source, connection.target);\n },\n [isEditing, connectSteps],\n );\n\n // --- Edit mode: group resize on drag ---\n const resizeParentToFit = useCallback(\n (parentId: string, shrink: boolean) => {\n setNodes((nds) => {\n const parent = nds.find((n) => n.id === parentId);\n if (!parent) return nds;\n\n const children = nds.filter((n) => n.parentId === parentId);\n if (children.length === 0) return nds;\n\n let minX = Number.POSITIVE_INFINITY;\n let minY = Number.POSITIVE_INFINITY;\n let maxRight = 0;\n let maxBottom = 0;\n\n for (const child of children) {\n const childW = child.measured?.width ?? 300;\n const childH = child.measured?.height ?? 180;\n minX = Math.min(minX, child.position.x);\n minY = Math.min(minY, child.position.y);\n maxRight = Math.max(\n maxRight,\n child.position.x + childW + GROUP_PADDING,\n );\n maxBottom = Math.max(\n maxBottom,\n child.position.y + childH + GROUP_PADDING,\n );\n }\n\n const parentW =\n (parent.style?.width as number) ?? parent.measured?.width ?? 0;\n const parentH =\n (parent.style?.height as number) ?? parent.measured?.height ?? 0;\n\n const shiftX = shrink\n ? GROUP_PADDING - minX\n : minX < GROUP_PADDING\n ? GROUP_PADDING - minX\n : 0;\n const shiftY = shrink\n ? GROUP_HEADER - minY\n : minY < GROUP_HEADER\n ? GROUP_HEADER - minY\n : 0;\n\n const adjustedMaxRight = maxRight + shiftX;\n const adjustedMaxBottom = maxBottom + shiftY;\n\n const newW = shrink\n ? adjustedMaxRight\n : Math.max(parentW + shiftX, adjustedMaxRight);\n const newH = shrink\n ? adjustedMaxBottom\n : Math.max(parentH + shiftY, adjustedMaxBottom);\n\n const needsShift = shiftX !== 0 || shiftY !== 0;\n const needsResize = newW !== parentW || newH !== parentH;\n\n if (!needsShift && !needsResize) return nds;\n\n dimensionOverridesRef.current.set(parentId, {\n width: newW,\n height: newH,\n });\n const newParentPos = {\n x: parent.position.x - shiftX,\n y: parent.position.y - shiftY,\n };\n positionOverridesRef.current.set(parentId, newParentPos);\n\n return nds.map((n) => {\n if (n.id === parentId) {\n const data = n.data as Record<string, unknown>;\n return {\n ...n,\n position: newParentPos,\n style: { ...n.style, width: newW, height: newH },\n data: { ...data, groupWidth: newW, groupHeight: newH },\n };\n }\n if (n.parentId === parentId && needsShift) {\n const newPos = {\n x: n.position.x + shiftX,\n y: n.position.y + shiftY,\n };\n positionOverridesRef.current.set(n.id, newPos);\n return { ...n, position: newPos };\n }\n return n;\n });\n });\n },\n [setNodes],\n );\n\n const onNodeDrag = useCallback(\n (\n _: React.MouseEvent,\n node: {\n id: string;\n parentId?: string;\n position: { x: number; y: number };\n },\n ) => {\n if (!isEditing || !node.parentId) return;\n resizeParentToFit(node.parentId, true);\n },\n [isEditing, resizeParentToFit],\n );\n\n const onNodeDragStop = useCallback(\n (\n _: React.MouseEvent,\n node: {\n id: string;\n parentId?: string;\n position: { x: number; y: number };\n },\n ) => {\n if (!isEditing) return;\n positionOverridesRef.current.set(node.id, node.position);\n if (node.parentId) {\n resizeParentToFit(node.parentId, true);\n }\n },\n [isEditing, resizeParentToFit],\n );\n\n // --- Edit mode: step operations ---\n const handleDeleteStep = useCallback(\n (stepId: string) => {\n positionOverridesRef.current.delete(stepId);\n removeStep(stepId);\n if (selectedStep?.id === stepId) {\n clearSelection();\n }\n },\n [removeStep, selectedStep, clearSelection],\n );\n\n const handleAddStep = useCallback(\n (type: WorkflowStep[\"type\"], position?: { x: number; y: number }) => {\n const existingIds = new Set(activeWorkflow?.steps.map((s) => s.id) ?? []);\n const step = createDefaultStep(type, undefined, existingIds);\n if (position) {\n positionOverridesRef.current.set(step.id, position);\n }\n addStep(step);\n setSelectedStep(step);\n setSelectedDiagnostics([]);\n },\n [addStep, setSelectedStep, setSelectedDiagnostics, activeWorkflow],\n );\n\n // --- Edit mode: keyboard ---\n const onKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (\n !isEditing ||\n !selectedStep ||\n (event.key !== \"Delete\" && event.key !== \"Backspace\")\n )\n return;\n const target = event.target as HTMLElement;\n if (\n target.tagName === \"INPUT\" ||\n target.tagName === \"TEXTAREA\" ||\n target.tagName === \"SELECT\" ||\n target.isContentEditable\n )\n return;\n handleDeleteStep(selectedStep.id);\n },\n [isEditing, selectedStep, handleDeleteStep],\n );\n\n // --- Edit mode: drag-to-add ---\n const onDragOver = useCallback(\n (event: React.DragEvent) => {\n if (!isEditing) return;\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n },\n [isEditing],\n );\n\n const onDrop = useCallback(\n (event: React.DragEvent) => {\n if (!isEditing) return;\n event.preventDefault();\n const stepType = event.dataTransfer.getData(\n \"application/remora-step-type\",\n ) as WorkflowStep[\"type\"] | \"\";\n if (!stepType) return;\n\n const bounds = containerRef.current?.getBoundingClientRect();\n if (!bounds) return;\n\n const position = {\n x: event.clientX - bounds.left,\n y: event.clientY - bounds.top,\n };\n\n handleAddStep(stepType, position);\n },\n [isEditing, handleAddStep],\n );\n\n // --- Edit mode: auto-layout ---\n const skipNextLayoutEffectRef = useRef(false);\n const handleAutoLayout = useCallback(() => {\n positionOverridesRef.current.clear();\n dimensionOverridesRef.current.clear();\n const dims =\n measuredDimensionsRef.current.size > 0\n ? measuredDimensionsRef.current\n : undefined;\n const fresh = buildEditableLayout(\n activeWorkflow,\n activeDiagnostics,\n undefined,\n undefined,\n undefined,\n dims,\n direction,\n );\n // Prevent the big layout useEffect from overwriting with a data-only\n // update on the next render — auto-layout's result is authoritative.\n skipNextLayoutEffectRef.current = true;\n setNodes(fresh.nodes);\n setEdges(fresh.edges);\n }, [activeWorkflow, activeDiagnostics, setNodes, setEdges, direction]);\n\n // --- Edit context ---\n const editContextValue = useMemo(\n () => ({\n isEditing,\n onDeleteStep: handleDeleteStep,\n onDisconnectStep: disconnectStep,\n onSelectStepForEditing: selectStepForEditing,\n availableToolNames,\n allStepIds,\n }),\n [\n isEditing,\n handleDeleteStep,\n disconnectStep,\n selectStepForEditing,\n availableToolNames,\n allStepIds,\n ],\n );\n\n // --- Render ---\n return (\n <ToolSchemasContext.Provider value={toolSchemas}>\n <EditContext.Provider value={editContextValue}>\n <div\n role=\"application\"\n className=\"flex h-full w-full min-h-0\"\n onKeyDown={onKeyDown}\n tabIndex={-1}\n >\n <div\n ref={containerRef}\n className=\"flex-1 relative\"\n style={layoutReady ? undefined : { visibility: \"hidden\" }}\n >\n <ReactFlow\n nodes={nodes}\n edges={edges}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n onNodeClick={onNodeClick}\n onPaneClick={onPaneClick}\n onConnect={isEditing ? onConnect : undefined}\n onNodeDrag={isEditing ? onNodeDrag : undefined}\n onNodeDragStop={isEditing ? onNodeDragStop : undefined}\n onPaneContextMenu={isEditing ? onPaneContextMenu : undefined}\n onNodeContextMenu={isEditing ? onNodeContextMenu : undefined}\n onDragOver={isEditing ? onDragOver : undefined}\n onDrop={isEditing ? onDrop : undefined}\n nodeTypes={nodeTypes}\n edgeTypes={edgeTypes}\n fitView\n fitViewOptions={FIT_VIEW_OPTIONS}\n minZoom={0.1}\n nodesDraggable={isEditing}\n nodesConnectable={isEditing}\n defaultEdgeOptions={{\n type: \"workflow\",\n }}\n proOptions={{ hideAttribution: true }}\n >\n <HandlePositionUpdater direction={direction} />\n <Background size={3} />\n <Controls showInteractive={false} />\n {showMinimap && (\n <MiniMap\n nodeStrokeWidth={2}\n pannable\n zoomable\n style={{\n width: effectiveMinimapWidth,\n height: effectiveMinimapHeight,\n }}\n nodeColor={\"rgba(0, 0, 0, 0.1)\"}\n />\n )}\n </ReactFlow>\n <div className=\"absolute top-3 left-3 z-10 flex flex-col gap-2\">\n <div className=\"flex rounded-lg border border-border shadow-md overflow-hidden bg-card divide-x divide-border\">\n {isEditing && (\n <button\n type=\"button\"\n onClick={handleAutoLayout}\n title=\"Auto-layout\"\n className=\"px-2.5 py-1.5 text-xs font-medium text-foreground hover:bg-muted/50 transition-colors flex items-center gap-1.5\"\n >\n <LayoutGrid className=\"w-3.5 h-3.5\" />\n <span>Auto-layout</span>\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => setShowJsonDialog(true)}\n title=\"View JSON\"\n className=\"px-2.5 py-1.5 text-xs font-medium text-foreground hover:bg-muted/50 transition-colors flex items-center gap-1.5\"\n >\n <Braces className=\"w-3.5 h-3.5\" />\n <span>JSON</span>\n </button>\n </div>\n {isEditing && (\n <StepPalette onAddStep={(type) => handleAddStep(type)} />\n )}\n </div>\n {contextMenu && (\n <CanvasContextMenu\n position={{\n x: contextMenu.screenX,\n y: contextMenu.screenY,\n }}\n canvasPosition={{\n x: contextMenu.flowX,\n y: contextMenu.flowY,\n }}\n onAddStep={(type, pos) => {\n handleAddStep(type, pos);\n closeContextMenu();\n }}\n onClose={closeContextMenu}\n targetNodeId={contextMenu.nodeId}\n onDeleteNode={\n contextMenu.nodeId\n ? (id) => {\n handleDeleteStep(id);\n closeContextMenu();\n }\n : undefined\n }\n onEditNode={\n contextMenu.nodeId\n ? (id) => {\n selectStepForEditing(id);\n closeContextMenu();\n }\n : undefined\n }\n />\n )}\n {isEditing && !activeWorkflow?.steps.length && (\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none\">\n <div className=\"text-muted-foreground text-sm bg-card/80 rounded-lg px-6 py-4 border border-border\">\n Add a step from the palette or right-click to get started\n </div>\n </div>\n )}\n </div>\n {!hideDetailPanel &&\n selectedStep &&\n (isEditing ? (\n <StepEditorPanel\n step={selectedStep}\n availableToolNames={availableToolNames}\n allStepIds={allStepIds}\n toolSchemas={toolSchemas}\n diagnostics={editDiagnostics.filter(\n (d) => d.location.stepId === selectedStep.id,\n )}\n workflowInputSchema={\n activeWorkflow?.inputSchema as object | undefined\n }\n workflowOutputSchema={\n activeWorkflow?.outputSchema as object | undefined\n }\n onChange={(updates) => updateStep(selectedStep.id, updates)}\n onWorkflowMetaChange={updateWorkflowMeta}\n onClose={clearSelection}\n />\n ) : (\n <StepDetailPanel\n step={selectedStep}\n diagnostics={selectedDiagnostics}\n executionSummary={selectedExecutionSummary}\n executionRecords={selectedExecutionRecords}\n onClose={clearSelection}\n />\n ))}\n </div>\n {showJsonDialog && (\n <WorkflowJsonDialog\n workflow={activeWorkflow}\n isEditing={isEditing}\n onApply={(wf) => onWorkflowChange?.(wf)}\n onClose={() => setShowJsonDialog(false)}\n />\n )}\n </EditContext.Provider>\n </ToolSchemasContext.Provider>\n );\n}\n",
|
|
43
44
|
"import type { WorkflowStep } from \"@remoraflow/core\";\nimport {\n Bot,\n FileOutput,\n GitBranch,\n Hand,\n Moon,\n Play,\n Repeat,\n Sparkles,\n Timer,\n Wrench,\n} from \"lucide-react\";\nimport type { ComponentType } from \"react\";\nimport { useEffect, useRef } from \"react\";\n\nexport interface CanvasContextMenuProps {\n position: { x: number; y: number };\n canvasPosition: { x: number; y: number };\n onAddStep: (\n type: WorkflowStep[\"type\"],\n position: { x: number; y: number },\n ) => void;\n onClose: () => void;\n targetNodeId?: string;\n onDeleteNode?: (nodeId: string) => void;\n onEditNode?: (nodeId: string) => void;\n}\n\nconst STEP_TYPES: {\n type: WorkflowStep[\"type\"];\n label: string;\n icon: ComponentType<{ className?: string }>;\n}[] = [\n { type: \"start\", label: \"Start\", icon: Play },\n { type: \"end\", label: \"End\", icon: Hand },\n { type: \"tool-call\", label: \"Tool Call\", icon: Wrench },\n { type: \"llm-prompt\", label: \"LLM Prompt\", icon: Sparkles },\n { type: \"extract-data\", label: \"Extract Data\", icon: FileOutput },\n { type: \"switch-case\", label: \"Switch Case\", icon: GitBranch },\n { type: \"for-each\", label: \"For Each\", icon: Repeat },\n { type: \"sleep\", label: \"Sleep\", icon: Moon },\n { type: \"wait-for-condition\", label: \"Wait for Condition\", icon: Timer },\n { type: \"agent-loop\", label: \"Agent Loop\", icon: Bot },\n];\n\nexport function CanvasContextMenu({\n position,\n canvasPosition,\n onAddStep,\n onClose,\n targetNodeId,\n onDeleteNode,\n onEditNode,\n}: CanvasContextMenuProps) {\n const menuRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) {\n onClose();\n }\n };\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [onClose]);\n\n const menuStyle: React.CSSProperties = {\n position: \"fixed\",\n left: position.x,\n top: position.y,\n zIndex: 50,\n };\n\n return (\n <div\n ref={menuRef}\n style={menuStyle}\n className=\"bg-card border border-border rounded-lg shadow-xl py-1 min-w-[180px] text-sm\"\n >\n {targetNodeId && (\n <>\n {onEditNode && (\n <button\n type=\"button\"\n onClick={() => onEditNode(targetNodeId)}\n className=\"w-full px-3 py-1.5 text-left text-foreground hover:bg-muted/50 transition-colors\"\n >\n Edit Step\n </button>\n )}\n {onDeleteNode && (\n <button\n type=\"button\"\n onClick={() => onDeleteNode(targetNodeId)}\n className=\"w-full px-3 py-1.5 text-left text-red-600 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors\"\n >\n Delete Step\n </button>\n )}\n <div className=\"border-t border-border my-1\" />\n </>\n )}\n <div className=\"px-3 py-1 text-[11px] font-medium uppercase tracking-wide text-muted-foreground\">\n Add Step\n </div>\n {STEP_TYPES.map((entry) => (\n <button\n type=\"button\"\n key={entry.type}\n onClick={() => onAddStep(entry.type, canvasPosition)}\n className=\"w-full px-3 py-1.5 text-left text-foreground hover:bg-muted/50 transition-colors flex items-center gap-2\"\n >\n <entry.icon className=\"w-3.5 h-3.5 text-muted-foreground shrink-0\" />\n {entry.label}\n </button>\n ))}\n </div>\n );\n}\n",
|
|
44
45
|
"import type { WorkflowDefinition } from \"@remoraflow/core\";\nimport { Copy, X } from \"lucide-react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { JsonCodeEditor } from \"../editors/json-code-editor\";\n\nexport interface WorkflowJsonDialogProps {\n workflow: WorkflowDefinition | null;\n isEditing: boolean;\n onApply: (workflow: WorkflowDefinition) => void;\n onClose: () => void;\n}\n\nexport function WorkflowJsonDialog({\n workflow,\n isEditing,\n onApply,\n onClose,\n}: WorkflowJsonDialogProps) {\n const [jsonText, setJsonText] = useState(() =>\n JSON.stringify(workflow, null, 2),\n );\n const [parseError, setParseError] = useState<string | null>(null);\n const [copied, setCopied] = useState(false);\n const dialogRef = useRef<HTMLDivElement>(null);\n\n // Focus trap\n useEffect(() => {\n dialogRef.current?.focus();\n }, []);\n\n // Validate JSON on change\n useEffect(() => {\n try {\n JSON.parse(jsonText);\n setParseError(null);\n } catch (e) {\n setParseError((e as Error).message);\n }\n }, [jsonText]);\n\n const handleApply = useCallback(() => {\n try {\n const parsed = JSON.parse(jsonText);\n onApply(parsed as WorkflowDefinition);\n onClose();\n } catch (e) {\n setParseError((e as Error).message);\n }\n }, [jsonText, onApply, onClose]);\n\n const handleCopy = useCallback(() => {\n navigator.clipboard.writeText(jsonText);\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n }, [jsonText]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n if (e.key === \"Enter\" && (e.metaKey || e.ctrlKey) && isEditing) {\n e.preventDefault();\n handleApply();\n }\n },\n [onClose, isEditing, handleApply],\n );\n\n return (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50\"\n onClick={(e) => {\n if (e.target === e.currentTarget) onClose();\n }}\n onKeyDown={handleKeyDown}\n ref={dialogRef}\n tabIndex={-1}\n >\n <div className=\"bg-card border border-border rounded-xl shadow-xl w-full max-w-2xl mx-4 overflow-hidden flex flex-col max-h-[80vh]\">\n <div className=\"px-5 pt-4 pb-3 flex items-center justify-between border-b border-border\">\n <h2 className=\"text-sm font-semibold text-foreground\">\n Workflow JSON\n </h2>\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"text-xs text-muted-foreground hover:text-foreground px-2 py-1 rounded-md hover:bg-muted/50 transition-colors flex items-center gap-1\"\n >\n <Copy className=\"w-3.5 h-3.5\" />\n {copied ? \"Copied\" : \"Copy\"}\n </button>\n <button\n type=\"button\"\n onClick={onClose}\n className=\"text-muted-foreground hover:text-foreground p-1 rounded-md hover:bg-muted/50 transition-colors\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n </div>\n </div>\n\n <div className=\"flex-1 min-h-0 overflow-y-auto p-4\">\n <JsonCodeEditor\n value={jsonText}\n onChange={setJsonText}\n maxHeight=\"none\"\n placeholderText='{\"name\": \"my-workflow\", \"steps\": []}'\n />\n </div>\n\n {parseError && (\n <div className=\"px-5 pb-2\">\n <div className=\"text-[11px] text-destructive bg-destructive/10 rounded-md px-3 py-1.5 truncate\">\n {parseError}\n </div>\n </div>\n )}\n\n <div className=\"flex justify-end gap-2 px-5 py-3 border-t border-border bg-muted/30\">\n <button\n type=\"button\"\n onClick={onClose}\n className=\"inline-flex items-center justify-center rounded-md text-xs font-medium h-8 px-3 border border-border bg-background hover:bg-muted/50 transition-colors text-foreground\"\n >\n {isEditing ? \"Cancel\" : \"Close\"}\n </button>\n {isEditing && (\n <button\n type=\"button\"\n onClick={handleApply}\n disabled={!!parseError}\n className=\"inline-flex items-center justify-center rounded-md text-xs font-medium h-8 px-3 bg-primary text-primary-foreground hover:bg-primary/90 transition-colors disabled:opacity-50 disabled:pointer-events-none\"\n >\n Apply\n </button>\n )}\n </div>\n </div>\n </div>\n );\n}\n",
|
|
45
46
|
"import {\n BaseEdge,\n EdgeLabelRenderer,\n type EdgeProps,\n getBezierPath,\n} from \"@xyflow/react\";\nimport { useEditContext } from \"../edit-context\";\n\nexport function WorkflowEdge({\n id,\n source,\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourcePosition,\n targetPosition,\n label,\n data,\n markerEnd,\n style,\n}: EdgeProps) {\n const { isEditing, onDisconnectStep } = useEditContext();\n const edgeKind = (data?.edgeKind as string) ?? \"sequential\";\n const isContinuation = edgeKind === \"continuation\";\n const isExecuted = data?.executed === true;\n const hasExecutionState = data?.hasExecutionState === true;\n\n const [edgePath, labelX, labelY] = getBezierPath({\n sourceX,\n sourceY,\n sourcePosition,\n targetX,\n targetY,\n targetPosition,\n });\n\n // Default stroke uses the React Flow --xy-edge-stroke variable (mapped to\n // the host theme in styles.css). Override only for execution state coloring.\n let stroke: string | undefined;\n let strokeWidth = 1.5;\n let opacity = isContinuation ? 0.5 : 1;\n\n if (hasExecutionState) {\n if (isExecuted) {\n stroke = \"#22c55e\";\n strokeWidth = 2.5;\n opacity = 1;\n } else {\n opacity = 0.3;\n }\n }\n\n return (\n <>\n <BaseEdge\n id={id}\n path={edgePath}\n markerEnd={markerEnd}\n style={{\n ...style,\n strokeDasharray: isContinuation ? \"6 3\" : undefined,\n ...(stroke ? { stroke } : {}),\n strokeWidth,\n opacity,\n }}\n />\n <EdgeLabelRenderer>\n {label && (\n <div\n style={{\n position: \"absolute\",\n transform: `translate(-50%, -50%) translate(${labelX}px,${labelY}px)`,\n pointerEvents: \"all\",\n zIndex: 10,\n }}\n className=\"px-1.5 py-0.5 rounded text-[10px] font-medium border-2 shadow whitespace-nowrap transition-colors duration-150 bg-card text-foreground border-border hover:border-foreground\"\n >\n {label}\n </div>\n )}\n {isEditing && source && (\n <button\n type=\"button\"\n onClick={() => onDisconnectStep(source)}\n style={{\n position: \"absolute\",\n transform: `translate(-50%, -50%) translate(${labelX}px,${labelY + (label ? 16 : 0)}px)`,\n pointerEvents: \"all\",\n zIndex: 10,\n }}\n className=\"w-4 h-4 rounded-full bg-red-500 text-white text-[10px] flex items-center justify-center hover:bg-red-600 shadow-sm opacity-0 hover:opacity-100 transition-opacity\"\n title=\"Remove connection\"\n >\n ×\n </button>\n )}\n </EdgeLabelRenderer>\n </>\n );\n}\n",
|
|
@@ -47,7 +48,7 @@
|
|
|
47
48
|
"import type React from \"react\";\nimport { useCallback, useState } from \"react\";\n\nexport interface ContextMenuState {\n screenX: number;\n screenY: number;\n flowX: number;\n flowY: number;\n nodeId?: string;\n}\n\nexport function useContextMenu(\n isEditing: boolean,\n containerRef: React.RefObject<HTMLDivElement | null>,\n) {\n const [contextMenu, setContextMenu] = useState<ContextMenuState | null>(null);\n\n const onPaneContextMenu = useCallback(\n (event: React.MouseEvent | MouseEvent) => {\n if (!isEditing) return;\n event.preventDefault();\n const bounds = containerRef.current?.getBoundingClientRect();\n if (!bounds) return;\n setContextMenu({\n screenX:\n (event as MouseEvent).clientX ?? (event as React.MouseEvent).clientX,\n screenY:\n (event as MouseEvent).clientY ?? (event as React.MouseEvent).clientY,\n flowX: (event as React.MouseEvent).clientX - bounds.left,\n flowY: (event as React.MouseEvent).clientY - bounds.top,\n });\n },\n [isEditing, containerRef],\n );\n\n const onNodeContextMenu = useCallback(\n (event: React.MouseEvent, node: { id: string }) => {\n if (!isEditing) return;\n event.preventDefault();\n setContextMenu({\n screenX: event.clientX,\n screenY: event.clientY,\n flowX: event.clientX,\n flowY: event.clientY,\n nodeId: node.id,\n });\n },\n [isEditing],\n );\n\n const closeContextMenu = useCallback(() => setContextMenu(null), []);\n\n return {\n contextMenu,\n onPaneContextMenu,\n onNodeContextMenu,\n closeContextMenu,\n };\n}\n",
|
|
48
49
|
"import type { WorkflowDefinition, WorkflowStep } from \"@remoraflow/core\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n clearAllChildRefs,\n clearChildRef,\n getChildStepIds,\n replaceChildRef,\n setChildRef,\n} from \"../utils/group-refs\";\n\nexport interface UseEditableWorkflowOptions {\n workflow: WorkflowDefinition | null;\n onWorkflowChange?: (workflow: WorkflowDefinition) => void;\n}\n\nexport interface UseEditableWorkflowReturn {\n /** The current working copy of the workflow. */\n workingWorkflow: WorkflowDefinition | null;\n addStep: (step: WorkflowStep, afterStepId?: string) => void;\n removeStep: (stepId: string) => void;\n updateStep: (stepId: string, updates: Record<string, unknown>) => void;\n connectSteps: (sourceId: string, targetId: string) => void;\n disconnectStep: (sourceId: string) => void;\n /** Update workflow-level properties (inputSchema, outputSchema). */\n updateWorkflowMeta: (updates: Partial<WorkflowDefinition>) => void;\n}\n\nfunction emptyWorkflow(): WorkflowDefinition {\n return { initialStepId: \"\", steps: [] };\n}\n\n/**\n * Clear all incoming references to `targetId` across all steps.\n * This includes nextStepId and group child references.\n */\nfunction clearIncomingRefs(\n steps: WorkflowStep[],\n targetId: string,\n): WorkflowStep[] {\n return steps.map((s) => {\n let updated =\n s.nextStepId === targetId\n ? ({ ...s, nextStepId: undefined } as WorkflowStep)\n : s;\n updated = clearChildRef(updated, targetId);\n return updated;\n });\n}\n\n/** BFS check: can `fromId` reach `toId` through outgoing edges? */\nfunction canReach(\n steps: WorkflowStep[],\n fromId: string,\n toId: string,\n): boolean {\n const stepMap = new Map(steps.map((s) => [s.id, s]));\n const visited = new Set<string>();\n const queue = [fromId];\n while (queue.length > 0) {\n const id = queue.shift();\n if (id === undefined) break;\n if (id === toId) return true;\n if (visited.has(id)) continue;\n visited.add(id);\n const step = stepMap.get(id);\n if (!step) continue;\n if (step.nextStepId) queue.push(step.nextStepId);\n for (const childId of getChildStepIds(step)) queue.push(childId);\n }\n return false;\n}\n\n/**\n * Detect cycles via DFS and break them by clearing back-edges.\n * Returns the workflow unchanged if no cycles exist.\n */\nfunction repairCycles(workflow: WorkflowDefinition): WorkflowDefinition {\n const stepMap = new Map(workflow.steps.map((s) => [s.id, s]));\n\n const WHITE = 0;\n const GRAY = 1;\n const BLACK = 2;\n const color = new Map<string, number>();\n for (const s of workflow.steps) color.set(s.id, WHITE);\n\n const backEdges: Array<{ fromId: string; toId: string }> = [];\n\n function dfs(id: string) {\n if (!stepMap.has(id)) return;\n color.set(id, GRAY);\n const step = stepMap.get(id);\n if (!step) return;\n const succs: string[] = [];\n if (step.nextStepId) succs.push(step.nextStepId);\n for (const childId of getChildStepIds(step)) succs.push(childId);\n for (const next of succs) {\n if (!stepMap.has(next)) continue;\n const c = color.get(next);\n if (c === GRAY) {\n backEdges.push({ fromId: id, toId: next });\n } else if (c === WHITE) {\n dfs(next);\n }\n }\n color.set(id, BLACK);\n }\n\n for (const s of workflow.steps) {\n if (color.get(s.id) === WHITE) dfs(s.id);\n }\n\n if (backEdges.length === 0) return workflow;\n\n let steps = workflow.steps;\n for (const { fromId, toId } of backEdges) {\n steps = steps.map((s) => {\n if (s.id !== fromId) return s;\n let updated = s;\n if (updated.nextStepId === toId) {\n const { nextStepId, ...rest } = updated;\n updated = rest as WorkflowStep;\n }\n updated = clearChildRef(updated, toId);\n return updated;\n });\n }\n\n return { ...workflow, steps };\n}\n\nexport function useEditableWorkflow({\n workflow,\n onWorkflowChange,\n}: UseEditableWorkflowOptions): UseEditableWorkflowReturn {\n const [workingWorkflow, setWorkingWorkflow] =\n useState<WorkflowDefinition | null>(workflow);\n const onChangeRef = useRef(onWorkflowChange);\n onChangeRef.current = onWorkflowChange;\n\n // Sync external workflow prop changes\n useEffect(() => {\n setWorkingWorkflow(workflow);\n }, [workflow]);\n\n const emit = useCallback((next: WorkflowDefinition) => {\n const repaired = repairCycles(next);\n setWorkingWorkflow(repaired);\n onChangeRef.current?.(repaired);\n }, []);\n\n const addStep = useCallback(\n (step: WorkflowStep, afterStepId?: string) => {\n const wf = workingWorkflow ?? emptyWorkflow();\n const steps = [...wf.steps];\n steps.push(step);\n\n if (afterStepId) {\n const afterIdx = steps.findIndex((s) => s.id === afterStepId);\n if (afterIdx !== -1) {\n const afterStep = steps[afterIdx] as WorkflowStep;\n const prevNext = afterStep.nextStepId;\n steps[afterIdx] = { ...afterStep, nextStepId: step.id };\n if (prevNext && !step.nextStepId) {\n const newStepIdx = steps.findIndex((s) => s.id === step.id);\n if (newStepIdx !== -1) {\n steps[newStepIdx] = {\n ...steps[newStepIdx],\n nextStepId: prevNext,\n } as WorkflowStep;\n }\n }\n }\n }\n\n const initialStepId =\n wf.initialStepId || (steps.length === 1 ? step.id : wf.initialStepId);\n emit({ ...wf, steps, initialStepId });\n },\n [workingWorkflow, emit],\n );\n\n const removeStep = useCallback(\n (stepId: string) => {\n if (!workingWorkflow) return;\n\n const removedStep = workingWorkflow.steps.find((s) => s.id === stepId);\n const successor = removedStep?.nextStepId;\n\n const steps = workingWorkflow.steps\n .filter((s) => s.id !== stepId)\n .map((s) => {\n // Re-link predecessors to the removed step's successor\n let updated =\n s.nextStepId === stepId\n ? ({ ...s, nextStepId: successor } as WorkflowStep)\n : s;\n // Clean up group references\n updated = clearChildRef(updated, stepId);\n return updated;\n });\n\n let initialStepId = workingWorkflow.initialStepId;\n if (initialStepId === stepId) {\n initialStepId = successor ?? steps[0]?.id ?? \"\";\n }\n\n emit({ ...workingWorkflow, steps, initialStepId });\n },\n [workingWorkflow, emit],\n );\n\n const updateStep = useCallback(\n (stepId: string, updates: Record<string, unknown>) => {\n if (!workingWorkflow) return;\n\n const steps = workingWorkflow.steps.map((s) => {\n if (s.id !== stepId) {\n // If the ID changed, update references in other steps\n const newId = updates.id as string | undefined;\n if (newId) {\n let updated =\n s.nextStepId === stepId\n ? ({ ...s, nextStepId: newId } as WorkflowStep)\n : s;\n updated = replaceChildRef(updated, stepId, newId);\n return updated;\n }\n return s;\n }\n\n // Merge updates into the step\n const merged = { ...s } as Record<string, unknown>;\n for (const [key, value] of Object.entries(updates)) {\n if (key === \"params\" && value && typeof value === \"object\") {\n merged.params = {\n ...(merged.params as Record<string, unknown>),\n ...(value as Record<string, unknown>),\n };\n } else {\n merged[key] = value;\n }\n }\n return merged as WorkflowStep;\n });\n\n let initialStepId = workingWorkflow.initialStepId;\n const newId = updates.id as string | undefined;\n if (newId && initialStepId === stepId) {\n initialStepId = newId;\n }\n\n emit({ ...workingWorkflow, steps, initialStepId });\n },\n [workingWorkflow, emit],\n );\n\n const connectSteps = useCallback(\n (sourceId: string, targetId: string) => {\n if (!workingWorkflow) return;\n\n const effectiveSourceId = sourceId.startsWith(\"__header__\")\n ? sourceId.replace(\"__header__\", \"\")\n : sourceId;\n\n // Reject if connecting would create a cycle\n if (canReach(workingWorkflow.steps, targetId, effectiveSourceId)) return;\n\n // Connection from a group header → set the group's child param\n if (sourceId.startsWith(\"__header__\")) {\n const groupId = effectiveSourceId;\n const steps = clearIncomingRefs(workingWorkflow.steps, targetId).map(\n (s) => (s.id === groupId ? setChildRef(s, targetId) : s),\n );\n emit({ ...workingWorkflow, steps });\n return;\n }\n\n // Regular connection: clear existing incoming refs, then set nextStepId\n const steps = clearIncomingRefs(workingWorkflow.steps, targetId).map(\n (s) =>\n s.id === sourceId\n ? ({ ...s, nextStepId: targetId } as WorkflowStep)\n : s,\n );\n\n emit({ ...workingWorkflow, steps });\n },\n [workingWorkflow, emit],\n );\n\n const disconnectStep = useCallback(\n (sourceId: string) => {\n if (!workingWorkflow) return;\n\n // Disconnection from a group header → clear all child refs\n if (sourceId.startsWith(\"__header__\")) {\n const groupId = sourceId.replace(\"__header__\", \"\");\n const steps = workingWorkflow.steps.map((s) =>\n s.id === groupId ? clearAllChildRefs(s) : s,\n );\n emit({ ...workingWorkflow, steps });\n return;\n }\n\n // Regular disconnection: remove nextStepId\n const steps = workingWorkflow.steps.map((s) => {\n if (s.id !== sourceId) return s;\n const { nextStepId, ...rest } = s;\n return rest as WorkflowStep;\n });\n\n emit({ ...workingWorkflow, steps });\n },\n [workingWorkflow, emit],\n );\n\n const updateWorkflowMeta = useCallback(\n (updates: Partial<WorkflowDefinition>) => {\n if (!workingWorkflow) return;\n emit({ ...workingWorkflow, ...updates });\n },\n [workingWorkflow, emit],\n );\n\n return {\n workingWorkflow,\n addStep,\n removeStep,\n updateStep,\n connectSteps,\n disconnectStep,\n updateWorkflowMeta,\n };\n}\n",
|
|
49
50
|
"import type {\n Diagnostic,\n ExecutionState,\n StepExecutionRecord,\n WorkflowDefinition,\n WorkflowStep,\n} from \"@remoraflow/core\";\nimport type React from \"react\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport type { StepExecutionSummary } from \"../execution-state\";\nimport type { StepNodeData } from \"../graph-layout\";\n\nexport const EMPTY_DIAGNOSTICS: Diagnostic[] = [];\n\nexport interface SelectionState {\n selectedStep: WorkflowStep | null;\n selectedDiagnostics: Diagnostic[];\n selectedExecutionSummary: StepExecutionSummary | undefined;\n selectedExecutionRecords: StepExecutionRecord[] | undefined;\n}\n\nexport function useSelectionState(opts: {\n activeWorkflow: WorkflowDefinition | null;\n activeDiagnostics: Diagnostic[];\n executionState: ExecutionState | undefined;\n onStepSelect?: (step: WorkflowStep | null, diagnostics: Diagnostic[]) => void;\n}) {\n const { activeWorkflow, activeDiagnostics, executionState, onStepSelect } =\n opts;\n\n // Store only the selected step ID. The step object is derived from the\n // workflow so it updates in the same render cycle as workflow edits,\n // avoiding a second render that would reset input cursor positions.\n const [selectedStepId, setSelectedStepId] = useState<string | null>(null);\n const [selectedDiagnostics, setSelectedDiagnostics] =\n useState<Diagnostic[]>(EMPTY_DIAGNOSTICS);\n const [selectedExecutionSummary, setSelectedExecutionSummary] = useState<\n StepExecutionSummary | undefined\n >();\n const [selectedExecutionRecords, setSelectedExecutionRecords] = useState<\n StepExecutionRecord[] | undefined\n >();\n\n // Derive the full step object from the workflow.\n const selectedStep = useMemo(\n () =>\n selectedStepId\n ? (activeWorkflow?.steps.find((s) => s.id === selectedStepId) ?? null)\n : null,\n [selectedStepId, activeWorkflow],\n );\n\n // Public setter that accepts a step object (for API compatibility).\n const setSelectedStep = useCallback((step: WorkflowStep | null) => {\n setSelectedStepId(step?.id ?? null);\n }, []);\n\n const clearSelection = useCallback(() => {\n setSelectedStepId(null);\n setSelectedDiagnostics([]);\n setSelectedExecutionSummary(undefined);\n setSelectedExecutionRecords(undefined);\n onStepSelect?.(null, []);\n }, [onStepSelect]);\n\n const onNodeClick = useCallback(\n (_: React.MouseEvent, node: { id: string; data: unknown }) => {\n const data = node.data as StepNodeData;\n if (!data.step) return;\n setSelectedStepId(data.step.id);\n setSelectedDiagnostics(data.diagnostics);\n setSelectedExecutionSummary(data.executionSummary);\n setSelectedExecutionRecords(\n executionState?.stepRecords.filter(\n (r: StepExecutionRecord) => r.stepId === data.step.id,\n ),\n );\n onStepSelect?.(data.step, data.diagnostics);\n },\n [onStepSelect, executionState],\n );\n\n const selectStepForEditing = useCallback(\n (stepId: string) => {\n const step = activeWorkflow?.steps.find((s) => s.id === stepId);\n if (step) {\n setSelectedStepId(stepId);\n setSelectedDiagnostics(\n activeDiagnostics.filter((d) => d.location.stepId === stepId),\n );\n }\n },\n [activeWorkflow, activeDiagnostics],\n );\n\n return {\n selectedStep,\n selectedDiagnostics,\n selectedExecutionSummary,\n selectedExecutionRecords,\n clearSelection,\n onNodeClick,\n selectStepForEditing,\n setSelectedStep,\n setSelectedDiagnostics,\n };\n}\n",
|
|
50
|
-
"import type { NodeProps } from \"@xyflow/react\";\nimport { Bot } from \"lucide-react\";\nimport type { StepNodeData } from \"../graph-layout\";\nimport { BaseNode } from \"./base-node\";\n\nexport function AgentLoopNode({ data, selected }: NodeProps) {\n const {\n step,\n diagnostics,\n hasSourceEdge,\n executionSummary,\n paused,\n layoutDirection,\n } = data as unknown as StepNodeData;\n if (step.type !== \"agent-loop\") return null;\n\n return (\n <BaseNode\n id={step.id}\n name={step.name}\n typeLabel=\"Agent Loop\"\n typeLabelColor=\"text-teal-500\"\n accent=\"#14b8a6\"\n icon={<Bot className=\"w-3.5 h-3.5\" />}\n description={step.description}\n diagnostics={diagnostics}\n selected={selected}\n hasSourceEdge={hasSourceEdge}\n executionSummary={executionSummary}\n paused={paused}\n layoutDirection={layoutDirection}\n >\n <div className=\"text-[11px] text-muted-foreground italic line-clamp-2 bg-muted rounded p-1.5 font-mono\">\n {step.params.instructions}\n </div>\n {
|
|
51
|
+
"import type { NodeProps } from \"@xyflow/react\";\nimport { Bot } from \"lucide-react\";\nimport type { StepNodeData } from \"../graph-layout\";\nimport { useToolSchemas } from \"../tool-schemas-context\";\nimport { BaseNode } from \"./base-node\";\n\nexport function AgentLoopNode({ data, selected }: NodeProps) {\n const {\n step,\n diagnostics,\n hasSourceEdge,\n executionSummary,\n paused,\n layoutDirection,\n } = data as unknown as StepNodeData;\n const toolSchemas = useToolSchemas();\n if (step.type !== \"agent-loop\") return null;\n\n const toolLabels = step.params.tools.map(\n (name) => toolSchemas?.[name]?.displayName ?? name,\n );\n\n return (\n <BaseNode\n id={step.id}\n name={step.name}\n typeLabel=\"Agent Loop\"\n typeLabelColor=\"text-teal-500\"\n accent=\"#14b8a6\"\n icon={<Bot className=\"w-3.5 h-3.5\" />}\n description={step.description}\n diagnostics={diagnostics}\n selected={selected}\n hasSourceEdge={hasSourceEdge}\n executionSummary={executionSummary}\n paused={paused}\n layoutDirection={layoutDirection}\n >\n <div className=\"text-[11px] text-muted-foreground italic line-clamp-2 bg-muted rounded p-1.5 font-mono\">\n {step.params.instructions}\n </div>\n {toolLabels.length > 0 && (\n <div className=\"mt-1.5 flex gap-1.5 text-[11px]\">\n <span className=\"text-muted-foreground shrink-0\">tools:</span>\n <span className=\"font-mono text-muted-foreground truncate\">\n {toolLabels.join(\", \")}\n </span>\n </div>\n )}\n </BaseNode>\n );\n}\n",
|
|
51
52
|
"import type { Diagnostic } from \"@remoraflow/core\";\nimport { Handle, Position } from \"@xyflow/react\";\nimport type { ReactNode } from \"react\";\nimport { useEditContext } from \"../edit-context\";\nimport type { StepExecutionSummary } from \"../execution-state\";\nimport type { LayoutDirection } from \"../graph-layout\";\n\ninterface BaseNodeProps {\n id: string;\n name: string;\n typeLabel: string;\n typeLabelColor: string;\n accent: string;\n description: string;\n diagnostics: Diagnostic[];\n icon?: ReactNode;\n children?: ReactNode;\n selected?: boolean;\n hasSourceEdge?: boolean;\n hasTargetEdge?: boolean;\n executionSummary?: StepExecutionSummary;\n paused?: boolean;\n layoutDirection?: LayoutDirection;\n}\n\nfunction StatusIcon({ status, paused }: { status: string; paused?: boolean }) {\n switch (status) {\n case \"running\":\n if (paused) {\n return (\n <svg\n className=\"w-3.5 h-3.5 text-amber-500 shrink-0\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n role=\"img\"\n >\n <title>Paused</title>\n <rect x=\"3\" y=\"2\" width=\"4\" height=\"12\" rx=\"1\" />\n <rect x=\"9\" y=\"2\" width=\"4\" height=\"12\" rx=\"1\" />\n </svg>\n );\n }\n return (\n <span className=\"inline-block w-3.5 h-3.5 rounded-full border-2 border-blue-400 border-t-transparent animate-spin shrink-0\" />\n );\n case \"completed\":\n return (\n <svg\n className=\"w-3.5 h-3.5 text-green-500 shrink-0\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n role=\"img\"\n >\n <title>Completed</title>\n <path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.75.75 0 0 1 1.06-1.06L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\" />\n </svg>\n );\n case \"failed\":\n return (\n <svg\n className=\"w-3.5 h-3.5 text-red-500 shrink-0\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n role=\"img\"\n >\n <title>Failed</title>\n <path d=\"M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.75.75 0 1 1 1.06 1.06L9.06 8l3.22 3.22a.75.75 0 1 1-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 0 1-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z\" />\n </svg>\n );\n default:\n return null;\n }\n}\n\nexport function BaseNode({\n id,\n name,\n typeLabel,\n typeLabelColor,\n accent,\n description,\n diagnostics,\n icon,\n children,\n selected,\n hasSourceEdge = true,\n hasTargetEdge = true,\n executionSummary,\n paused,\n layoutDirection = \"vertical\",\n}: BaseNodeProps) {\n const { isEditing, onDeleteStep } = useEditContext();\n const targetPosition =\n layoutDirection === \"horizontal\" ? Position.Left : Position.Top;\n const sourcePosition =\n layoutDirection === \"horizontal\" ? Position.Right : Position.Bottom;\n const hasErrors = diagnostics.some((d) => d.severity === \"error\");\n const hasWarnings =\n !hasErrors && diagnostics.some((d) => d.severity === \"warning\");\n\n let ringClass = \"\";\n let opacityClass = \"\";\n if (executionSummary) {\n switch (executionSummary.status) {\n case \"running\":\n ringClass = paused\n ? \"ring-2 ring-amber-400\"\n : \"ring-2 ring-blue-400 animate-pulse\";\n break;\n case \"completed\":\n ringClass = \"ring-2 ring-green-400\";\n break;\n case \"failed\":\n ringClass = \"ring-2 ring-red-500\";\n break;\n case \"skipped\":\n opacityClass = \"opacity-50\";\n break;\n }\n } else {\n if (hasErrors) ringClass = \"ring-2 ring-red-500\";\n else if (hasWarnings) ringClass = \"ring-2 ring-amber-400\";\n else if (selected) ringClass = \"ring-2 ring-blue-400\";\n }\n\n const hasRing = hasErrors || hasWarnings || selected || !!executionSummary;\n\n const handleClass = isEditing\n ? \"!w-3 !h-3 !bg-blue-400 hover:!bg-blue-500 !border-2 !border-background\"\n : \"!w-2 !h-2 !bg-muted-foreground\";\n\n return (\n <div\n className={`rounded-lg shadow-md dark:shadow-foreground/[0.06] border-l-4 w-[300px] transition-shadow duration-150 bg-card ${ringClass} ${opacityClass} ${hasRing ? \"\" : \"hover:ring-2 hover:ring-ring\"} ${isEditing ? \"cursor-grab active:cursor-grabbing group\" : \"\"} relative`}\n style={{ borderLeftColor: accent }}\n >\n {isEditing && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onDeleteStep(id);\n }}\n className=\"absolute -top-2 -right-2 z-10 w-5 h-5 rounded-full bg-muted-foreground/70 text-white text-xs flex items-center justify-center hover:bg-muted-foreground shadow-sm transition-opacity opacity-0 group-hover:opacity-100\"\n title=\"Delete step\"\n >\n ×\n </button>\n )}\n {(hasTargetEdge || (isEditing && hasTargetEdge !== false)) && (\n <Handle\n type=\"target\"\n position={targetPosition}\n className={handleClass}\n />\n )}\n <div className=\"px-3 py-2.5\">\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex items-center gap-1.5 min-w-0\">\n {icon && (\n <span className={`shrink-0 ${typeLabelColor}`}>{icon}</span>\n )}\n <span\n className={`text-[10px] font-semibold uppercase tracking-wide shrink-0 ${typeLabelColor}`}\n >\n {typeLabel}\n </span>\n </div>\n <div className=\"flex items-center gap-1.5 shrink-0\">\n {executionSummary && executionSummary.totalRetries > 0 && (\n <span className=\"text-[10px] px-1 py-0.5 rounded bg-amber-100 text-amber-600 dark:bg-amber-900/50 dark:text-amber-400 font-medium\">\n {executionSummary.totalRetries}{\" \"}\n {executionSummary.totalRetries === 1 ? \"retry\" : \"retries\"}\n </span>\n )}\n {executionSummary && (\n <StatusIcon status={executionSummary.status} paused={paused} />\n )}\n {(hasErrors || hasWarnings) && (\n <span\n className={`text-xs px-1.5 py-0.5 rounded-full font-medium ${\n hasErrors\n ? \"bg-red-100 text-red-700 dark:bg-red-900/50 dark:text-red-400\"\n : \"bg-amber-100 text-amber-700 dark:bg-amber-900/50 dark:text-amber-400\"\n }`}\n >\n {diagnostics.length}\n </span>\n )}\n </div>\n </div>\n <div className=\"font-medium text-sm truncate text-foreground\">\n {name}\n </div>\n <div className=\"text-[11px] font-mono text-muted-foreground\">{id}</div>\n <div className=\"text-[11px] mt-1 text-muted-foreground\">\n {description}\n </div>\n {children && (\n <div className=\"mt-2 border-t pt-2 border-border\">{children}</div>\n )}\n </div>\n {(hasSourceEdge || (isEditing && hasSourceEdge !== false)) && (\n <Handle\n type=\"source\"\n position={sourcePosition}\n className={handleClass}\n />\n )}\n </div>\n );\n}\n",
|
|
52
53
|
"import type { NodeProps } from \"@xyflow/react\";\nimport { Hand } from \"lucide-react\";\nimport type { StepNodeData } from \"../graph-layout\";\nimport { BaseNode } from \"./base-node\";\n\nfunction renderExpr(\n expr:\n | { type: \"literal\"; value: unknown }\n | { type: \"jmespath\"; expression: string }\n | { type: \"template\"; template: string },\n): string {\n if (expr.type === \"literal\") return JSON.stringify(expr.value);\n if (expr.type === \"template\") return expr.template;\n return expr.expression;\n}\n\nexport function EndNode({ data, selected }: NodeProps) {\n const {\n step,\n diagnostics,\n executionSummary,\n outputSchema,\n paused,\n layoutDirection,\n } = data as unknown as StepNodeData;\n if (step?.type !== \"end\") return null;\n\n const schema = outputSchema as\n | { properties?: Record<string, { type?: string }> }\n | undefined;\n const schemaProperties = schema?.properties\n ? Object.entries(schema.properties)\n : [];\n\n return (\n <BaseNode\n id={step.id}\n name={step.name}\n typeLabel=\"End\"\n typeLabelColor=\"text-muted-foreground\"\n accent=\"#6b7280\"\n icon={<Hand className=\"w-3.5 h-3.5\" />}\n description={step.description}\n diagnostics={diagnostics}\n selected={selected}\n hasSourceEdge={false}\n executionSummary={executionSummary}\n paused={paused}\n layoutDirection={layoutDirection}\n >\n {step.params?.output && (\n <div className=\"flex gap-1.5 text-[11px]\">\n <span className=\"text-muted-foreground shrink-0\">output:</span>\n <span className=\"font-mono text-muted-foreground truncate\">\n {renderExpr(step.params.output)}\n </span>\n </div>\n )}\n {schemaProperties.length > 0 && (\n <div className=\"mt-1 space-y-0.5\">\n <div className=\"text-[10px] text-muted-foreground uppercase tracking-wide font-semibold\">\n Output Schema\n </div>\n {schemaProperties.map(([key, val]) => (\n <div key={key} className=\"flex gap-1.5 text-[11px]\">\n <span className=\"text-muted-foreground font-medium shrink-0\">\n {key}\n </span>\n <span className=\"font-mono text-muted-foreground\">\n {val?.type}\n </span>\n </div>\n ))}\n </div>\n )}\n </BaseNode>\n );\n}\n",
|
|
53
54
|
"import type { NodeProps } from \"@xyflow/react\";\nimport { FileOutput } from \"lucide-react\";\nimport type { StepNodeData } from \"../graph-layout\";\nimport { BaseNode } from \"./base-node\";\n\nfunction renderExpr(\n expr:\n | { type: \"literal\"; value: unknown }\n | { type: \"jmespath\"; expression: string }\n | { type: \"template\"; template: string },\n): string {\n if (expr.type === \"literal\") return JSON.stringify(expr.value);\n if (expr.type === \"template\") return expr.template;\n return expr.expression;\n}\n\nexport function ExtractDataNode({ data, selected }: NodeProps) {\n const {\n step,\n diagnostics,\n hasSourceEdge,\n executionSummary,\n paused,\n layoutDirection,\n } = data as unknown as StepNodeData;\n if (step.type !== \"extract-data\") return null;\n\n const outputFormat = step.params.outputFormat as\n | { properties?: Record<string, unknown> }\n | undefined;\n const outputKeys = outputFormat?.properties\n ? Object.keys(outputFormat.properties)\n : [];\n\n const resolved = executionSummary?.latestResolvedInputs as\n | Record<string, unknown>\n | undefined;\n const hasSourceResolved = resolved?.sourceData !== undefined;\n\n return (\n <BaseNode\n id={step.id}\n name={step.name}\n typeLabel=\"Extract Data\"\n typeLabelColor=\"text-purple-500\"\n accent=\"#a855f7\"\n icon={<FileOutput className=\"w-3.5 h-3.5\" />}\n description={step.description}\n diagnostics={diagnostics}\n selected={selected}\n hasSourceEdge={hasSourceEdge}\n executionSummary={executionSummary}\n paused={paused}\n layoutDirection={layoutDirection}\n >\n <div className=\"flex gap-1.5 text-[11px]\">\n <span className=\"text-muted-foreground shrink-0\">source:</span>\n <span\n className={`font-mono truncate ${hasSourceResolved ? \"text-emerald-700 dark:text-emerald-400\" : \"text-muted-foreground\"}`}\n title={\n hasSourceResolved ? renderExpr(step.params.sourceData) : undefined\n }\n >\n {hasSourceResolved\n ? typeof resolved.sourceData === \"string\"\n ? resolved.sourceData\n : JSON.stringify(resolved.sourceData)\n : renderExpr(step.params.sourceData)}\n </span>\n </div>\n {outputKeys.length > 0 && (\n <div className=\"mt-1 flex gap-1.5 text-[11px]\">\n <span className=\"text-muted-foreground shrink-0\">output:</span>\n <span className=\"font-mono text-muted-foreground\">\n {outputKeys.join(\", \")}\n </span>\n </div>\n )}\n </BaseNode>\n );\n}\n",
|
|
@@ -58,10 +59,10 @@
|
|
|
58
59
|
"import type { NodeProps } from \"@xyflow/react\";\nimport { Handle, Position } from \"@xyflow/react\";\nimport type { LayoutDirection } from \"../graph-layout\";\n\nexport function StartNode({ data, selected }: NodeProps) {\n const { layoutDirection } = (data ?? {}) as {\n layoutDirection?: LayoutDirection;\n };\n const sourcePosition =\n layoutDirection === \"horizontal\" ? Position.Right : Position.Bottom;\n\n return (\n <div\n className={`rounded-full w-[60px] h-[60px] flex items-center justify-center shadow-sm border transition-all duration-150 bg-muted border-border hover:bg-accent ${selected ? \"ring-2 ring-blue-400\" : \"hover:ring-2 hover:ring-ring\"}`}\n >\n <span className=\"text-xs font-medium text-muted-foreground\">Start</span>\n <Handle\n type=\"source\"\n position={sourcePosition}\n className=\"!w-2 !h-2 !bg-muted-foreground\"\n />\n </div>\n );\n}\n",
|
|
59
60
|
"import type { NodeProps } from \"@xyflow/react\";\nimport { Play } from \"lucide-react\";\nimport type { StepNodeData } from \"../graph-layout\";\nimport { BaseNode } from \"./base-node\";\n\nexport function StartStepNode({ data, selected }: NodeProps) {\n const {\n step,\n diagnostics,\n hasSourceEdge,\n executionSummary,\n inputSchema,\n paused,\n layoutDirection,\n } = data as unknown as StepNodeData;\n if (step.type !== \"start\") return null;\n\n const schema = inputSchema as\n | { properties?: Record<string, { type?: string }> }\n | undefined;\n const properties = schema?.properties\n ? Object.entries(schema.properties)\n : [];\n\n return (\n <BaseNode\n id={step.id}\n name={step.name}\n typeLabel=\"Start\"\n typeLabelColor=\"text-green-500\"\n accent=\"#22c55e\"\n icon={<Play className=\"w-3.5 h-3.5\" />}\n description={step.description}\n diagnostics={diagnostics}\n selected={selected}\n hasSourceEdge={hasSourceEdge}\n hasTargetEdge={false}\n executionSummary={executionSummary}\n paused={paused}\n layoutDirection={layoutDirection}\n >\n {properties.length > 0 && (\n <div className=\"space-y-0.5\">\n <div className=\"text-[10px] text-muted-foreground uppercase tracking-wide font-semibold\">\n Inputs\n </div>\n {properties.map(([key, val]) => (\n <div key={key} className=\"flex gap-1.5 text-[11px]\">\n <span className=\"text-muted-foreground font-medium shrink-0\">\n {key}\n </span>\n <span className=\"font-mono text-muted-foreground\">\n {val?.type}\n </span>\n </div>\n ))}\n </div>\n )}\n </BaseNode>\n );\n}\n",
|
|
60
61
|
"import type { NodeProps } from \"@xyflow/react\";\nimport { Handle, Position } from \"@xyflow/react\";\nimport { GitBranch } from \"lucide-react\";\nimport { useEditContext } from \"../edit-context\";\nimport type { StepNodeData } from \"../graph-layout\";\nimport { BaseNode } from \"./base-node\";\n\nfunction renderExpr(\n expr:\n | { type: \"literal\"; value: unknown }\n | { type: \"jmespath\"; expression: string }\n | { type: \"template\"; template: string },\n): string {\n if (expr.type === \"literal\") return JSON.stringify(expr.value);\n if (expr.type === \"template\") return expr.template;\n return expr.expression;\n}\n\nexport function SwitchCaseNode({ data, selected }: NodeProps) {\n const { isEditing, onDeleteStep } = useEditContext();\n const {\n step,\n diagnostics,\n isGroup,\n groupWidth,\n groupHeight,\n hasSourceEdge,\n executionSummary,\n paused,\n layoutDirection,\n } = data as unknown as StepNodeData & {\n isGroup?: boolean;\n groupWidth?: number;\n groupHeight?: number;\n };\n const targetPosition =\n layoutDirection === \"horizontal\" ? Position.Left : Position.Top;\n const sourcePosition =\n layoutDirection === \"horizontal\" ? Position.Right : Position.Bottom;\n if (step.type !== \"switch-case\") return null;\n\n if (isGroup) {\n const hasErrors = diagnostics.some((d) => d.severity === \"error\");\n const hasWarnings =\n !hasErrors && diagnostics.some((d) => d.severity === \"warning\");\n\n let ringClass = \"\";\n let borderColor = \"border-amber-300 dark:border-amber-700\";\n if (executionSummary) {\n switch (executionSummary.status) {\n case \"running\":\n ringClass = paused\n ? \"ring-2 ring-amber-400\"\n : \"ring-2 ring-blue-400 animate-pulse\";\n borderColor = paused\n ? \"border-amber-300 dark:border-amber-700\"\n : \"border-blue-300 dark:border-blue-700\";\n break;\n case \"completed\":\n ringClass = \"ring-2 ring-green-400\";\n borderColor = \"border-green-400 dark:border-green-600\";\n break;\n case \"failed\":\n ringClass = \"ring-2 ring-red-500\";\n borderColor = \"border-red-300 dark:border-red-700\";\n break;\n }\n } else {\n if (hasErrors) ringClass = \"ring-2 ring-red-500\";\n else if (hasWarnings) ringClass = \"ring-2 ring-amber-400\";\n else if (selected) ringClass = \"ring-2 ring-amber-400\";\n }\n\n return (\n <div\n className={`rounded-xl border-2 border-dashed transition-colors duration-150 ${borderColor} bg-amber-50/30 hover:bg-amber-50/60 hover:border-amber-500 dark:bg-amber-950/30 dark:hover:bg-amber-950/50 dark:hover:border-amber-500 ${ringClass} ${isEditing ? \"group\" : \"\"} relative`}\n style={{ width: groupWidth, height: groupHeight }}\n >\n {isEditing && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onDeleteStep(step.id);\n }}\n className=\"absolute -top-2 -right-2 z-10 w-5 h-5 rounded-full bg-muted-foreground/70 text-white text-xs flex items-center justify-center hover:bg-muted-foreground shadow-sm transition-opacity opacity-0 group-hover:opacity-100\"\n title=\"Delete step\"\n >\n ×\n </button>\n )}\n <Handle\n type=\"target\"\n position={targetPosition}\n className={\n isEditing\n ? \"!w-3 !h-3 !bg-blue-400 hover:!bg-blue-500 !border-2 !border-background\"\n : \"!bg-amber-500 !w-2.5 !h-2.5\"\n }\n />\n <div className=\"px-3 py-2 flex items-center gap-2\">\n <GitBranch className=\"w-3.5 h-3.5 text-amber-500 shrink-0\" />\n <span className=\"text-[10px] font-semibold uppercase tracking-wide text-amber-500\">\n Branch\n </span>\n <span className=\"text-sm font-medium truncate text-foreground\">\n {step.name}\n </span>\n </div>\n {(hasSourceEdge || isEditing) && (\n <Handle\n type=\"source\"\n position={sourcePosition}\n className={\n isEditing\n ? \"!w-3 !h-3 !bg-blue-400 hover:!bg-blue-500 !border-2 !border-background\"\n : \"!bg-amber-500 !w-2.5 !h-2.5\"\n }\n />\n )}\n </div>\n );\n }\n\n // Non-group fallback\n const resolved = executionSummary?.latestResolvedInputs as\n | Record<string, unknown>\n | undefined;\n const hasSwitchResolved = resolved?.switchOn !== undefined;\n\n return (\n <BaseNode\n id={step.id}\n name={step.name}\n typeLabel=\"Switch Case\"\n typeLabelColor=\"text-amber-500\"\n accent=\"#f59e0b\"\n icon={<GitBranch className=\"w-3.5 h-3.5\" />}\n description={step.description}\n diagnostics={diagnostics}\n selected={selected}\n hasSourceEdge={hasSourceEdge}\n executionSummary={executionSummary}\n paused={paused}\n layoutDirection={layoutDirection}\n >\n <div className=\"flex gap-1.5 text-[11px]\">\n <span className=\"text-muted-foreground shrink-0\">on:</span>\n <span\n className={`font-mono truncate ${hasSwitchResolved ? \"text-emerald-700 dark:text-emerald-400\" : \"text-muted-foreground\"}`}\n title={\n hasSwitchResolved ? renderExpr(step.params.switchOn) : undefined\n }\n >\n {hasSwitchResolved\n ? JSON.stringify(resolved.switchOn)\n : renderExpr(step.params.switchOn)}\n </span>\n </div>\n <div className=\"mt-1.5 space-y-0.5\">\n {step.params.cases.map((c) => (\n <div\n key={c.branchBodyStepId}\n className=\"flex items-center gap-1.5 text-[11px]\"\n >\n <span className=\"font-mono text-muted-foreground\">\n {c.value.type === \"default\" ? \"default\" : renderExpr(c.value)}\n </span>\n <span className=\"text-muted-foreground/50\">→</span>\n <span className=\"font-mono text-muted-foreground\">\n {c.branchBodyStepId}\n </span>\n </div>\n ))}\n </div>\n </BaseNode>\n );\n}\n",
|
|
61
|
-
"import type { NodeProps } from \"@xyflow/react\";\nimport { Wrench } from \"lucide-react\";\nimport type { StepNodeData } from \"../graph-layout\";\nimport { BaseNode } from \"./base-node\";\n\nfunction renderExpr(\n expr:\n | { type: \"literal\"; value: unknown }\n | { type: \"jmespath\"; expression: string }\n | { type: \"template\"; template: string },\n): string {\n if (expr.type === \"literal\") return JSON.stringify(expr.value);\n if (expr.type === \"template\") return expr.template;\n return expr.expression;\n}\n\nfunction formatValue(value: unknown): string {\n if (typeof value === \"string\") return value;\n return JSON.stringify(value);\n}\n\nexport function ToolCallNode({ data, selected }: NodeProps) {\n const {\n step,\n diagnostics,\n hasSourceEdge,\n executionSummary,\n paused,\n layoutDirection,\n } = data as unknown as StepNodeData;\n if (step.type !== \"tool-call\") return null;\n\n const entries = Object.entries(step.params.toolInput);\n const resolved = executionSummary?.latestResolvedInputs as\n | Record<string, unknown>\n | undefined;\n\n return (\n <BaseNode\n id={step.id}\n name={step.name}\n typeLabel=\"Tool Call\"\n typeLabelColor=\"text-blue-500\"\n accent=\"#3b82f6\"\n icon={<Wrench className=\"w-3.5 h-3.5\" />}\n description={step.description}\n diagnostics={diagnostics}\n selected={selected}\n hasSourceEdge={hasSourceEdge}\n executionSummary={executionSummary}\n paused={paused}\n layoutDirection={layoutDirection}\n >\n <div className=\"text-xs font-mono font-medium text-foreground\">\n {
|
|
62
|
+
"import type { NodeProps } from \"@xyflow/react\";\nimport { Wrench } from \"lucide-react\";\nimport type { StepNodeData } from \"../graph-layout\";\nimport { useToolDisplayName } from \"../tool-schemas-context\";\nimport { BaseNode } from \"./base-node\";\n\nfunction renderExpr(\n expr:\n | { type: \"literal\"; value: unknown }\n | { type: \"jmespath\"; expression: string }\n | { type: \"template\"; template: string },\n): string {\n if (expr.type === \"literal\") return JSON.stringify(expr.value);\n if (expr.type === \"template\") return expr.template;\n return expr.expression;\n}\n\nfunction formatValue(value: unknown): string {\n if (typeof value === \"string\") return value;\n return JSON.stringify(value);\n}\n\nexport function ToolCallNode({ data, selected }: NodeProps) {\n const {\n step,\n diagnostics,\n hasSourceEdge,\n executionSummary,\n paused,\n layoutDirection,\n } = data as unknown as StepNodeData;\n const toolName = step.type === \"tool-call\" ? step.params.toolName : \"\";\n const displayName = useToolDisplayName(toolName);\n if (step.type !== \"tool-call\") return null;\n\n const entries = Object.entries(step.params.toolInput);\n const resolved = executionSummary?.latestResolvedInputs as\n | Record<string, unknown>\n | undefined;\n\n return (\n <BaseNode\n id={step.id}\n name={step.name}\n typeLabel=\"Tool Call\"\n typeLabelColor=\"text-blue-500\"\n accent=\"#3b82f6\"\n icon={<Wrench className=\"w-3.5 h-3.5\" />}\n description={step.description}\n diagnostics={diagnostics}\n selected={selected}\n hasSourceEdge={hasSourceEdge}\n executionSummary={executionSummary}\n paused={paused}\n layoutDirection={layoutDirection}\n >\n <div className=\"text-xs font-mono font-medium text-foreground\">\n {displayName}\n </div>\n {entries.length > 0 && (\n <div className=\"mt-1.5 space-y-0.5\">\n {entries.map(([key, val]) => {\n const resolvedVal = resolved?.[key];\n const hasResolved = resolvedVal !== undefined;\n return (\n <div key={key} className=\"flex gap-1.5 text-[11px]\">\n <span className=\"text-muted-foreground shrink-0\">{key}:</span>\n <span\n className={`font-mono truncate ${hasResolved ? \"text-emerald-700 dark:text-emerald-400\" : \"text-muted-foreground\"}`}\n title={hasResolved ? renderExpr(val) : undefined}\n >\n {hasResolved ? formatValue(resolvedVal) : renderExpr(val)}\n </span>\n </div>\n );\n })}\n </div>\n )}\n </BaseNode>\n );\n}\n",
|
|
62
63
|
"import type { NodeProps } from \"@xyflow/react\";\nimport { Handle, Position } from \"@xyflow/react\";\nimport { Timer } from \"lucide-react\";\nimport { useEditContext } from \"../edit-context\";\nimport type { StepNodeData } from \"../graph-layout\";\nimport { BaseNode } from \"./base-node\";\n\nfunction renderExpr(\n expr:\n | { type: \"literal\"; value: unknown }\n | { type: \"jmespath\"; expression: string }\n | { type: \"template\"; template: string },\n): string {\n if (expr.type === \"literal\") return JSON.stringify(expr.value);\n if (expr.type === \"template\") return expr.template;\n return expr.expression;\n}\n\nexport function WaitForConditionNode({ data, selected }: NodeProps) {\n const { isEditing, onDeleteStep } = useEditContext();\n const {\n step,\n diagnostics,\n isGroup,\n groupWidth,\n groupHeight,\n hasSourceEdge,\n executionSummary,\n paused,\n layoutDirection,\n } = data as unknown as StepNodeData & {\n isGroup?: boolean;\n groupWidth?: number;\n groupHeight?: number;\n };\n const targetPosition =\n layoutDirection === \"horizontal\" ? Position.Left : Position.Top;\n const sourcePosition =\n layoutDirection === \"horizontal\" ? Position.Right : Position.Bottom;\n if (step.type !== \"wait-for-condition\") return null;\n\n if (isGroup) {\n const hasErrors = diagnostics.some((d) => d.severity === \"error\");\n const hasWarnings =\n !hasErrors && diagnostics.some((d) => d.severity === \"warning\");\n\n let ringClass = \"\";\n if (executionSummary) {\n switch (executionSummary.status) {\n case \"running\":\n ringClass = paused\n ? \"ring-2 ring-amber-400\"\n : \"ring-2 ring-blue-400 animate-pulse\";\n break;\n case \"completed\":\n ringClass = \"ring-2 ring-green-400\";\n break;\n case \"failed\":\n ringClass = \"ring-2 ring-red-500\";\n break;\n }\n } else if (hasErrors) ringClass = \"ring-2 ring-red-500\";\n else if (hasWarnings) ringClass = \"ring-2 ring-amber-400\";\n else if (selected) ringClass = \"ring-2 ring-orange-400\";\n\n return (\n <div\n className={`rounded-xl border-2 border-dashed transition-colors duration-150 border-orange-300 bg-orange-50/30 dark:border-orange-700 dark:bg-orange-950/30 ${ringClass} ${isEditing ? \"group\" : \"\"} relative`}\n style={{ width: groupWidth, height: groupHeight }}\n >\n {isEditing && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onDeleteStep(step.id);\n }}\n className=\"absolute -top-2 -right-2 z-10 w-5 h-5 rounded-full bg-muted-foreground/70 text-white text-xs flex items-center justify-center hover:bg-muted-foreground shadow-sm transition-opacity opacity-0 group-hover:opacity-100\"\n title=\"Delete step\"\n >\n ×\n </button>\n )}\n <Handle\n type=\"target\"\n position={targetPosition}\n className={\n isEditing\n ? \"!w-3 !h-3 !bg-blue-400 hover:!bg-blue-500 !border-2 !border-background\"\n : \"!bg-orange-500 !w-2.5 !h-2.5\"\n }\n />\n <div className=\"px-3 py-2 flex items-center gap-2\">\n <Timer className=\"w-3.5 h-3.5 text-orange-500 shrink-0\" />\n <span className=\"text-[10px] font-semibold uppercase tracking-wide text-orange-500\">\n Wait\n </span>\n <span className=\"text-sm font-medium text-foreground truncate\">\n {step.name}\n </span>\n </div>\n {(hasSourceEdge || isEditing) && (\n <Handle\n type=\"source\"\n position={sourcePosition}\n className={\n isEditing\n ? \"!w-3 !h-3 !bg-blue-400 hover:!bg-blue-500 !border-2 !border-background\"\n : \"!bg-orange-500 !w-2.5 !h-2.5\"\n }\n />\n )}\n </div>\n );\n }\n\n // Non-group fallback\n return (\n <BaseNode\n id={step.id}\n name={step.name}\n typeLabel=\"Wait For Condition\"\n typeLabelColor=\"text-orange-500\"\n accent=\"#f97316\"\n icon={<Timer className=\"w-3.5 h-3.5\" />}\n description={step.description}\n diagnostics={diagnostics}\n selected={selected}\n hasSourceEdge={hasSourceEdge}\n executionSummary={executionSummary}\n paused={paused}\n layoutDirection={layoutDirection}\n >\n <div className=\"flex gap-1.5 text-[11px]\">\n <span className=\"text-muted-foreground shrink-0\">until:</span>\n <span className=\"font-mono text-muted-foreground truncate\">\n {renderExpr(step.params.condition)}\n </span>\n </div>\n {step.params.maxAttempts && (\n <div className=\"mt-0.5 flex gap-1.5 text-[11px]\">\n <span className=\"text-muted-foreground shrink-0\">max attempts:</span>\n <span className=\"font-mono text-muted-foreground\">\n {renderExpr(step.params.maxAttempts)}\n </span>\n </div>\n )}\n </BaseNode>\n );\n}\n"
|
|
63
64
|
],
|
|
64
|
-
"mappings": "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",
|
|
65
|
-
"debugId": "
|
|
65
|
+
"mappings": "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",
|
|
66
|
+
"debugId": "07137E025746F6F564756E2164756E21",
|
|
66
67
|
"names": []
|
|
67
68
|
}
|