Lands the P4 frontend MVP plus 9 follow-up polish batches (88 commits squashed). * Pipeline Context, Prompt Assembler, Debug Viewer widgets * PIPELINE_CONTEXT chain crosses subgraph boundaries * Conflict badges on SubgraphNodes containing WP nodes * Empty-state hero, soft-delete + Undo toasts, corrupt-workflow recovery * Bundled Inter + JetBrains Mono variable fonts, brand identity end-to-end * Settings panel: Reduce motion + Contrast (a11y) with live updates * DX: coverage gate, stricter ESLint, pre-commit pnpm size, PR size-delta workflow, contract doc Closes the polish-brainstorm spec.
37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
"""WP_Debug — terminal node that emits the PipelineContext for UI inspection."""
|
|
|
|
import json
|
|
|
|
from comfy_api.latest import io # pyright: ignore[reportMissingImports]
|
|
|
|
from wp_nodes.types import DebugViewerInput, PipelineContext
|
|
|
|
|
|
class WPDebug(io.ComfyNode):
|
|
"""Inspect the context at any point in the chain. Terminal output node."""
|
|
|
|
@classmethod
|
|
def define_schema(cls):
|
|
return io.Schema(
|
|
node_id="WP_Debug",
|
|
display_name="WP Debug",
|
|
category="wildcard-pipeline",
|
|
inputs=[
|
|
PipelineContext.Input("context"),
|
|
DebugViewerInput.Input("viewer", socketless=True),
|
|
],
|
|
outputs=[],
|
|
is_output_node=True,
|
|
not_idempotent=True,
|
|
)
|
|
|
|
@classmethod
|
|
def execute(cls, context, viewer):
|
|
del viewer # accepted for widget binding parity; no runtime use
|
|
snapshot = json.dumps(
|
|
{"context": context.context, "debug": context.debug},
|
|
default=str,
|
|
indent=2,
|
|
)
|
|
return io.NodeOutput(ui={"wp_debug_snapshot": [snapshot]})
|