package services import ( "strings" ) // supportedWebUICommands is the whitelist of commands the WebUI handles. var supportedWebUICommands = map[string]bool{ "compact": true, "new": true, "reload": true, "clone": true, "name": true, "model": true, "session": true, "export": true, "copy": true, } // SlashDispatchResult holds the parsed result of a slash command attempt. type SlashDispatchResult struct { Handled bool Command string Args string // For unsupported commands, return a friendly message Message string } // TrySlashDispatch checks if the message is a slash command the WebUI supports. func TrySlashDispatch(message string) SlashDispatchResult { if !strings.HasPrefix(message, "/") { return SlashDispatchResult{} } // strip leading slash and split trimmed := strings.TrimPrefix(message, "/") parts := strings.SplitN(trimmed, " ", 2) cmd := strings.ToLower(parts[0]) args := "" if len(parts) > 1 { args = strings.TrimSpace(parts[1]) } if !supportedWebUICommands[cmd] { return SlashDispatchResult{ Handled: true, Command: cmd, Args: args, Message: "该命令在 WebUI 模式下暂不支持,请在终端中使用", } } return SlashDispatchResult{ Handled: true, Command: cmd, Args: args, } }