feat(enhance): config, templates, ComfyUI client, jobs, endpoints (#192)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Cameron CordesandClaude Opus 5.5 authored and cameron committed 2026-10-30 19:41:05 +00:00
1 parent 21920e8608
commit 3a21761cfe
19 files changed
+3912

No files matched your search

+262
View File
@@ -0,0 +1,262 @@
{
"1": {
"inputs": {
"unet_name": "fibo2_dev_int8_convrot.safetensors",
"weight_dtype": "default"
},
"class_type": "UNETLoader",
"_meta": {
"title": "Load Diffusion Model"
}
},
"2": {
"inputs": {
"clip_name": "qwen3vl_4b_int8_convrot.safetensors",
"type": "fibo2",
"device": "default"
},
"class_type": "CLIPLoader",
"_meta": {
"title": "Load CLIP"
}
},
"3": {
"inputs": {
"vae_name": "flux2-vae.safetensors"
},
"class_type": "VAELoader",
"_meta": {
"title": "Load VAE"
}
},
"4": {
"inputs": {
"prompt": [
"25",
0
],
"negative_prompt": "{\"short_description\":\"\",\"objects\":[{\"description\":\"the main subject\",\"texture\":\"smooth, featureless, plastic-like, airbrushed, no fine surface detail\",\"appearance_details\":\"soft blurred edges, simplified shapes, no fine detail\",\"skin_tone_and_texture\":\"waxy airbrushed skin, poreless, plastic smooth\"}],\"background_setting\":\"a plain seamless studio backdrop, perfectly smooth gradient, blurred and featureless, no visible texture\",\"lighting\":{},\"aesthetics\":{\"artifacts\":[\"oversaturated colours\",\"neon colour cast\",\"overexposed highlights\",\"lens flare\",\"slight blur\",\"motion blur\",\"haze\"]},\"photographic_characteristics\":{\"depth_of_field\":\"shallow, heavy bokeh obscuring most of the frame\",\"focus\":\"soft, slightly out of focus, lacking fine texture\"},\"style_medium\":\"\",\"context\":\"\",\"artistic_style\":\"\"}",
"width": 0,
"height": 0,
"batch_size": 1,
"clip": [
"2",
0
],
"images.image_1": [
"37",
0
],
"vae": [
"3",
0
]
},
"class_type": "TextEncodeFibo2",
"_meta": {
"title": "TextEncodeFibo2"
}
},
"5": {
"inputs": {
"seed": 774744764437710,
"steps": 50,
"cfg": 5,
"sampler_name": "euler",
"scheduler": "simple",
"denoise": 1,
"model": [
"1",
0
],
"positive": [
"4",
0
],
"negative": [
"4",
1
],
"latent_image": [
"4",
2
]
},
"class_type": "KSampler",
"_meta": {
"title": "KSampler"
}
},
"6": {
"inputs": {
"samples": [
"5",
0
],
"vae": [
"3",
0
]
},
"class_type": "VAEDecode",
"_meta": {
"title": "VAEDecode"
}
},
"12": {
"inputs": {
"value": "You are a highly skilled Creative Director for Visual Adaptation at a leading Generative AI company.\n\nYour expertise lies in using an existing image as a visual reference to create entirely new scenes. You can deconstruct a reference image to understand its subject, pose, and style, and then reimagine it in a new context based on textual instructions.\n\nYour primary task is to receive a reference image and a textual edit instruction. You will analyze the reference to extract key visual information and then generate a comprehensive JSON object describing a new scene that creatively incorporates the user's instructions.\n\n**FIDELITY RULE:** Unless explicitly requested or implied by the user's edit instruction (e.g., changing the setting requires new lighting), you should preserve all visual properties of the reference image. This includes, but is not limited to: the identity, pose, and appearance of all subjects (people/animals), the existence, location, size, and orientation of all objects, the overall composition, camera angle, lens characteristics, and the style/medium. Only change what is strictly required to fulfill the user's edit.\nE.g. if the user's request is to change the expression of a person in the image, the only change should be the expression, not the pose, composition, background, etc. On the other hand, if the user requested to change the background to a snowy forest, you should change the background, lighting, and mood atmosphere, etc., but keep the subject the same.\nMake sure to acknowledge the changing elements in the relevant \"description\" fields (i.e. \"short_description\", object \"description\", etc.). e.g. if the user requested to change the expression of a person to \"sad\", make sure to write \"the person is sad\" in the \"short_description\".\n\n**Describe the FINAL image only, never the edit (STRICT):** describe changed elements by their resulting STATE, not the action \u2014 e.g. `the person looks sad` / `his hands are empty`, NOT `the expression was changed to sad` / `the book was removed`. In every field except `edit_instruction`, do NOT use edit/change verbs or references to the edit (\"changed\", \"added\", \"removed\", \"replaced\", \"now\", \"instead of\", \"has been\", \"originally\", \"the original\"), and never make \"the scene\"/\"the image\"/\"the frame\" the subject of a change verb. Only `edit_instruction` states the change.\n\n**CONTROL-MAP / CONDITIONING INPUTS (act differently):** Sometimes the input image is NOT a normal photograph or illustration but a *conditioning / control map* \u2014 e.g. a Canny edge map, a depth map, a pose skeleton, a segmentation or color grid, a low-resolution / tiled image (super-resolution), or a monochrome image to be recolored. You can tell from the instruction (e.g. \"match this edge map\", \"use this depth map to generate ...\", \"use this pose guidance to generate ...\", \"recolor this monochrome image into ...\", \"increase the clarity and resolution\"). In these cases the FIDELITY RULE above is INVERTED for appearance: do NOT preserve or describe the control map's literal look (its edges, grey depth values, skeleton lines, grid colors, blockiness, or lack of color). Instead treat the input purely as STRUCTURAL guidance \u2014 outline/geometry (edges), spatial layout and relative distance (depth), body position and framing (pose), regional layout (segmentation/color grid), or coarse composition (low-res) \u2014 and describe the NEW, fully-rendered, realistic image the instruction asks for. Take the subject, colors, materials, textures, and style from the instruction's target description (defaulting to a realistic photograph unless it says otherwise), while keeping the structure/geometry/pose that the control map dictates. Every field (`objects`, `background_setting`, `style_medium`, `lighting`, etc.) must describe that intended final image \u2014 never the control map itself.\n\nAdhere strictly to the following structure and guidelines:\n\n1. **Inputs:** You will receive a reference image and a textual edit instruction. You will NOT receive a starting JSON.\n2. **Core Logic (Analyze and Synthesize):**\n * **Analyze:** First, deeply analyze the provided reference image. Identify its primary subject(s), their specific poses, expressions, and appearance. Also note the overall composition, lighting style, and artistic medium.\n * **Synthesize:** Next, interpret the textual edit instruction to understand what elements to keep from the reference and what to change. You will then construct a brand new JSON object from scratch that describes the desired final scene. For example, if the instruction is \"the same dog and pose, but at the beach,\" you must describe the dog from the reference image in the `objects` array but create a new `background_setting` for a beach, with appropriate `lighting` and `mood_atmosphere`. **The description of every unchanged element (objects, people, composition, camera settiLine truncated
},
"class_type": "PrimitiveStringMultiline",
"_meta": {
"title": "String (System Prompt VGL)"
}
},
"13": {
"inputs": {
"value": "Increase the clarity and resolution of the image, and refine it to obtain sharp, finely detailed, natural textures as if shot on a modern mirrorless camera, keeping the subject, pose, composition, colours and lighting the same. Remove any phone interface overlays."
},
"class_type": "PrimitiveStringMultiline",
"_meta": {
"title": "imageapi:prompt"
}
},
"14": {
"inputs": {
"prompt": [
"13",
0
],
"max_length": 3000,
"sampling_mode": "on",
"sampling_mode.temperature": 0.3,
"sampling_mode.top_k": 20,
"sampling_mode.top_p": 0.95,
"sampling_mode.min_p": 0.05,
"sampling_mode.repetition_penalty": 1.05,
"sampling_mode.seed": 1235,
"sampling_mode.presence_penalty": 0,
"thinking": false,
"use_default_template": true,
"mtp": "off",
"clip": [
"27",
0
],
"image": [
"26",
0
],
"system_prompt": [
"12",
0
]
},
"class_type": "TextGenerate",
"_meta": {
"title": "Generate Text (PE rewrite)"
}
},
"15": {
"inputs": {
"switch": false,
"on_false": [
"13",
0
],
"on_true": [
"14",
0
]
},
"class_type": "ComfySwitchNode",
"_meta": {
"title": "If/Else Switch (PE on/off)"
}
},
"24": {
"inputs": {
"compare_view": {
"__value__": [
"",
""
]
},
"image_a": [
"37",
0
],
"image_b": [
"6",
0
]
},
"class_type": "ImageCompare",
"_meta": {
"title": "Compare Images"
}
},
"25": {
"inputs": {
"source": [
"15",
0
]
},
"class_type": "PreviewAny",
"_meta": {
"title": "Preview as Text"
}
},
"26": {
"inputs": {
"images.image0": [
"37",
0
]
},
"class_type": "BatchImagesNode",
"_meta": {
"title": "Batch Images"
}
},
"27": {
"inputs": {
"clip_name": "qwen3vl_8b_int8_convrot.safetensors",
"type": "fibo2",
"device": "default"
},
"class_type": "CLIPLoader",
"_meta": {
"title": "Load CLIP (PE)"
}
},
"36": {
"inputs": {
"kind": "restored",
"subfolder": "aiedits",
"require_approval": true,
"images": [
"6",
0
],
"source": [
"37",
1
]
},
"class_type": "ImageApiSaveImageVersion",
"_meta": {
"title": "imageapi:save"
}
},
"37": {
"inputs": {
"path": ""
},
"class_type": "ImageApiLoadImageFromPath",
"_meta": {
"title": "imageapi:source"
}
}
}