diff --git a/comfy_api/latest/_io.py b/comfy_api/latest/_io.py index 93cf482ca..f464023ed 100644 --- a/comfy_api/latest/_io.py +++ b/comfy_api/latest/_io.py @@ -1309,6 +1309,7 @@ class NodeInfoV1: api_node: bool=None price_badge: dict | None = None search_aliases: list[str]=None + essentials_category: str=None @dataclass @@ -1430,6 +1431,8 @@ class Schema: """Flags a node as expandable, allowing NodeOutput to include 'expand' property.""" accept_all_inputs: bool=False """When True, all inputs from the prompt will be passed to the node as kwargs, even if not defined in the schema.""" + essentials_category: str | None = None + """Optional category for the Essentials tab. Path-based like category field (e.g., 'Basic', 'Image Tools/Editing').""" def validate(self): '''Validate the schema: @@ -1536,6 +1539,7 @@ class Schema: python_module=getattr(cls, "RELATIVE_PYTHON_MODULE", "nodes"), price_badge=self.price_badge.as_dict(self.inputs) if self.price_badge is not None else None, search_aliases=self.search_aliases if self.search_aliases else None, + essentials_category=self.essentials_category, ) return info diff --git a/server.py b/server.py index 2300393b2..694b94912 100644 --- a/server.py +++ b/server.py @@ -687,6 +687,10 @@ class PromptServer(): info['api_node'] = obj_class.API_NODE info['search_aliases'] = getattr(obj_class, 'SEARCH_ALIASES', []) + + if hasattr(obj_class, 'ESSENTIALS_CATEGORY'): + info['essentials_category'] = obj_class.ESSENTIALS_CATEGORY + return info @routes.get("/object_info")