From 11e71eccd41a42c9c6d07facfa65e32eab3a2341 Mon Sep 17 00:00:00 2001 From: Weiming Liao Date: Tue, 3 Nov 2026 00:02:31 +0800 Subject: [PATCH] [feat] assistant: select native skills in chat Signed-off-by: Weiming Liao --- .../skills/character-replacement/SKILL.md | 25 + .../character-replacement-continuation.json | 8134 +++++++++++++++++ .../assets/character-replacement.json | 2855 ++++++ .../character-replacement/prompt-writing.md | 64 + .../character-replacement/video-segment.md | 70 + .../skills/character-replacement/workflow.md | 59 + src/canvas/AssistantPanel.tsx | 23 +- src/canvas/ChatReferenceEditor.tsx | 79 +- src/canvas/SkillPicker.tsx | 243 + src/canvas/assistant-panel.css | 40 + src/canvas/chatReferenceContent.ts | 11 +- src/canvas/chatReferenceDOM.ts | 8 +- src/canvas/generationReferenceContent.ts | 3 +- src/canvas/operations.ts | 2 +- src/canvas/referenceMentions.ts | 7 + src/canvas/useAssistantChat.ts | 1 + tests/chatReferenceDOM.test.ts | 24 +- tests/referenceMentions.test.ts | 18 + 18 files changed, 11625 insertions(+), 41 deletions(-) create mode 100644 packages/agent/skills/character-replacement/SKILL.md create mode 100644 packages/agent/skills/character-replacement/assets/character-replacement-continuation.json create mode 100644 packages/agent/skills/character-replacement/assets/character-replacement.json create mode 100644 packages/agent/skills/character-replacement/prompt-writing.md create mode 100644 packages/agent/skills/character-replacement/video-segment.md create mode 100644 packages/agent/skills/character-replacement/workflow.md create mode 100644 src/canvas/SkillPicker.tsx diff --git a/packages/agent/skills/character-replacement/SKILL.md b/packages/agent/skills/character-replacement/SKILL.md new file mode 100644 index 00000000..e3c9e0ae --- /dev/null +++ b/packages/agent/skills/character-replacement/SKILL.md @@ -0,0 +1,25 @@ +--- +name: character-replacement +description: Plan MiniMax-H3 character replacement, write per-segment Ref2VA prompts and configure reusable H3-04 ComfyUI workflows for generation and review. +--- + +# Character Replacement + +Make character replacement easy to use: the user supplies source media and a replacement request; the agent derives the segment plan, prompts and workflow parameters. Keep the input boundary as original images, source video and explicit prompts. Work only on the requested deliverable; planning or prompt edits do not start generation, restart services or introduce preprocessing. + +For a simple one-person edit without segmented continuation, reuse the [H3-04 Character Replacement workflow](assets/character-replacement.json). For planned multi-segment work, use the Agentic Continuation template linked below; its example-specific settings must be recalculated for new footage. + +1. Create a 24-FPS constant-frame-rate working copy of the source video before visual inspection, segmentation and frame-index calculations, unless the user explicitly requests another FPS. Preserve the original file and playback timing. Read [video-segment.md](video-segment.md) first. Use a vision-capable model to inspect the source video, establish shot boundaries and track when each selected person appears, interacts, becomes occluded and leaves. Produce the segment plan before writing new segment prompts. +2. Read [prompt-writing.md](prompt-writing.md), then write each segment's prompt from its inspected action and explicit source-person-to-picture mappings. +3. For a single-person, single-segment edit, configure the simple workflow linked above. For segmented or multi-person work, configure a task-specific copy of the [H3-04 Agentic Continuation workflow](assets/character-replacement-continuation.json), reusing Global Control, existing nodes and one shared segment-subgraph definition. Follow [workflow.md](workflow.md) for configuration, execution and review. +4. When generation is requested, submit the executable graph through ComfyUI, monitor results, inspect segment previews and deliver the assembled video with remaining quality defects. + +Prompt-format dependency: read the official [MiniMax H3 prompt-writing skill](https://github.com/MiniMax-AI/MiniMax-H3/tree/main/skills/h3-prompt-writing). It can be read directly from the repository; local installation is optional. Before execution, establish the ComfyUI URL, installed node availability, effective Omni deployment settings and task output directory as described in [workflow.md](workflow.md). + +Resolve repository-relative references from this skill directory after resolving any global skill symlink, not from the agent's current working directory. + +Execution boundary: agent → ComfyUI execution API → existing vLLM-Omni nodes → vLLM-Omni video API. The nodes own model requests; the agent does not bypass ComfyUI with a separate generation client. + +For a prompt-only correction to an existing segment, inspect its relevant footage and existing plan; revise the plan only if the observed defect exposes an incorrect boundary or mapping. Do not invent a new segmentation for every wording edit. + +Preserve the user's model, resolution, FPS and fixed seed unless asked to change them. Report written plans and prompts separately from generation and visual acceptance. Keep Markdown paragraphs on single source lines and usage notes brief. diff --git a/packages/agent/skills/character-replacement/assets/character-replacement-continuation.json b/packages/agent/skills/character-replacement/assets/character-replacement-continuation.json new file mode 100644 index 00000000..66e4f695 --- /dev/null +++ b/packages/agent/skills/character-replacement/assets/character-replacement-continuation.json @@ -0,0 +1,8134 @@ +{ + "id": "001fab76-5b80-4f68-b62f-c1f78760a75c", + "revision": 0, + "last_node_id": 10643, + "last_link_id": 17268, + "nodes": [ + { + "id": 10, + "type": "MarkdownNote", + "pos": [ + -863, + 222 + ], + "size": [ + 771, + 992 + ], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [], + "title": "Character Replacement Guide", + "properties": {}, + "widgets_values": [ + "1. This continuation example is scene-specific, not a universal workflow.\n2. Use the character-replacement skill to inspect new footage, plan segments and update each segment prompt and frame settings.\n3. Configure Global Control, review segment previews, then assemble. Current frame settings assume 24 FPS." + ], + "widgets_values_named": { + "text": "1. Enable the case you want to run; mute the others.\n2. Replace its character images and source video(s).\n3. Update the prompt to say which source person each picture replaces. Keep the existing prompt structure.\n4. In Global Control, set mode, service URL, model, LoRA paths, width, height and fps.\n5. Run and check the preview.\n\nCase03: when changing source clips, update each segment's prompt, duration and guide/trim frames. Its current frame settings use 24 FPS." + }, + "color": "#333", + "bgcolor": "#535353" + }, + { + "id": 10001, + "type": "LoadImage", + "pos": [ + 100, + 2904 + ], + "size": [ + 250, + 314 + ], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + { + "localized_name": "image", + "name": "image", + "type": "COMBO", + "widget": { + "name": "image" + }, + "link": null + }, + { + "localized_name": "choose file to upload", + "name": "upload", + "type": "IMAGEUPLOAD", + "widget": { + "name": "upload" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 17222, + 17227, + 17228, + 17233, + 17234 + ] + }, + { + "localized_name": "MASK", + "name": "MASK", + "type": "MASK", + "links": [] + } + ], + "title": "Picture1 · center", + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "0_jensen_huang.jpeg", + "image" + ], + "widgets_values_named": { + "image": "0_jensen_huang.jpeg", + "upload": "image" + } + }, + { + "id": 10002, + "type": "LoadImage", + "pos": [ + 380, + 2904 + ], + "size": [ + 250, + 314 + ], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [ + { + "localized_name": "image", + "name": "image", + "type": "COMBO", + "widget": { + "name": "image" + }, + "link": null + }, + { + "localized_name": "choose file to upload", + "name": "upload", + "type": "IMAGEUPLOAD", + "widget": { + "name": "upload" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 17223, + 17229 + ] + }, + { + "localized_name": "MASK", + "name": "MASK", + "type": "MASK", + "links": [] + } + ], + "title": "Picture2 · right front", + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "02_sun_wukong.png", + "image" + ], + "widgets_values_named": { + "image": "02_sun_wukong.png", + "upload": "image" + } + }, + { + "id": 10003, + "type": "LoadImage", + "pos": [ + 660, + 2904 + ], + "size": [ + 250, + 314 + ], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + { + "localized_name": "image", + "name": "image", + "type": "COMBO", + "widget": { + "name": "image" + }, + "link": null + }, + { + "localized_name": "choose file to upload", + "name": "upload", + "type": "IMAGEUPLOAD", + "widget": { + "name": "upload" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 17224, + 17230 + ] + }, + { + "localized_name": "MASK", + "name": "MASK", + "type": "MASK", + "links": [] + } + ], + "title": "Picture3 · left back", + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "03_zhu_bajie.png", + "image" + ], + "widgets_values_named": { + "image": "03_zhu_bajie.png", + "upload": "image" + } + }, + { + "id": 10004, + "type": "LoadImage", + "pos": [ + 940, + 2904 + ], + "size": [ + 250, + 314 + ], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [ + { + "localized_name": "image", + "name": "image", + "type": "COMBO", + "widget": { + "name": "image" + }, + "link": null + }, + { + "localized_name": "choose file to upload", + "name": "upload", + "type": "IMAGEUPLOAD", + "widget": { + "name": "upload" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 17225, + 17231 + ] + }, + { + "localized_name": "MASK", + "name": "MASK", + "type": "MASK", + "links": [] + } + ], + "title": "Picture4 · left front", + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "04_sha_seng.png", + "image" + ], + "widgets_values_named": { + "image": "04_sha_seng.png", + "upload": "image" + } + }, + { + "id": 10005, + "type": "LoadImage", + "pos": [ + 1220, + 2904 + ], + "size": [ + 250, + 314 + ], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + { + "localized_name": "image", + "name": "image", + "type": "COMBO", + "widget": { + "name": "image" + }, + "link": null + }, + { + "localized_name": "choose file to upload", + "name": "upload", + "type": "IMAGEUPLOAD", + "widget": { + "name": "upload" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "IMAGE", + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 17226, + 17232 + ] + }, + { + "localized_name": "MASK", + "name": "MASK", + "type": "MASK", + "links": [] + } + ], + "title": "Picture5 · right back", + "properties": { + "Node name for S&R": "LoadImage" + }, + "widgets_values": [ + "05_bai_long_ma (1).png", + "image" + ], + "widgets_values_named": { + "image": "05_bai_long_ma (1).png", + "upload": "image" + } + }, + { + "id": 10006, + "type": "LoadVideo", + "pos": [ + 880, + 3384 + ], + "size": [ + 550, + 460 + ], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [ + { + "localized_name": "file", + "name": "file", + "type": "COMBO", + "widget": { + "name": "file" + }, + "link": null + }, + { + "localized_name": "choose file to upload", + "name": "upload", + "type": "IMAGEUPLOAD", + "widget": { + "name": "upload" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "VIDEO", + "name": "VIDEO", + "type": "VIDEO", + "links": [ + 10025 + ] + } + ], + "title": "A · source context", + "properties": { + "Node name for S&R": "LoadVideo" + }, + "widgets_values": [ + "h3-checkpoint3-A-reference.mp4", + "image" + ], + "widgets_values_named": { + "file": "h3-checkpoint3-A-reference.mp4", + "upload": "image" + } + }, + { + "id": 10007, + "type": "LoadVideo", + "pos": [ + 100, + 3384 + ], + "size": [ + 550, + 460 + ], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + { + "localized_name": "file", + "name": "file", + "type": "COMBO", + "widget": { + "name": "file" + }, + "link": null + }, + { + "localized_name": "choose file to upload", + "name": "upload", + "type": "IMAGEUPLOAD", + "widget": { + "name": "upload" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "VIDEO", + "name": "VIDEO", + "type": "VIDEO", + "links": [ + 10001 + ] + } + ], + "title": "B · source context", + "properties": { + "Node name for S&R": "LoadVideo" + }, + "widgets_values": [ + "h3-checkpoint3-B-reference.mp4", + "image" + ], + "widgets_values_named": { + "file": "h3-checkpoint3-B-reference.mp4", + "upload": "image" + } + }, + { + "id": 10008, + "type": "LoadVideo", + "pos": [ + 1660, + 3384 + ], + "size": [ + 550, + 460 + ], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [ + { + "localized_name": "file", + "name": "file", + "type": "COMBO", + "widget": { + "name": "file" + }, + "link": null + }, + { + "localized_name": "choose file to upload", + "name": "upload", + "type": "IMAGEUPLOAD", + "widget": { + "name": "upload" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "VIDEO", + "name": "VIDEO", + "type": "VIDEO", + "links": [ + 10044 + ] + } + ], + "title": "C · source context", + "properties": { + "Node name for S&R": "LoadVideo" + }, + "widgets_values": [ + "h3-checkpoint3-C-reference.mp4", + "image" + ], + "widgets_values_named": { + "file": "h3-checkpoint3-C-reference.mp4", + "upload": "image" + } + }, + { + "id": 10009, + "type": "LoadVideo", + "pos": [ + 2440, + 3384 + ], + "size": [ + 550, + 460 + ], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + { + "localized_name": "file", + "name": "file", + "type": "COMBO", + "widget": { + "name": "file" + }, + "link": null + }, + { + "localized_name": "choose file to upload", + "name": "upload", + "type": "IMAGEUPLOAD", + "widget": { + "name": "upload" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "VIDEO", + "name": "VIDEO", + "type": "VIDEO", + "links": [ + 10065 + ] + } + ], + "title": "D · source context", + "properties": { + "Node name for S&R": "LoadVideo" + }, + "widgets_values": [ + "h3-checkpoint3-D-reference.mp4", + "image" + ], + "widgets_values_named": { + "file": "h3-checkpoint3-D-reference.mp4", + "upload": "image" + } + }, + { + "id": 10010, + "type": "LoadVideo", + "pos": [ + 3220, + 3384 + ], + "size": [ + 550, + 460 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [ + { + "localized_name": "file", + "name": "file", + "type": "COMBO", + "widget": { + "name": "file" + }, + "link": null + }, + { + "localized_name": "choose file to upload", + "name": "upload", + "type": "IMAGEUPLOAD", + "widget": { + "name": "upload" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "VIDEO", + "name": "VIDEO", + "type": "VIDEO", + "links": [ + 10082 + ] + } + ], + "title": "E · source context", + "properties": { + "Node name for S&R": "LoadVideo" + }, + "widgets_values": [ + "h3-checkpoint3-E-reference.mp4", + "image" + ], + "widgets_values_named": { + "file": "h3-checkpoint3-E-reference.mp4", + "upload": "image" + } + }, + { + "id": 10016, + "type": "LoadAudio", + "pos": [ + 1550, + 2904 + ], + "size": [ + 440, + 200 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [ + { + "localized_name": "audio", + "name": "audio", + "type": "COMBO", + "widget": { + "name": "audio" + }, + "link": null + }, + { + "localized_name": "audioUI", + "name": "audioUI", + "type": "AUDIO_UI", + "widget": { + "name": "audioUI" + }, + "link": null + }, + { + "localized_name": "choose file to upload", + "name": "upload", + "type": "AUDIOUPLOAD", + "widget": { + "name": "upload" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "AUDIO", + "name": "AUDIO", + "type": "AUDIO", + "links": [ + 10099 + ] + } + ], + "title": "Original 27s soundtrack", + "properties": { + "Node name for S&R": "LoadAudio" + }, + "widgets_values": [ + "h3-checkpoint3-source.m4a", + "" + ], + "widgets_values_named": { + "audio": "h3-checkpoint3-source.m4a", + "upload": "" + } + }, + { + "id": 10070, + "type": "ConcatenateVideo", + "pos": [ + 1350, + 6114 + ], + "size": [ + 430, + 260 + ], + "flags": {}, + "order": 53, + "mode": 0, + "inputs": [ + { + "localized_name": "video0", + "name": "videos.video0", + "type": "VIDEO", + "link": 10094 + }, + { + "localized_name": "video1", + "name": "videos.video1", + "shape": 7, + "type": "VIDEO", + "link": 10095 + }, + { + "localized_name": "video2", + "name": "videos.video2", + "shape": 7, + "type": "VIDEO", + "link": 10096 + }, + { + "localized_name": "video3", + "name": "videos.video3", + "shape": 7, + "type": "VIDEO", + "link": 10097 + }, + { + "localized_name": "video4", + "name": "videos.video4", + "shape": 7, + "type": "VIDEO", + "link": 10098 + }, + { + "localized_name": "video5", + "name": "videos.video5", + "shape": 7, + "type": "VIDEO", + "link": null + }, + { + "localized_name": "complete_audio", + "name": "complete_audio", + "shape": 7, + "type": "AUDIO", + "link": 10099 + }, + { + "localized_name": "codec", + "name": "codec", + "type": "COMBO", + "widget": { + "name": "codec" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "VIDEO", + "name": "VIDEO", + "type": "VIDEO", + "links": [ + 10100 + ] + } + ], + "properties": { + "Node name for S&R": "ConcatenateVideo" + }, + "widgets_values": [ + "h264" + ], + "widgets_values_named": { + "codec": "h264" + } + }, + { + "id": 10071, + "type": "SaveVideo", + "pos": [ + 1830, + 6114 + ], + "size": [ + 760, + 529 + ], + "flags": {}, + "order": 54, + "mode": 0, + "inputs": [ + { + "localized_name": "video", + "name": "video", + "type": "VIDEO", + "link": 10100 + }, + { + "localized_name": "filename_prefix", + "name": "filename_prefix", + "type": "STRING", + "widget": { + "name": "filename_prefix" + }, + "link": null + }, + { + "localized_name": "format", + "name": "format", + "type": "COMFY_DYNAMICCOMBO_V3", + "widget": { + "name": "format" + }, + "link": null + }, + { + "localized_name": "codec", + "name": "format.codec", + "type": "COMFY_DYNAMICCOMBO_V3", + "widget": { + "name": "format.codec" + }, + "link": null + }, + { + "localized_name": "codec", + "name": "codec", + "shape": 7, + "type": "COMFY_DYNAMICCOMBO_V3", + "widget": { + "name": "codec" + }, + "link": null + } + ], + "outputs": [ + { + "localized_name": "video", + "name": "video", + "type": "VIDEO", + "links": [] + } + ], + "title": "Final · 27s", + "properties": { + "Node name for S&R": "SaveVideo" + }, + "widgets_values": [ + "vllm-omni/MiniMax-H3-Character-Replacement/complete-27s", + "mp4", + "auto", + "auto" + ], + "widgets_values_named": { + "filename_prefix": "vllm-omni/MiniMax-H3-Character-Replacement/complete-27s", + "format": "mp4", + "format.codec": "auto", + "codec": "auto" + }, + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 10078, + "type": "5c86a69e-989e-46c5-88f7-54c95d4da8d3", + "pos": [ + 100, + 4144 + ], + "size": [ + 550, + 1240 + ], + "flags": {}, + "order": 41, + "mode": 0, + "inputs": [ + { + "name": "picture_1", + "shape": 7, + "type": "IMAGE", + "link": 10002 + }, + { + "name": "picture_2", + "shape": 7, + "type": "IMAGE", + "link": 10003 + }, + { + "name": "picture_3", + "shape": 7, + "type": "IMAGE", + "link": 10004 + }, + { + "name": "picture_4", + "shape": 7, + "type": "IMAGE", + "link": 10005 + }, + { + "name": "picture_5", + "shape": 7, + "type": "IMAGE", + "link": 10006 + }, + { + "name": "picture_6", + "shape": 7, + "type": "IMAGE", + "link": null + }, + { + "name": "picture_7", + "shape": 7, + "type": "IMAGE", + "link": null + }, + { + "name": "picture_8", + "shape": 7, + "type": "IMAGE", + "link": null + }, + { + "name": "picture_9", + "shape": 7, + "type": "IMAGE", + "link": null + }, + { + "name": "audio_1", + "shape": 7, + "type": "AUDIO", + "link": null + }, + { + "name": "audio_2", + "shape": 7, + "type": "AUDIO", + "link": null + }, + { + "name": "audio_3", + "shape": 7, + "type": "AUDIO", + "link": null + }, + { + "name": "video_1", + "shape": 7, + "type": "VIDEO", + "link": 10001 + }, + { + "name": "video_2", + "shape": 7, + "type": "VIDEO", + "link": null + }, + { + "name": "video_3", + "shape": 7, + "type": "VIDEO", + "link": null + }, + { + "name": "previous_frames", + "shape": 7, + "type": "IMAGE", + "link": null + }, + { + "name": "url", + "type": "STRING", + "widget": { + "name": "url" + }, + "link": 10007 + }, + { + "name": "model", + "type": "STRING", + "widget": { + "name": "model" + }, + "link": 10008 + }, + { + "name": "prompt", + "type": "STRING", + "widget": { + "name": "prompt" + }, + "link": null + }, + { + "name": "sampling_params", + "shape": 7, + "type": "SAMPLING_PARAMS", + "link": 10011 + }, + { + "name": "model_params", + "shape": 7, + "type": "VIDEO_PARAMS", + "link": 10012 + }, + { + "name": "lora", + "shape": 7, + "type": "REMOTE_LORA", + "link": 10108 + }, + { + "name": "fast_h3", + "shape": 7, + "type": "FASTH3_DEPLOYMENT", + "link": 10109 + }, + { + "name": "use_guides", + "type": "BOOLEAN", + "widget": { + "name": "use_guides" + }, + "link": null + }, + { + "name": "guide_first_frame", + "type": "INT", + "widget": { + "name": "guide_first_frame" + }, + "link": null + }, + { + "name": "guide_last_frame", + "type": "INT", + "widget": { + "name": "guide_last_frame" + }, + "link": null + }, + { + "name": "duration", + "type": "FLOAT", + "widget": { + "name": "duration" + }, + "link": null + }, + { + "name": "raw_frames", + "type": "INT", + "widget": { + "name": "raw_frames" + }, + "link": null + }, + { + "name": "reverse_output", + "type": "BOOLEAN", + "widget": { + "name": "reverse_output" + }, + "link": null + }, + { + "name": "trim_start", + "type": "INT", + "widget": { + "name": "trim_start" + }, + "link": null + }, + { + "name": "keep_frames", + "type": "INT", + "widget": { + "name": "keep_frames" + }, + "link": null + }, + { + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": 17250 + }, + { + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": 17257 + }, + { + "name": "fps", + "type": "INT", + "widget": { + "name": "fps" + }, + "link": 17264 + } + ], + "outputs": [ + { + "name": "raw_frames", + "type": "IMAGE", + "links": [ + 10020 + ] + }, + { + "name": "frames", + "type": "IMAGE", + "links": [ + 10039 + ] + }, + { + "name": "video", + "type": "VIDEO", + "links": [ + 10118 + ] + } + ], + "properties": { + "Node name for S&R": "5c86a69e-989e-46c5-88f7-54c95d4da8d3", + "previewExposures": [] + }, + "widgets_values": [ + "http://localhost:8000/v1", + "Wan-AI/Wan2.2-T2V-A14B-Diffusers", + "subject_definitions:\n: The person defined by , replacing the central performer originally wearing a pale suit in