Files
HuangYuChuh-ComfyUI-LLMs-To…/__init__.py
T
科林_Cyril Pilgrim f843bbfe95 refactor: flatten architecture with auto-registration (Google best practices)
- Moved all nodes to flat nodes/ directory:
  - llm_loader.py
  - openai_compatible.py
  - image_processor.py
  - json_extractor.py (NEW)

- Implemented auto-registration in __init__.py:
  - Scans nodes/ directory automatically
  - No need to manually update imports
  - Follows YAGNI principle (4 nodes don't need deep nesting)

- Added JSON Extractor node:
  - Extract values from JSON strings by key
  - Supports nested keys (e.g., 'user.name')
  - Category: 🚦ComfyUI_LLMs_Toolkit/JSON

- Removed src/ multi-level structure for better discoverability
2026-02-09 21:53:02 +08:00

42 lines
1.4 KiB
Python

"""
ComfyUI-LLMs-Toolkit: Lightweight LLM API integration for ComfyUI.
Auto-registration mechanism for all nodes.
"""
from pathlib import Path
import importlib.util
import sys
# Initialize mappings
NODE_CLASS_MAPPINGS = {}
NODE_DISPLAY_NAME_MAPPINGS = {}
# Auto-load all nodes from nodes/ directory
nodes_dir = Path(__file__).parent / "nodes"
if nodes_dir.exists():
for py_file in sorted(nodes_dir.glob("*.py")):
if py_file.stem.startswith("_"):
continue
try:
# Load module
module_name = f"ComfyUI-LLMs-Toolkit.nodes.{py_file.stem}"
spec = importlib.util.spec_from_file_location(module_name, py_file)
module = importlib.util.module_from_spec(spec)
sys.modules[module_name] = module
spec.loader.exec_module(module)
# Register node mappings
if hasattr(module, "NODE_CLASS_MAPPINGS"):
NODE_CLASS_MAPPINGS.update(module.NODE_CLASS_MAPPINGS)
if hasattr(module, "NODE_DISPLAY_NAME_MAPPINGS"):
NODE_DISPLAY_NAME_MAPPINGS.update(module.NODE_DISPLAY_NAME_MAPPINGS)
except Exception as e:
print(f"[LLMs_Toolkit] Failed to load {py_file.stem}: {e}")
WEB_DIRECTORY = "./web"
__all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS", "WEB_DIRECTORY"]