"use client"; import { ArrowRight, MessageSquareText } from "lucide-react"; import { SectionCard } from "@/components/editor/section-card"; import { Input } from "@/components/ui/input"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Textarea } from "@/components/ui/textarea"; import { type MessageCompletionPolicy, type WorkflowNodeData, } from "../specs"; import { PanelAnchor } from "./PanelAnchorNavigation"; const COMPLETION_OPTIONS: Array<{ value: MessageCompletionPolicy; label: string; description: string; }> = [ { value: "interruptible", label: "可打断", description: "用户说话、发文字或图片时立即进入下一节点,并保留这次输入。", }, { value: "playback", label: "播放完继续", description: "播报期间关闭输入,实际播放完成后自动进入下一节点。", }, { value: "confirmation", label: "确认后继续", description: "关闭对话输入并显示弹窗,只有用户在客户端确认后才能继续。", }, ]; export function MessageNodePanel({ draft, set, setPatch, }: { draft: WorkflowNodeData; set: (key: string, value: unknown) => void; setPatch: (patch: Partial) => void; }) { const completionPolicy = draft.completionPolicy ?? "playback"; const completionDescription = COMPLETION_OPTIONS.find( (option) => option.value === completionPolicy, )?.description; const selectCompletionPolicy = (value: MessageCompletionPolicy) => { setPatch({ completionPolicy: value }); }; return ( <> } title="固定播报" description="配置进入 Message 节点后播放的固定话术" >