ComfyUI custom-node package that fetches node descriptors from an
RNP/1 (Remote Node Protocol v1) server and exposes them as native V3
nodes inside ComfyUI.
Includes:
- Manifest + capability handshake, ETag-conditional object_info fetch
- Sync execute_remote and async _run_async_polling flows via
comfy_api_nodes.util.client.poll_op_raw
- Image / mask / audio / video envelope encode + decode
- Presigned upload helper for >8 MiB inputs
- Tier 3:
* TASK_LOST detection + idempotent resume — survives an RNP server
restart mid-task
* SERVER_BUSY / MAINTENANCE 503 envelopes treated as rate limits
with Retry-After honoring and friendly per-second progress text
* Out-of-band url_fetch for URI-only output envelopes per the
descriptor's remote.url_fetch policy
* Per-poll auth refresh so long-running tasks pick up rotated tokens
Pairs with Comfy-Org/comfy-rnp-server (private) as the reference
server implementation.
16 lines
668 B
Python
16 lines
668 B
Python
"""comfy_remote_nodes — ComfyUI client for the Remote Node Protocol (RNP/1).
|
|
|
|
* On boot, fetches ``GET /rnp/v1/manifest`` then
|
|
``GET /rnp/v1/object_info`` from the server URL set via
|
|
``RNP_SERVER_URL``.
|
|
* Builds dynamic V3 ``IO.ComfyNode`` subclasses for each descriptor
|
|
with a ``remote.endpoints.execute`` entry and registers them with
|
|
ComfyUI through the standard ``ComfyExtension`` interface.
|
|
* Only ``execute`` is wired today; ``validate_inputs``,
|
|
``fingerprint_inputs`` and ``check_lazy_status`` fall through to
|
|
ComfyUI's defaults.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from .registry import comfy_entrypoint # noqa: F401 — exposed to ComfyUI
|