package graphs import ( "strings" "code.tczkiot.com/wlw/ai-agent/internal/pkg/i18nx" ) const ( InterruptTypeHandoffConfirmation = "handoff_confirmation" ) var ( ConfirmOrCancelPrompt = i18nx.Get("graph.confirmOrCancel") NeedExplicitConfirmationPrompt = i18nx.Get("graph.needExplicitConfirmation") ConfirmationExpiredReply = i18nx.Get("graph.confirmationExpired") CancelHandoffReply = i18nx.Get("graph.cancelHandoff") ) type ConfirmationDecision string const ( ConfirmationDecisionConfirm ConfirmationDecision = "confirm" ConfirmationDecisionCancel ConfirmationDecision = "cancel" ) func ParseConfirmationDecision(value string) ConfirmationDecision { value = strings.ToLower(strings.TrimSpace(value)) if value == "" { return "" } cancelWords := []string{ "不确认", "取消", "不用", "不需要", "算了", "no", "cancel", "不提交", "不要提交", "暂不提交", "不办理", "不要办理", "不执行", "不要执行", } for _, item := range cancelWords { if strings.Contains(value, item) { return ConfirmationDecisionCancel } } confirmWords := []string{ "确认", "是", "好的", "可以", "ok", "yes", "continue", "confirm", "继续", "同意", "提交", "确定", "办理", "执行", } for _, item := range confirmWords { if strings.Contains(value, item) { return ConfirmationDecisionConfirm } } return "" } func IsCancellationReply(replyText string) bool { replyText = strings.TrimSpace(replyText) return strings.Contains(replyText, CancelHandoffReply) || strings.Contains(replyText, "已取消本次转人工。") || strings.Contains(replyText, "操作已取消。") }