Drop the SxCP prefix from this pack's node names

SxCP is the Prompt-Builder pack's brand; these are Calibrator nodes. Renamed the
display names (cosmetic only — class_types unchanged, so no workflows/bridge break):
'External Prompt (Receptor)', 'Audio Prompt Guide', 'Audio Wave + Segments'; renamed
the JS extension id too. Kept the genuine Prompt-Builder (SxCP) references in the docs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-04 22:36:50 +02:00
co-authored by Claude Opus 4.8
parent 57b459b956
commit 98d3520775
6 changed files with 11 additions and 11 deletions
+4 -4
View File
@@ -15,7 +15,7 @@ until the generated image matches the reference.
| Component | What it is |
|---|---|
| `Qwen3-VL Image Judge (Calibrator)` | scores generated vs reference, writes analysis to disk for the agent |
| `SxCP External Prompt (Receptor)` | stable injection point; the agent sets `prompt/negative/seed` here per queue |
| `External Prompt (Receptor)` | stable injection point; the agent sets `prompt/negative/seed` here per queue |
| `agent_bridge.py` | one CLI call = one iteration (inject → `POST /prompt` → wait → print analysis JSON) |
## The "vllm node": `Qwen3-VL Image Judge (Calibrator)`
@@ -62,7 +62,7 @@ Set **`json_output=true`** for JSON-producing system prompts — it extracts the
from the reply (stripping any reasoning, prose, or ```fences) and returns it clean and
re-serialized (falls back to raw text if none parses). Works even with `enable_thinking` on.
## Audio-guided prompts (`SxCP Audio Prompt Guide`)
## Audio-guided prompts (`Audio Prompt Guide`)
For audio-driven video (e.g. LTX prompt-relay timed to music), the `AudioPromptGuide` node
turns an audio clip + your free-text motion **notes** into inputs the vision model can use:
@@ -78,7 +78,7 @@ subject image** and the **waveform**, use the two image slots (chat mode sees bo
```
your subject image ───────────────────────────────────► Judge.reference_image (IMAGE 1)
LoadAudio ─► SxCP Audio Prompt Guide ─┬─ waveform_image ─► Judge.generated_image (IMAGE 2)
LoadAudio ─► Audio Prompt Guide ─┬─ waveform_image ─► Judge.generated_image (IMAGE 2)
(notes: "seg3: fast on the drop") └─ audio_summary ─► Judge.user_prompt
(prompts/ltx_audio_relay_system_prompt.txt) ─────────► Judge.system_prompt
Judge (mode=chat, json_output=true) ─► LTX beats JSON
@@ -101,7 +101,7 @@ seg1: slow dreamy intro # by segment number (also "1:" or "S1:")
cinematic, moody grade # no prefix = global (applies throughout)
```
### Interactive: `SxCP Audio Wave + Segments`
### Interactive: `Audio Wave + Segments`
Same outputs, but with an in-node waveform widget: **upload** an audio clip, **play** it,
and **click the waveform** to place segment boundaries — click to add a split, drag to
+1 -1
View File
@@ -36,7 +36,7 @@ supports a `source_file` for file-first workflows if you ever want it.)
| Piece | Role |
|---|---|
| `CalibratorPromptReceptor` (`SxCP External Prompt (Receptor)`) | Stable node the agent injects `prompt/negative/seed` into. Feeds the sampler. |
| `CalibratorPromptReceptor` (`External Prompt (Receptor)`) | Stable node the agent injects `prompt/negative/seed` into. Feeds the sampler. |
| `QwenVLImageJudge` (`Qwen3-VL Image Judge (Calibrator)`) | `describe` (first pass) emits the canonical reference; `compare` judges generated vs reference per axis (verdict match/partial/mismatch). When given `reference_description`, compare anchors on that fixed text. Writes `calib_<run_tag>.json` + `latest.json` to `report_dir`. |
| `agent_bridge.py` | One CLI call = one iteration: inject prompt (+`--ref-desc-file` for the canonical anchor) → queue → wait → print the analysis JSON to stdout. Stdlib only. |
+1 -1
View File
@@ -213,4 +213,4 @@ class AudioPromptGuide:
NODE_CLASS_MAPPINGS = {"AudioPromptGuide": AudioPromptGuide}
NODE_DISPLAY_NAME_MAPPINGS = {"AudioPromptGuide": "SxCP Audio Prompt Guide"}
NODE_DISPLAY_NAME_MAPPINGS = {"AudioPromptGuide": "Audio Prompt Guide"}
+2 -2
View File
@@ -4,7 +4,7 @@ Audio Wave Segments node for ComfyUI.
An audio node with its own upload that (via the JS widget in web/audio_wave.js)
displays the waveform, plays the clip, and lets you click segment boundaries on
the waveform and give each a note. It outputs the same waveform IMAGE + timing
`audio_summary` as SxCP Audio Prompt Guide (feed those to the judge in chat mode),
`audio_summary` as Audio Prompt Guide (feed those to the judge in chat mode),
plus the AUDIO for downstream use.
Works without the JS too: leave `segments_json` as "[]" and it auto-splits, or type
@@ -154,4 +154,4 @@ class AudioWaveSegments:
NODE_CLASS_MAPPINGS = {"AudioWaveSegments": AudioWaveSegments}
NODE_DISPLAY_NAME_MAPPINGS = {"AudioWaveSegments": "SxCP Audio Wave + Segments"}
NODE_DISPLAY_NAME_MAPPINGS = {"AudioWaveSegments": "Audio Wave + Segments"}
+1 -1
View File
@@ -61,5 +61,5 @@ class CalibratorPromptReceptor:
NODE_CLASS_MAPPINGS = {"CalibratorPromptReceptor": CalibratorPromptReceptor}
NODE_DISPLAY_NAME_MAPPINGS = {
"CalibratorPromptReceptor": "SxCP External Prompt (Receptor)"
"CalibratorPromptReceptor": "External Prompt (Receptor)"
}
+2 -2
View File
@@ -1,4 +1,4 @@
// SxCP Audio Wave + Segments — waveform display + playback + click-to-segment.
// Audio Wave + Segments — waveform display + playback + click-to-segment.
// Writes the segment boundaries/notes into the node's hidden `segments_json` widget.
// First cut: open the browser console for [audiowave] logs if something misbehaves.
import { app } from "../../scripts/app.js";
@@ -145,7 +145,7 @@ function setupWave(node) {
}
app.registerExtension({
name: "sxcp.audiowave",
name: "promptcalib.audiowave",
async beforeRegisterNodeDef(nodeType, nodeData) {
if (nodeData?.name !== "AudioWaveSegments") return;
const orig = nodeType.prototype.onNodeCreated;