SMP · Aggregator (legacy)
Deep-merge up to four prompt dicts — the legacy plumbing node that still works
- prompt_dict_a
- prompt_dict_b
- prompt_dict_c
- prompt_dict_d
- prompt_dict
Before the JB suite existed, this pack's structured-prompt story was StructPromptMaker (SMP), a 13-node pipeline where outfit, color, and location generators each emitted typed dictionaries that had to be merged into one PROMPT_DICT. FVM_SMP_Aggregator is the merge step: it deep-combines up to four prompt dict branches into a single document with a precise set of rules - later wins on scalars, lists concatenate, and None deletes a field.
The "(legacy)" in its name is the honest label. The JB suite superseded SMP for most use cases, and the pack's own docs say so. But SMP is kept fully functional, and if you're running an old SMP workflow - or you just like the dict-pipeline style - this node still does its job. When you see it in a downloaded workflow, that's the context: pre-JB plumbing that hasn't rotted.
The merge rules (they matter)
Deep merge with three explicit behaviors, straight from the pack's spec:
- Later wins - same scalar key in dict_a and dict_b? dict_b's value replaces it.
- Lists concatenate - if both dicts define a list under the same key, they join rather than replace. This is how you combine "outfit garments" from one branch with "accessories" from another without losing either.
- None deletes - a key explicitly set to
Nonein a later dict removes that field from the result. That's the escape hatch for undoing something an earlier branch added, which is more useful than it sounds when you're stitching four sources together.
Because merge order is semantics, input order is semantics - dict_a is the base, and b, c, d each layer on top. Wire branches in the order you want precedence.
Inputs and outputs
Required: prompt_dict_a. Optional: prompt_dict_b, prompt_dict_c, prompt_dict_d. All are PROMPT_DICT type - the SMP family's shared document format, produced by the SMP generators and builders. Output: one merged prompt_dict, ready for the next SMP stage (ultimately the StructuredPromptAssembler that turns the dict into a regional prompt).
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/ping1979ping/comfyui-FVMtools
No extra dependencies. Restart ComfyUI; it lives under FVM Tools/SMP/Plumbing.
Should you build new work on it?
Probably not - that's the honest recommendation, and it's the pack author's own. JB's Builder/Stitcher does the same structured-prompt job with a more modern UI, string-based types that play nicer with plain text encoders, and none of the "typed dict" ceremony. Use the SMP nodes when you're maintaining or extending an existing SMP workflow (they're fully functional and stable), or when you specifically need the typed dict outputs - like the COLOR_PALETTE_DICT's atmosphere tokens, which the JB blocks don't expose. Otherwise, treat the SMP suite as the old reliable you keep around, not the tool you reach for first.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt_dict_a | PROMPT_DICT | — | |
| prompt_dict_bopt | PROMPT_DICT | — | |
| prompt_dict_copt | PROMPT_DICT | — | |
| prompt_dict_dopt | PROMPT_DICT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| prompt_dict | PROMPT_DICT | — |