import node_helpers from typing_extensions import override from comfy_api.latest import ComfyExtension, io class ReferenceLatent(io.ComfyNode): @classmethod def define_schema(cls): return io.Schema( node_id="ReferenceLatent", category="advanced/conditioning/edit_models", description="This node sets the guiding latent for an edit model. If the model supports it you can chain multiple to set multiple reference images.", inputs=[ io.Conditioning.Input("conditioning"), io.Latent.Input("latent", optional=True), ], outputs=[ io.Conditioning.Output(), ] ) @classmethod def execute(cls, conditioning, latent=None) -> io.NodeOutput: if latent is not None: conditioning = node_helpers.conditioning_set_values(conditioning, {"reference_latents": [latent["samples"]]}, append=True) return io.NodeOutput(conditioning) class EditModelExtension(ComfyExtension): @override async def get_node_list(self) -> list[type[io.ComfyNode]]: return [ ReferenceLatent, ] def comfy_entrypoint() -> EditModelExtension: return EditModelExtension()