File size: 1,889 Bytes
d7fd867
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
"""

Feature flags module for ComfyUI WebSocket protocol negotiation.



This module handles capability negotiation between frontend and backend,

allowing graceful protocol evolution while maintaining backward compatibility.

"""

from typing import Any, Dict

from comfy.cli_args import args

# Default server capabilities
SERVER_FEATURE_FLAGS: Dict[str, Any] = {
    "supports_preview_metadata": True,
    "max_upload_size": args.max_upload_size * 1024 * 1024, # Convert MB to bytes
}


def get_connection_feature(

    sockets_metadata: Dict[str, Dict[str, Any]],

    sid: str,

    feature_name: str,

    default: Any = False

) -> Any:
    """

    Get a feature flag value for a specific connection.



    Args:

        sockets_metadata: Dictionary of socket metadata

        sid: Session ID of the connection

        feature_name: Name of the feature to check

        default: Default value if feature not found



    Returns:

        Feature value or default if not found

    """
    if sid not in sockets_metadata:
        return default

    return sockets_metadata[sid].get("feature_flags", {}).get(feature_name, default)


def supports_feature(

    sockets_metadata: Dict[str, Dict[str, Any]],

    sid: str,

    feature_name: str

) -> bool:
    """

    Check if a connection supports a specific feature.



    Args:

        sockets_metadata: Dictionary of socket metadata

        sid: Session ID of the connection

        feature_name: Name of the feature to check



    Returns:

        Boolean indicating if feature is supported

    """
    return get_connection_feature(sockets_metadata, sid, feature_name, False) is True


def get_server_features() -> Dict[str, Any]:
    """

    Get the server's feature flags.



    Returns:

        Dictionary of server feature flags

    """
    return SERVER_FEATURE_FLAGS.copy()