Two ComfyUI issues found while testing. 1. Empty output with no error: the Knowledge Base Loader resolved a relative `path` against ComfyUI's working directory, not this package, so the default `knowledge_base/` loaded 0 entries (an empty KB is valid) and every concept became unknown -> empty prompts. Relative paths now resolve against the package root, and the loader warns when the Knowledge Base is empty. 2. Add a `raw` string output (a JSON dump of the node's data) to the Scene Analyzer, Scene Validator, Resolver, Category Splitter, and Prompt Builder nodes, plus a summary `raw` on the Knowledge Base Loader, for inspecting the pipeline in the graph. Adds a shared to_raw_json helper. Tests: package-relative path resolution (independent of cwd), empty-KB warning, raw output content, and updated node metadata/return-arity expectations. Co-authored-by: kunail0804 <kunail0804@gmail.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
47 lines
3.1 KiB
Markdown
47 lines
3.1 KiB
Markdown
# ComfyUI node reference
|
|
|
|
The exact inputs, outputs, and data types of the shipped Scene Compiler nodes.
|
|
All nodes appear under the **Scene Compiler** category. Data flows between nodes
|
|
as typed objects; the inter-stage types are `SCENE`, `RESOLVED_TAGS`,
|
|
`CATEGORY_MAP`, `KNOWLEDGE_BASE`, and `COMPILER_CONFIG`.
|
|
|
|
Nodes are thin adapters: all behaviour lives in the `compiler` package, which
|
|
never imports ComfyUI.
|
|
|
|
Every stage node also exposes a **`raw`** string output — a JSON dump of that
|
|
node's data output — for inspecting the pipeline (wire it into a text/preview
|
|
node). The Knowledge Base Loader's `raw` summarizes the loaded entries. A
|
|
relative Knowledge Base `path` is resolved against the installed package, so the
|
|
default `knowledge_base/` works regardless of ComfyUI's working directory.
|
|
|
|
## Pipeline nodes
|
|
|
|
| Node | Inputs | Outputs |
|
|
|---|---|---|
|
|
| **Scene Analyzer** | `natural_language` (STRING), `model_name` (STRING), `temperature` (FLOAT), `timeout` (INT), `system_prompt` (STRING, optional) | `scene` (SCENE), `warnings` (STRING), `errors` (STRING) |
|
|
| **Scene Validator** | `scene` (SCENE), `config` (COMPILER_CONFIG, optional) | `scene` (SCENE), `warnings` (STRING), `errors` (STRING) |
|
|
| **Resolver** | `scene` (SCENE), `knowledge_base` (KNOWLEDGE_BASE), `config` (COMPILER_CONFIG, optional) | `resolved_tags` (RESOLVED_TAGS), `warnings` (STRING), `errors` (STRING) |
|
|
| **Category Splitter** | `resolved_tags` (RESOLVED_TAGS) | `category_map` (CATEGORY_MAP), `warnings` (STRING), `errors` (STRING) |
|
|
| **Prompt Builder** | `category_map` (CATEGORY_MAP), `config` (COMPILER_CONFIG, optional) | one STRING per category (`character`, `appearance`, `hair`, `face`, `eyes`, `expression`, `body`, `clothing`, `accessories`, `pose`, `action`, `interaction`, `objects`, `environment`, `camera`, `lighting`, `style`, `quality`, `miscellaneous`) plus reserved `negative` and `scene` (STRING) |
|
|
|
|
The **Category Splitter** produces the intermediate Category Map; the per-category
|
|
prompt strings are produced by the **Prompt Builder**.
|
|
|
|
## Support nodes
|
|
|
|
| Node | Inputs | Outputs |
|
|
|---|---|---|
|
|
| **Configuration** | one input per configuration option (analyzer, resolver, validator, prompt builder, debug) | `config` (COMPILER_CONFIG), `errors` (STRING) |
|
|
| **Knowledge Base Loader** | `path` (STRING), `reload` (INT, optional) | `knowledge_base` (KNOWLEDGE_BASE), `warnings` (STRING), `errors` (STRING) |
|
|
| **Debug Viewer** | `scene` (SCENE, optional), `resolved_tags` (RESOLVED_TAGS, optional), `category_map` (CATEGORY_MAP, optional), `warnings` (STRING, optional), `errors` (STRING, optional) | `report` (STRING) |
|
|
|
|
- The **Configuration** node's `config` output feeds the optional `config` input of
|
|
the Validator, Resolver, and Prompt Builder, so behaviour changes without
|
|
rewiring.
|
|
- The **Knowledge Base Loader** reloads only when `reload` changes (no automatic
|
|
file watching).
|
|
- The **Debug Viewer** is read-only; connect any intermediate state to inspect it.
|
|
|
|
A ready-to-use workflow wiring all of these is in
|
|
[`examples/workflows/scene_compiler_pipeline.json`](../examples/workflows/scene_compiler_pipeline.json).
|