Files
Comfy-Org-comfy-remote-nodes/__init__.py
Kosinkadink cf55bd58ae Initial RNP/1 client implementation with Tier 3 features
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.
2026-05-11 12:31:05 -07:00

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