import json,subprocess,pathlib def run(*a):return subprocess.check_output(a,text=True,stderr=subprocess.STDOUT) code="""from pathlib import Path files=[Path('/app')/n for n in ('main.py','server.py','execution.py','comfy_extras/nodes_string.py')] files+=list(Path('/app/custom_nodes/ComfyUI-H3CaptionPipeline').rglob('*.py')) for p in files: lines=p.read_text(errors='replace').splitlines() for i,line in enumerate(lines): if 'H3_HISTORY' in line or 'history_snapshot' in line or 'WORKER_CONTROL' in line: print(str(p),i+1,'\\n'.join(lines[max(0,i-3):i+8])) """ print(run('docker','exec','h3-caption-gpu3-canary-8a5f','python','-c',code)) root='/home/www/open-ai-canvas/.releases/h3-rolling-gpu-update-20261009-8a5f/comfy-veda-v14-20261010/custom_nodes' names=run('docker','ps','-a','--format','{{.Names}}').splitlines() for name in names: d=json.loads(run('docker','inspect',name))[0] if any(m['Source']==root for m in d['Mounts']): print('shares GPU3 plugin root:',name)