comfyui-skill-cli 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 HuangYuChuh
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,139 @@
1
+ Metadata-Version: 2.4
2
+ Name: comfyui-skill-cli
3
+ Version: 0.1.0
4
+ Summary: ComfyUI Skill CLI — Agent-friendly workflow management
5
+ Author: HuangYuChuh
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/HuangYuChuh/ComfyUI_Skill_CLI
8
+ Project-URL: Repository, https://github.com/HuangYuChuh/ComfyUI_Skill_CLI
9
+ Project-URL: Issues, https://github.com/HuangYuChuh/ComfyUI_Skill_CLI/issues
10
+ Keywords: comfyui,cli,agent,skill,workflow,ai,image-generation
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Software Development :: Libraries
20
+ Classifier: Topic :: Multimedia :: Graphics
21
+ Requires-Python: >=3.10
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Requires-Dist: typer>=0.9
25
+ Requires-Dist: rich>=13.0
26
+ Requires-Dist: requests>=2.28
27
+ Dynamic: license-file
28
+
29
+ # ComfyUI Skill CLI
30
+
31
+ Agent-friendly command-line tool for managing and executing [ComfyUI](https://github.com/comfyanonymous/ComfyUI) workflow skills.
32
+
33
+ ## What is this?
34
+
35
+ ComfyUI Skill CLI turns ComfyUI workflows into callable commands. Any AI agent that can run shell commands (Claude, Codex, OpenClaw, etc.) can use ComfyUI through this CLI.
36
+
37
+ ```bash
38
+ # List available skills
39
+ comfyui-skill list --json
40
+
41
+ # Execute a workflow
42
+ comfyui-skill run local/txt2img --args '{"prompt": "a white cat", "seed": 42}' --json
43
+
44
+ # Check server health
45
+ comfyui-skill server status --json
46
+ ```
47
+
48
+ Every command supports `--json` for structured output. Pipe-friendly by default.
49
+
50
+ ## Install
51
+
52
+ ```bash
53
+ pipx install comfyui-skill-cli
54
+ ```
55
+
56
+ ## Usage
57
+
58
+ Run commands from within a [ComfyUI Skills](https://github.com/HuangYuChuh/ComfyUI_Skills_OpenClaw) project directory:
59
+
60
+ ```bash
61
+ cd /path/to/your-skills-project
62
+ comfyui-skill list
63
+ ```
64
+
65
+ The CLI reads `config.json` and `data/` from the current working directory.
66
+
67
+ ### Commands
68
+
69
+ | Command | Description |
70
+ |---------|-------------|
71
+ | `comfyui-skill list` | List all available skills with parameters |
72
+ | `comfyui-skill info <id>` | Show skill details and parameter schema |
73
+ | `comfyui-skill run <id> --args '{...}'` | Execute a skill (blocking) |
74
+ | `comfyui-skill submit <id> --args '{...}'` | Submit a skill (non-blocking) |
75
+ | `comfyui-skill status <prompt-id>` | Check execution status |
76
+ | `comfyui-skill server list` | List configured servers |
77
+ | `comfyui-skill server status` | Check if ComfyUI server is online |
78
+ | `comfyui-skill deps check <id>` | Check missing dependencies |
79
+ | `comfyui-skill deps install <id>` | Install missing dependencies |
80
+
81
+ ### Global Options
82
+
83
+ | Option | Description |
84
+ |--------|-------------|
85
+ | `--json, -j` | Force JSON output |
86
+ | `--server, -s` | Specify server ID |
87
+ | `--dir, -d` | Specify data directory (default: current directory) |
88
+ | `--verbose, -v` | Verbose output |
89
+
90
+ ### Output Modes
91
+
92
+ - **TTY** → Rich tables and progress bars (human-friendly)
93
+ - **Pipe / `--json`** → Structured JSON (agent-friendly)
94
+ - **Errors** → Always stderr
95
+
96
+ ### Skill ID Format
97
+
98
+ ```bash
99
+ comfyui-skill run local/txt2img # server_id/workflow_id
100
+ comfyui-skill run txt2img # uses default server
101
+ comfyui-skill run txt2img -s my_server # explicit server
102
+ ```
103
+
104
+ ## For AI Agents
105
+
106
+ This CLI is designed to be called from `SKILL.md` definitions:
107
+
108
+ ```markdown
109
+ ## Available Commands
110
+ comfyui-skill list --json
111
+ comfyui-skill info <server_id>/<workflow_id> --json
112
+ comfyui-skill run <server_id>/<workflow_id> --args '{"prompt":"..."}' --json
113
+
114
+ ## Typical Flow
115
+ 1. `comfyui-skill server status --json` — verify server is online
116
+ 2. `comfyui-skill list --json` — discover available skills
117
+ 3. `comfyui-skill info <id> --json` — check required parameters
118
+ 4. `comfyui-skill run <id> --args '{...}' --json` — execute
119
+ ```
120
+
121
+ ## Exit Codes
122
+
123
+ | Code | Meaning |
124
+ |------|---------|
125
+ | 0 | Success |
126
+ | 1 | General error |
127
+ | 2 | Invalid arguments |
128
+ | 3 | Server connection failed |
129
+ | 4 | Resource not found |
130
+ | 5 | Execution failed |
131
+ | 6 | Timeout |
132
+
133
+ ## Compatibility
134
+
135
+ Built with [Typer](https://typer.tiangolo.com/), the same framework as [comfy-cli](https://github.com/Comfy-Org/comfy-cli). Designed to be integrated as a `comfy skills` subcommand in the future.
136
+
137
+ ## License
138
+
139
+ MIT
@@ -0,0 +1,111 @@
1
+ # ComfyUI Skill CLI
2
+
3
+ Agent-friendly command-line tool for managing and executing [ComfyUI](https://github.com/comfyanonymous/ComfyUI) workflow skills.
4
+
5
+ ## What is this?
6
+
7
+ ComfyUI Skill CLI turns ComfyUI workflows into callable commands. Any AI agent that can run shell commands (Claude, Codex, OpenClaw, etc.) can use ComfyUI through this CLI.
8
+
9
+ ```bash
10
+ # List available skills
11
+ comfyui-skill list --json
12
+
13
+ # Execute a workflow
14
+ comfyui-skill run local/txt2img --args '{"prompt": "a white cat", "seed": 42}' --json
15
+
16
+ # Check server health
17
+ comfyui-skill server status --json
18
+ ```
19
+
20
+ Every command supports `--json` for structured output. Pipe-friendly by default.
21
+
22
+ ## Install
23
+
24
+ ```bash
25
+ pipx install comfyui-skill-cli
26
+ ```
27
+
28
+ ## Usage
29
+
30
+ Run commands from within a [ComfyUI Skills](https://github.com/HuangYuChuh/ComfyUI_Skills_OpenClaw) project directory:
31
+
32
+ ```bash
33
+ cd /path/to/your-skills-project
34
+ comfyui-skill list
35
+ ```
36
+
37
+ The CLI reads `config.json` and `data/` from the current working directory.
38
+
39
+ ### Commands
40
+
41
+ | Command | Description |
42
+ |---------|-------------|
43
+ | `comfyui-skill list` | List all available skills with parameters |
44
+ | `comfyui-skill info <id>` | Show skill details and parameter schema |
45
+ | `comfyui-skill run <id> --args '{...}'` | Execute a skill (blocking) |
46
+ | `comfyui-skill submit <id> --args '{...}'` | Submit a skill (non-blocking) |
47
+ | `comfyui-skill status <prompt-id>` | Check execution status |
48
+ | `comfyui-skill server list` | List configured servers |
49
+ | `comfyui-skill server status` | Check if ComfyUI server is online |
50
+ | `comfyui-skill deps check <id>` | Check missing dependencies |
51
+ | `comfyui-skill deps install <id>` | Install missing dependencies |
52
+
53
+ ### Global Options
54
+
55
+ | Option | Description |
56
+ |--------|-------------|
57
+ | `--json, -j` | Force JSON output |
58
+ | `--server, -s` | Specify server ID |
59
+ | `--dir, -d` | Specify data directory (default: current directory) |
60
+ | `--verbose, -v` | Verbose output |
61
+
62
+ ### Output Modes
63
+
64
+ - **TTY** → Rich tables and progress bars (human-friendly)
65
+ - **Pipe / `--json`** → Structured JSON (agent-friendly)
66
+ - **Errors** → Always stderr
67
+
68
+ ### Skill ID Format
69
+
70
+ ```bash
71
+ comfyui-skill run local/txt2img # server_id/workflow_id
72
+ comfyui-skill run txt2img # uses default server
73
+ comfyui-skill run txt2img -s my_server # explicit server
74
+ ```
75
+
76
+ ## For AI Agents
77
+
78
+ This CLI is designed to be called from `SKILL.md` definitions:
79
+
80
+ ```markdown
81
+ ## Available Commands
82
+ comfyui-skill list --json
83
+ comfyui-skill info <server_id>/<workflow_id> --json
84
+ comfyui-skill run <server_id>/<workflow_id> --args '{"prompt":"..."}' --json
85
+
86
+ ## Typical Flow
87
+ 1. `comfyui-skill server status --json` — verify server is online
88
+ 2. `comfyui-skill list --json` — discover available skills
89
+ 3. `comfyui-skill info <id> --json` — check required parameters
90
+ 4. `comfyui-skill run <id> --args '{...}' --json` — execute
91
+ ```
92
+
93
+ ## Exit Codes
94
+
95
+ | Code | Meaning |
96
+ |------|---------|
97
+ | 0 | Success |
98
+ | 1 | General error |
99
+ | 2 | Invalid arguments |
100
+ | 3 | Server connection failed |
101
+ | 4 | Resource not found |
102
+ | 5 | Execution failed |
103
+ | 6 | Timeout |
104
+
105
+ ## Compatibility
106
+
107
+ Built with [Typer](https://typer.tiangolo.com/), the same framework as [comfy-cli](https://github.com/Comfy-Org/comfy-cli). Designed to be integrated as a `comfy skills` subcommand in the future.
108
+
109
+ ## License
110
+
111
+ MIT
@@ -0,0 +1,139 @@
1
+ Metadata-Version: 2.4
2
+ Name: comfyui-skill-cli
3
+ Version: 0.1.0
4
+ Summary: ComfyUI Skill CLI — Agent-friendly workflow management
5
+ Author: HuangYuChuh
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/HuangYuChuh/ComfyUI_Skill_CLI
8
+ Project-URL: Repository, https://github.com/HuangYuChuh/ComfyUI_Skill_CLI
9
+ Project-URL: Issues, https://github.com/HuangYuChuh/ComfyUI_Skill_CLI/issues
10
+ Keywords: comfyui,cli,agent,skill,workflow,ai,image-generation
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Software Development :: Libraries
20
+ Classifier: Topic :: Multimedia :: Graphics
21
+ Requires-Python: >=3.10
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Requires-Dist: typer>=0.9
25
+ Requires-Dist: rich>=13.0
26
+ Requires-Dist: requests>=2.28
27
+ Dynamic: license-file
28
+
29
+ # ComfyUI Skill CLI
30
+
31
+ Agent-friendly command-line tool for managing and executing [ComfyUI](https://github.com/comfyanonymous/ComfyUI) workflow skills.
32
+
33
+ ## What is this?
34
+
35
+ ComfyUI Skill CLI turns ComfyUI workflows into callable commands. Any AI agent that can run shell commands (Claude, Codex, OpenClaw, etc.) can use ComfyUI through this CLI.
36
+
37
+ ```bash
38
+ # List available skills
39
+ comfyui-skill list --json
40
+
41
+ # Execute a workflow
42
+ comfyui-skill run local/txt2img --args '{"prompt": "a white cat", "seed": 42}' --json
43
+
44
+ # Check server health
45
+ comfyui-skill server status --json
46
+ ```
47
+
48
+ Every command supports `--json` for structured output. Pipe-friendly by default.
49
+
50
+ ## Install
51
+
52
+ ```bash
53
+ pipx install comfyui-skill-cli
54
+ ```
55
+
56
+ ## Usage
57
+
58
+ Run commands from within a [ComfyUI Skills](https://github.com/HuangYuChuh/ComfyUI_Skills_OpenClaw) project directory:
59
+
60
+ ```bash
61
+ cd /path/to/your-skills-project
62
+ comfyui-skill list
63
+ ```
64
+
65
+ The CLI reads `config.json` and `data/` from the current working directory.
66
+
67
+ ### Commands
68
+
69
+ | Command | Description |
70
+ |---------|-------------|
71
+ | `comfyui-skill list` | List all available skills with parameters |
72
+ | `comfyui-skill info <id>` | Show skill details and parameter schema |
73
+ | `comfyui-skill run <id> --args '{...}'` | Execute a skill (blocking) |
74
+ | `comfyui-skill submit <id> --args '{...}'` | Submit a skill (non-blocking) |
75
+ | `comfyui-skill status <prompt-id>` | Check execution status |
76
+ | `comfyui-skill server list` | List configured servers |
77
+ | `comfyui-skill server status` | Check if ComfyUI server is online |
78
+ | `comfyui-skill deps check <id>` | Check missing dependencies |
79
+ | `comfyui-skill deps install <id>` | Install missing dependencies |
80
+
81
+ ### Global Options
82
+
83
+ | Option | Description |
84
+ |--------|-------------|
85
+ | `--json, -j` | Force JSON output |
86
+ | `--server, -s` | Specify server ID |
87
+ | `--dir, -d` | Specify data directory (default: current directory) |
88
+ | `--verbose, -v` | Verbose output |
89
+
90
+ ### Output Modes
91
+
92
+ - **TTY** → Rich tables and progress bars (human-friendly)
93
+ - **Pipe / `--json`** → Structured JSON (agent-friendly)
94
+ - **Errors** → Always stderr
95
+
96
+ ### Skill ID Format
97
+
98
+ ```bash
99
+ comfyui-skill run local/txt2img # server_id/workflow_id
100
+ comfyui-skill run txt2img # uses default server
101
+ comfyui-skill run txt2img -s my_server # explicit server
102
+ ```
103
+
104
+ ## For AI Agents
105
+
106
+ This CLI is designed to be called from `SKILL.md` definitions:
107
+
108
+ ```markdown
109
+ ## Available Commands
110
+ comfyui-skill list --json
111
+ comfyui-skill info <server_id>/<workflow_id> --json
112
+ comfyui-skill run <server_id>/<workflow_id> --args '{"prompt":"..."}' --json
113
+
114
+ ## Typical Flow
115
+ 1. `comfyui-skill server status --json` — verify server is online
116
+ 2. `comfyui-skill list --json` — discover available skills
117
+ 3. `comfyui-skill info <id> --json` — check required parameters
118
+ 4. `comfyui-skill run <id> --args '{...}' --json` — execute
119
+ ```
120
+
121
+ ## Exit Codes
122
+
123
+ | Code | Meaning |
124
+ |------|---------|
125
+ | 0 | Success |
126
+ | 1 | General error |
127
+ | 2 | Invalid arguments |
128
+ | 3 | Server connection failed |
129
+ | 4 | Resource not found |
130
+ | 5 | Execution failed |
131
+ | 6 | Timeout |
132
+
133
+ ## Compatibility
134
+
135
+ Built with [Typer](https://typer.tiangolo.com/), the same framework as [comfy-cli](https://github.com/Comfy-Org/comfy-cli). Designed to be integrated as a `comfy skills` subcommand in the future.
136
+
137
+ ## License
138
+
139
+ MIT
@@ -0,0 +1,21 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ comfyui_skill_cli.egg-info/PKG-INFO
5
+ comfyui_skill_cli.egg-info/SOURCES.txt
6
+ comfyui_skill_cli.egg-info/dependency_links.txt
7
+ comfyui_skill_cli.egg-info/entry_points.txt
8
+ comfyui_skill_cli.egg-info/requires.txt
9
+ comfyui_skill_cli.egg-info/top_level.txt
10
+ comfyui_skills_cli/__init__.py
11
+ comfyui_skills_cli/__main__.py
12
+ comfyui_skills_cli/client.py
13
+ comfyui_skills_cli/config.py
14
+ comfyui_skills_cli/main.py
15
+ comfyui_skills_cli/output.py
16
+ comfyui_skills_cli/storage.py
17
+ comfyui_skills_cli/commands/__init__.py
18
+ comfyui_skills_cli/commands/deps.py
19
+ comfyui_skills_cli/commands/run.py
20
+ comfyui_skills_cli/commands/server.py
21
+ comfyui_skills_cli/commands/skill.py
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ comfyui-skill = comfyui_skills_cli.__main__:main
@@ -0,0 +1,3 @@
1
+ typer>=0.9
2
+ rich>=13.0
3
+ requests>=2.28
@@ -0,0 +1 @@
1
+ comfyui_skills_cli
File without changes
@@ -0,0 +1,9 @@
1
+ from .main import app
2
+
3
+
4
+ def main():
5
+ app()
6
+
7
+
8
+ if __name__ == "__main__":
9
+ main()
@@ -0,0 +1,139 @@
1
+ """ComfyUI HTTP client — all server communication goes through here."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ import time
7
+ import uuid
8
+ from typing import Any
9
+
10
+ import requests
11
+
12
+
13
+ class ComfyUIClient:
14
+ def __init__(self, server_url: str, auth: str = "", comfy_api_key: str = "", timeout: float = 30.0):
15
+ self.server_url = server_url.rstrip("/")
16
+ self.auth = auth
17
+ self.comfy_api_key = comfy_api_key
18
+ self.timeout = timeout
19
+
20
+ def _headers(self) -> dict[str, str]:
21
+ headers: dict[str, str] = {}
22
+ if self.auth:
23
+ headers["Authorization"] = f"Bearer {self.auth}"
24
+ return headers
25
+
26
+ def _get(self, path: str, **kwargs: Any) -> requests.Response:
27
+ return requests.get(
28
+ f"{self.server_url}{path}",
29
+ headers=self._headers(),
30
+ timeout=self.timeout,
31
+ **kwargs,
32
+ )
33
+
34
+ def _post(self, path: str, json_data: Any = None, **kwargs: Any) -> requests.Response:
35
+ return requests.post(
36
+ f"{self.server_url}{path}",
37
+ headers=self._headers(),
38
+ json=json_data,
39
+ timeout=self.timeout,
40
+ **kwargs,
41
+ )
42
+
43
+ # -- Health --
44
+
45
+ def check_health(self) -> dict[str, Any]:
46
+ try:
47
+ resp = self._get("/system_stats")
48
+ resp.raise_for_status()
49
+ return {"status": "online", "data": resp.json()}
50
+ except (requests.RequestException, ValueError) as exc:
51
+ return {"status": "offline", "error": str(exc)}
52
+
53
+ # -- Prompt execution --
54
+
55
+ def queue_prompt(self, workflow: dict[str, Any]) -> dict[str, Any]:
56
+ payload: dict[str, Any] = {
57
+ "prompt": workflow,
58
+ "client_id": str(uuid.uuid4()),
59
+ }
60
+ if self.comfy_api_key:
61
+ payload["extra_data"] = {"api_key_comfy_org": self.comfy_api_key}
62
+ resp = self._post("/prompt", json_data=payload)
63
+ resp.raise_for_status()
64
+ return resp.json()
65
+
66
+ def get_history(self, prompt_id: str) -> dict[str, Any] | None:
67
+ resp = self._get(f"/history/{prompt_id}")
68
+ if resp.status_code != 200:
69
+ return None
70
+ data = resp.json()
71
+ return data.get(prompt_id)
72
+
73
+ def get_queue(self) -> dict[str, Any]:
74
+ resp = self._get("/queue")
75
+ resp.raise_for_status()
76
+ return resp.json()
77
+
78
+ def download_output(self, filename: str, subfolder: str = "", output_type: str = "output") -> bytes:
79
+ resp = self._get("/view", params={
80
+ "filename": filename,
81
+ "subfolder": subfolder,
82
+ "type": output_type,
83
+ })
84
+ resp.raise_for_status()
85
+ return resp.content
86
+
87
+ # -- Node info --
88
+
89
+ def get_object_info(self) -> dict[str, Any]:
90
+ resp = self._get("/object_info")
91
+ resp.raise_for_status()
92
+ return resp.json()
93
+
94
+ def get_models(self, folder: str) -> list[str]:
95
+ resp = self._get(f"/models/{folder}")
96
+ resp.raise_for_status()
97
+ return resp.json()
98
+
99
+ # -- Manager API (ComfyUI-Manager plugin) --
100
+
101
+ def manager_start_queue(self) -> bool:
102
+ try:
103
+ resp = self._get("/manager/queue/start", timeout=10)
104
+ return resp.status_code < 500
105
+ except requests.RequestException:
106
+ return False
107
+
108
+ def manager_install_node(self, repo_url: str, pkg_name: str) -> dict[str, Any]:
109
+ resp = self._post("/manager/queue/install", json_data={
110
+ "id": pkg_name,
111
+ "url": repo_url,
112
+ "install_type": "git-clone",
113
+ })
114
+ if resp.status_code == 404:
115
+ return {"success": False, "error": "ComfyUI Manager not installed"}
116
+ if resp.status_code >= 400:
117
+ return {"success": False, "error": f"Manager API error: {resp.status_code}"}
118
+ return {"success": True}
119
+
120
+ def manager_queue_status(self) -> dict[str, Any] | None:
121
+ try:
122
+ resp = self._get("/manager/queue/status", timeout=10)
123
+ if resp.status_code != 200:
124
+ return None
125
+ return resp.json()
126
+ except (requests.RequestException, ValueError):
127
+ return None
128
+
129
+ def manager_wait_for_queue(self, max_polls: int = 60, interval: float = 3.0) -> bool:
130
+ for _ in range(max_polls):
131
+ time.sleep(interval)
132
+ status = self.manager_queue_status()
133
+ if status is None:
134
+ continue
135
+ total = status.get("total", 0)
136
+ done = status.get("done", 0)
137
+ if total > 0 and done >= total:
138
+ return True
139
+ return False