Files
myshell-ai-ComfyUI-ShellAge…/comfy-nodes/input_text.py
T
2024-10-17 16:22:11 +08:00

197 lines
5.8 KiB
Python
Executable File

import folder_paths
from PIL import Image, ImageOps
import numpy as np
import torch
class ShellAgentPluginInputText:
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"input_name": (
"STRING",
{"multiline": False, "default": "input_text"},
),
},
"optional": {
"default_value": (
"STRING",
{"multiline": True, "default": ""},
),
"description": (
"STRING",
{"multiline": True, "default": ""},
),
"choices": (
"STRING",
{"multiline": False, "default": ""},
),
}
}
RETURN_TYPES = ("STRING",)
RETURN_NAMES = ("text",)
FUNCTION = "run"
CATEGORY = "shellagent"
@classmethod
def validate(cls, **kwargs):
schema = {
"title": kwargs["input_name"],
"type": "string",
"default": kwargs["default_value"],
"description": kwargs["description"],
}
if kwargs.get("choices", "") != "":
schema["enums"] = eval(kwargs["choices"])
return schema
def run(self, input_name, default_value=None, display_name=None, description=None, choices=None):
return [default_value]
class ShellAgentPluginInputFloat:
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"input_name": (
"STRING",
{"multiline": False, "default": "input_float"},
),
},
"optional": {
"default_value": (
"FLOAT",
{"default": 0.},
),
"minimum": (
"FLOAT",
{"default": 0.},
),
"maximum": (
"FLOAT",
{"default": 0.},
),
"description": (
"STRING",
{"default": ""},
),
"choices": (
"STRING",
{"multiline": False, "default": ""},
),
}
}
RETURN_TYPES = ("FLOAT",)
RETURN_NAMES = ("float",)
FUNCTION = "run"
CATEGORY = "shellagent"
@classmethod
def validate(cls, **kwargs):
if "mininum" in kwargs and "maxinum" in kwargs and kwargs["minimum"] > kwargs["maximum"]:
raise ValueError("mininum cannot be greater than maximum")
schema = {
"title": kwargs["input_name"],
"type": "number",
"default": kwargs["default_value"],
"description": kwargs["description"],
}
if kwargs.get("choices", "") != "":
schema["enums"] = eval(kwargs["choices"])
if "minimum" in kwargs:
schema["minimum"] = kwargs["minimum"]
if "maximum" in kwargs:
schema["maximum"] = kwargs["maximum"]
return schema
def run(self, input_name, default_value=None, display_name=None, description=None, **kwargs):
return [default_value]
class ShellAgentPluginInputInteger:
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"input_name": (
"STRING",
{"multiline": False, "default": "input_integer"},
),
},
"optional": {
"default_value": (
"INT",
{"default": 0.},
),
"minimum": (
"INT",
{"default": 0.},
),
"maximum": (
"INT",
{"default": 0.},
),
"step": (
"INT",
{"default": 1, "min": 1, "max": 10000},
),
"description": (
"STRING",
{"multiline": True, "default": ""},
),
"choices": (
"STRING",
{"multiline": False, "default": ""},
),
}
}
RETURN_TYPES = ("INT",)
RETURN_NAMES = ("int",)
FUNCTION = "run"
CATEGORY = "shellagent"
@classmethod
def validate(cls, **kwargs):
if "mininum" in kwargs and "maxinum" in kwargs and kwargs["minimum"] > kwargs["maximum"]:
raise ValueError("mininum cannot be greater than maximum")
schema = {
"title": kwargs["input_name"],
"type": "integer",
"default": kwargs["default_value"],
"description": kwargs["description"],
}
if kwargs.get("choices", "") != "":
schema["enums"] = eval(kwargs["choices"])
if "minimum" in kwargs:
schema["minimum"] = kwargs["minimum"]
if "maximum" in kwargs:
schema["maximum"] = kwargs["maximum"]
if "step" in kwargs:
schema["multiple_of"] = kwargs["step"]
return schema
def run(self, input_name, default_value=None, display_name=None, description=None, **kwargs):
return [default_value]
NODE_CLASS_MAPPINGS = {
"ShellAgentPluginInputText": ShellAgentPluginInputText,
"ShellAgentPluginInputFloat": ShellAgentPluginInputFloat,
"ShellAgentPluginInputInteger": ShellAgentPluginInputInteger
}
NODE_DISPLAY_NAME_MAPPINGS = {
"ShellAgentPluginInputText": "Input Text (ShellAgent Plugin)",
"ShellAgentPluginInputFloat": "Input Float (ShellAgent Plugin)",
"ShellAgentPluginInputInteger": "Input Integer (ShellAgent Plugin)",
}