comfyui-mcp 0.48.21 → 0.48.22
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.
- package/README.md +2 -2
- package/dist/comfyui/client.js +46 -6
- package/dist/comfyui/client.js.map +1 -1
- package/dist/config.js +15 -0
- package/dist/config.js.map +1 -1
- package/dist/orchestrator/error-text.js +29 -1
- package/dist/orchestrator/error-text.js.map +1 -1
- package/dist/orchestrator/error-text.test.js +28 -0
- package/dist/orchestrator/error-text.test.js.map +1 -1
- package/dist/orchestrator/index.js +151 -50
- package/dist/orchestrator/index.js.map +1 -1
- package/dist/orchestrator/panel-agent.js +21 -4
- package/dist/orchestrator/panel-agent.js.map +1 -1
- package/dist/orchestrator/panel-tools.js +1098 -168
- package/dist/orchestrator/panel-tools.js.map +1 -1
- package/dist/orchestrator/ready-banner.js +70 -0
- package/dist/orchestrator/ready-banner.js.map +1 -0
- package/dist/services/api-nodes.js +5 -7
- package/dist/services/api-nodes.js.map +1 -1
- package/dist/services/download-cache.js +126 -18
- package/dist/services/download-cache.js.map +1 -1
- package/dist/services/download-jobs.js +463 -14
- package/dist/services/download-jobs.js.map +1 -1
- package/dist/services/download-progress.js +247 -2
- package/dist/services/download-progress.js.map +1 -1
- package/dist/services/env-capabilities.js +80 -9
- package/dist/services/env-capabilities.js.map +1 -1
- package/dist/services/generate-audio.js +16 -0
- package/dist/services/generate-audio.js.map +1 -1
- package/dist/services/local-models-fallback.js +7 -3
- package/dist/services/local-models-fallback.js.map +1 -1
- package/dist/services/manifest.js +180 -65
- package/dist/services/manifest.js.map +1 -1
- package/dist/services/model-resolver.js +267 -11
- package/dist/services/model-resolver.js.map +1 -1
- package/dist/services/node-management.js +38 -27
- package/dist/services/node-management.js.map +1 -1
- package/dist/services/output-dir.js +33 -3
- package/dist/services/output-dir.js.map +1 -1
- package/dist/services/panel-secrets.js +19 -7
- package/dist/services/panel-secrets.js.map +1 -1
- package/dist/services/queue-monitor.js +45 -2
- package/dist/services/queue-monitor.js.map +1 -1
- package/dist/services/queue-monitor.stall.test.js +78 -0
- package/dist/services/queue-monitor.stall.test.js.map +1 -0
- package/dist/services/secure-bridge.js +84 -0
- package/dist/services/secure-bridge.js.map +1 -1
- package/dist/services/storage/azure-blob.js +8 -3
- package/dist/services/storage/azure-blob.js.map +1 -1
- package/dist/services/storage/index.js +3 -3
- package/dist/services/storage/index.js.map +1 -1
- package/dist/services/storage/s3.js +9 -3
- package/dist/services/storage/s3.js.map +1 -1
- package/dist/services/ui-bridge.js +294 -24
- package/dist/services/ui-bridge.js.map +1 -1
- package/dist/services/workflow-converter.js +767 -72
- package/dist/services/workflow-converter.js.map +1 -1
- package/dist/services/workflow-lock.js +127 -27
- package/dist/services/workflow-lock.js.map +1 -1
- package/dist/services/workspace-env.js +48 -0
- package/dist/services/workspace-env.js.map +1 -1
- package/dist/tools/generate-audio.js +44 -0
- package/dist/tools/generate-audio.js.map +1 -1
- package/dist/tools/model-extras.js +24 -4
- package/dist/tools/model-extras.js.map +1 -1
- package/dist/tools/model-management.js +124 -14
- package/dist/tools/model-management.js.map +1 -1
- package/dist/tools/report-issue.js +220 -66
- package/dist/tools/report-issue.js.map +1 -1
- package/dist/tools/report-issue.test.js +223 -83
- package/dist/tools/report-issue.test.js.map +1 -1
- package/dist/tools/skills-access.js +7 -2
- package/dist/tools/skills-access.js.map +1 -1
- package/dist/tools/template-schema.js +5 -5
- package/dist/tools/template-schema.js.map +1 -1
- package/dist/tools/workflow-compose.js +18 -3
- package/dist/tools/workflow-compose.js.map +1 -1
- package/package.json +1 -1
- package/packs/anima/install-runpod.sh +0 -1
- package/packs/anima/install-windows.bat +0 -1
- package/packs/anima/manifest.yaml +0 -1
- package/packs/anima-img2img/install-runpod.sh +0 -1
- package/packs/anima-img2img/install-windows.bat +0 -1
- package/packs/anima-img2img/manifest.yaml +0 -1
- package/packs/anima-inpaint/install-runpod.sh +0 -1
- package/packs/anima-inpaint/install-windows.bat +0 -1
- package/packs/anima-inpaint/manifest.yaml +0 -1
- package/packs/anima-txt2img/install-runpod.sh +0 -1
- package/packs/anima-txt2img/install-windows.bat +0 -1
- package/packs/anima-txt2img/manifest.yaml +0 -1
- package/packs/artokun-flow/install-runpod.sh +0 -1
- package/packs/artokun-flow/install-windows.bat +0 -1
- package/packs/artokun-flow/manifest.yaml +0 -1
- package/packs/ernie/install-runpod.sh +0 -1
- package/packs/ernie/install-windows.bat +0 -1
- package/packs/ernie/manifest.yaml +0 -1
- package/packs/ernie-combo/install-runpod.sh +0 -1
- package/packs/ernie-combo/install-windows.bat +0 -1
- package/packs/ernie-combo/manifest.yaml +0 -1
- package/packs/ernie-img2img/install-runpod.sh +0 -1
- package/packs/ernie-img2img/install-windows.bat +0 -1
- package/packs/ernie-img2img/manifest.yaml +0 -1
- package/packs/ernie-txt2img/install-runpod.sh +0 -1
- package/packs/ernie-txt2img/install-windows.bat +0 -1
- package/packs/ernie-txt2img/manifest.yaml +0 -1
- package/packs/ideogram/install-runpod.sh +0 -1
- package/packs/ideogram/install-windows.bat +0 -1
- package/packs/ideogram/manifest.yaml +0 -1
- package/packs/ideogram-img2img/install-runpod.sh +0 -1
- package/packs/ideogram-img2img/install-windows.bat +0 -1
- package/packs/ideogram-img2img/manifest.yaml +0 -1
- package/packs/ideogram-txt2img/install-runpod.sh +0 -1
- package/packs/ideogram-txt2img/install-windows.bat +0 -1
- package/packs/ideogram-txt2img/manifest.yaml +0 -1
- package/packs/ltx-2.3/install-runpod.sh +0 -1
- package/packs/ltx-2.3/install-windows.bat +0 -1
- package/packs/ltx-2.3/manifest.yaml +0 -1
- package/packs/ltx-2.3-extender/install-runpod.sh +0 -1
- package/packs/ltx-2.3-extender/install-windows.bat +0 -1
- package/packs/ltx-2.3-extender/manifest.yaml +0 -1
- package/packs/ltx-2.3-extender-no-audio/install-runpod.sh +0 -1
- package/packs/ltx-2.3-extender-no-audio/install-windows.bat +0 -1
- package/packs/ltx-2.3-extender-no-audio/manifest.yaml +0 -1
- package/packs/ltx-2.3-flf/install-runpod.sh +0 -1
- package/packs/ltx-2.3-flf/install-windows.bat +0 -1
- package/packs/ltx-2.3-flf/manifest.yaml +0 -1
- package/packs/ltx-2.3-img2vid/install-runpod.sh +0 -1
- package/packs/ltx-2.3-img2vid/install-windows.bat +0 -1
- package/packs/ltx-2.3-img2vid/manifest.yaml +3 -4
- package/packs/ltx-2.3-txt2vid/install-runpod.sh +0 -1
- package/packs/ltx-2.3-txt2vid/install-windows.bat +0 -1
- package/packs/ltx-2.3-txt2vid/manifest.yaml +3 -4
- package/packs/ltx-2.3-xy-plot/install-runpod.sh +0 -1
- package/packs/ltx-2.3-xy-plot/install-windows.bat +0 -1
- package/packs/ltx-2.3-xy-plot/manifest.yaml +0 -1
- package/packs/ltx23-distill-3stage/install-runpod.sh +0 -1
- package/packs/ltx23-distill-3stage/install-windows.bat +0 -1
- package/packs/ltx23-distill-3stage/manifest.yaml +0 -1
- package/packs/qwen-image/install-runpod.sh +0 -1
- package/packs/qwen-image/install-windows.bat +0 -1
- package/packs/qwen-image/manifest.yaml +0 -1
- package/packs/qwen-image-edit/install-runpod.sh +0 -1
- package/packs/qwen-image-edit/install-windows.bat +0 -1
- package/packs/qwen-image-edit/manifest.yaml +0 -1
- package/packs/qwen-image-edit-edit/install-runpod.sh +0 -1
- package/packs/qwen-image-edit-edit/install-windows.bat +0 -1
- package/packs/qwen-image-edit-edit/manifest.yaml +0 -1
- package/packs/wan-animate/install-runpod.sh +0 -1
- package/packs/wan-animate/install-windows.bat +0 -1
- package/packs/wan-animate/manifest.yaml +0 -1
- package/packs/wan-animate-character/install-runpod.sh +0 -1
- package/packs/wan-animate-character/install-windows.bat +0 -1
- package/packs/wan-animate-character/manifest.yaml +0 -1
- package/packs/wan-animate-ofm/install-runpod.sh +0 -1
- package/packs/wan-animate-ofm/install-windows.bat +0 -1
- package/packs/wan-animate-ofm/manifest.yaml +0 -1
- package/packs/wan-longer-videos/install-runpod.sh +0 -1
- package/packs/wan-longer-videos/install-windows.bat +0 -1
- package/packs/wan-longer-videos/manifest.yaml +0 -1
- package/packs/wan-longer-videos-i2v/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-i2v/install-windows.bat +0 -1
- package/packs/wan-longer-videos-i2v/manifest.yaml +0 -1
- package/packs/wan-longer-videos-i2v-96gb/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-i2v-96gb/install-windows.bat +0 -1
- package/packs/wan-longer-videos-i2v-96gb/manifest.yaml +0 -1
- package/packs/wan-longer-videos-t2v/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-t2v/install-windows.bat +0 -1
- package/packs/wan-longer-videos-t2v/manifest.yaml +0 -1
- package/packs/wan-longer-videos-t2v-96gb/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-t2v-96gb/install-windows.bat +0 -1
- package/packs/wan-longer-videos-t2v-96gb/manifest.yaml +0 -1
- package/packs/wan-longer-videos-v2v/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-v2v/install-windows.bat +0 -1
- package/packs/wan-longer-videos-v2v/manifest.yaml +0 -1
- package/packs/wan-longer-videos-v2v-96gb/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-v2v-96gb/install-windows.bat +0 -1
- package/packs/wan-longer-videos-v2v-96gb/manifest.yaml +0 -1
- package/packs/wan-multitalk/install-runpod.sh +0 -1
- package/packs/wan-multitalk/install-windows.bat +0 -1
- package/packs/wan-multitalk/manifest.yaml +0 -1
- package/packs/wan-pusa-extend/install-runpod.sh +0 -1
- package/packs/wan-pusa-extend/install-windows.bat +0 -1
- package/packs/wan-pusa-extend/manifest.yaml +0 -1
- package/packs/wan-transparent/install-runpod.sh +0 -1
- package/packs/wan-transparent/install-windows.bat +0 -1
- package/packs/wan-transparent/manifest.yaml +0 -1
- package/packs/wan-transparent-img2vid/install-runpod.sh +0 -1
- package/packs/wan-transparent-img2vid/install-windows.bat +0 -1
- package/packs/wan-transparent-img2vid/manifest.yaml +0 -1
- package/packs/wan-transparent-img2vid-96gb/install-runpod.sh +0 -1
- package/packs/wan-transparent-img2vid-96gb/install-windows.bat +0 -1
- package/packs/wan-transparent-img2vid-96gb/manifest.yaml +0 -1
- package/packs/z-image-base/install-runpod.sh +0 -1
- package/packs/z-image-base/install-windows.bat +0 -1
- package/packs/z-image-base/manifest.yaml +0 -1
- package/packs/z-image-base-combo/install-runpod.sh +0 -1
- package/packs/z-image-base-combo/install-windows.bat +0 -1
- package/packs/z-image-base-combo/manifest.yaml +0 -1
- package/packs/z-image-base-controlnet/install-runpod.sh +0 -1
- package/packs/z-image-base-controlnet/install-windows.bat +0 -1
- package/packs/z-image-base-controlnet/manifest.yaml +0 -1
- package/packs/z-image-base-img2img/install-runpod.sh +0 -1
- package/packs/z-image-base-img2img/install-windows.bat +0 -1
- package/packs/z-image-base-img2img/manifest.yaml +0 -1
- package/packs/z-image-base-inpaint/install-runpod.sh +0 -1
- package/packs/z-image-base-inpaint/install-windows.bat +0 -1
- package/packs/z-image-base-inpaint/manifest.yaml +0 -1
- package/packs/z-image-base-txt2img/install-runpod.sh +0 -1
- package/packs/z-image-base-txt2img/install-windows.bat +0 -1
- package/packs/z-image-base-txt2img/manifest.yaml +0 -1
- package/packs/z-image-turbo/install-runpod.sh +0 -1
- package/packs/z-image-turbo/install-windows.bat +0 -1
- package/packs/z-image-turbo/manifest.yaml +0 -1
- package/packs/z-image-turbo-combo/install-runpod.sh +0 -1
- package/packs/z-image-turbo-combo/install-windows.bat +0 -1
- package/packs/z-image-turbo-combo/manifest.yaml +0 -1
- package/packs/z-image-turbo-controlnet/install-runpod.sh +0 -1
- package/packs/z-image-turbo-controlnet/install-windows.bat +0 -1
- package/packs/z-image-turbo-controlnet/manifest.yaml +0 -1
- package/packs/z-image-turbo-detail-daemon/install-runpod.sh +0 -1
- package/packs/z-image-turbo-detail-daemon/install-windows.bat +0 -1
- package/packs/z-image-turbo-detail-daemon/manifest.yaml +0 -1
- package/packs/z-image-turbo-img2img/install-runpod.sh +0 -1
- package/packs/z-image-turbo-img2img/install-windows.bat +0 -1
- package/packs/z-image-turbo-img2img/manifest.yaml +0 -1
- package/packs/z-image-turbo-inpainting/install-runpod.sh +0 -1
- package/packs/z-image-turbo-inpainting/install-windows.bat +0 -1
- package/packs/z-image-turbo-inpainting/manifest.yaml +0 -1
- package/packs/z-image-turbo-txt2img/install-runpod.sh +0 -1
- package/packs/z-image-turbo-txt2img/install-windows.bat +0 -1
- package/packs/z-image-turbo-txt2img/manifest.yaml +0 -1
- package/packs/z-image-xy-plot/install-runpod.sh +0 -1
- package/packs/z-image-xy-plot/install-windows.bat +0 -1
- package/packs/z-image-xy-plot/manifest.yaml +0 -1
- package/scripts/test-packs.sh +8 -3
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
2
|
+
import { detectInstallMode } from "../services/self-update.js";
|
|
3
|
+
// Issue reporting. For OUR repos (comfyui-mcp / comfyui-mcp-panel) this FILES the
|
|
4
|
+
// issue through the async AI-triage Worker: submit (with the reporter's versions)
|
|
5
|
+
// → get an instant version-ack + job_id → poll /status/<job_id> until the triage
|
|
6
|
+
// agent CLOSEs the job, then surface its result (a new issue, a dedup, a reopen,
|
|
7
|
+
// or an "already fixed — upgrade" answer with the fixing PR + version). For
|
|
8
|
+
// third-party repos, or when the Worker is unreachable, it falls back to a
|
|
9
|
+
// PREFILLED GitHub "new issue" URL the user can review and submit in one click.
|
|
7
10
|
const DEFAULT_REPO = "artokun/comfyui-mcp";
|
|
8
11
|
// Repos the intake Worker is allowed to file into (owner is fixed server-side).
|
|
9
12
|
const OUR_OWNER = "artokun";
|
|
@@ -36,18 +39,21 @@ export function isOurRepo(repo) {
|
|
|
36
39
|
// which must still be recognized as ours (not misrouted as third-party).
|
|
37
40
|
return owner?.toLowerCase() === OUR_OWNER && OUR_REPO_NAMES.has(name?.toLowerCase());
|
|
38
41
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Submit to the async AI-triage Worker and poll /status/<job_id> until the job
|
|
44
|
+
* CLOSEs or the budget runs out. Injectable fetch/sleep for testing.
|
|
45
|
+
* THROWS only on a submit failure (so the caller uses the prefilled fallback);
|
|
46
|
+
* a still-running job at the budget returns { kind: "pending" }.
|
|
47
|
+
*/
|
|
42
48
|
export async function submitAndPoll(opts) {
|
|
43
49
|
const doFetch = opts.fetchImpl ?? fetch;
|
|
44
50
|
const sleep = opts.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
45
|
-
|
|
46
|
-
const
|
|
47
|
-
const
|
|
51
|
+
// AI triage runs ~30-120s; poll patiently but bounded. ~40 * 3s ≈ 2 min.
|
|
52
|
+
const maxPolls = opts.maxPolls ?? 40;
|
|
53
|
+
const pollDelayMs = opts.pollDelayMs ?? 3000;
|
|
54
|
+
const timeoutMs = opts.timeoutMs ?? 15000; // per-request cap (not the whole job)
|
|
48
55
|
// Keep the abort active through BOTH the fetch AND the body parse — otherwise
|
|
49
|
-
// a hung `.json()` after headers arrive would never time out.
|
|
50
|
-
// request+parse runs under one AbortController + a hard timeout.
|
|
56
|
+
// a hung `.json()` after headers arrive would never time out.
|
|
51
57
|
const withTimeout = async (fn) => {
|
|
52
58
|
const ac = new AbortController();
|
|
53
59
|
const t = setTimeout(() => ac.abort(), timeoutMs);
|
|
@@ -58,50 +64,142 @@ export async function submitAndPoll(opts) {
|
|
|
58
64
|
clearTimeout(t);
|
|
59
65
|
}
|
|
60
66
|
};
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
+
// `accepted` flips true the instant the worker returns a 2xx — from that point
|
|
68
|
+
// the worker HAS the report and is filing autonomously, so a later body
|
|
69
|
+
// stall/parse failure must NOT throw into a prefill (that would double-file).
|
|
70
|
+
let accepted = false;
|
|
71
|
+
let submit;
|
|
72
|
+
try {
|
|
73
|
+
submit = await withTimeout(async (signal) => {
|
|
74
|
+
const r = await doFetch(opts.workerUrl, {
|
|
75
|
+
method: "POST",
|
|
76
|
+
headers: {
|
|
77
|
+
"Content-Type": "application/json",
|
|
78
|
+
"X-Client-Key": opts.clientKey,
|
|
79
|
+
// Opt into the async AI-triage contract. Absent this header the worker
|
|
80
|
+
// runs its legacy synchronous dumb-file path (old clients stay working).
|
|
81
|
+
"X-Triage-Async": "1",
|
|
82
|
+
},
|
|
83
|
+
body: JSON.stringify({
|
|
84
|
+
repo: opts.repoName,
|
|
85
|
+
title: opts.title,
|
|
86
|
+
body: opts.body,
|
|
87
|
+
labels: opts.labels,
|
|
88
|
+
reporter_versions: opts.reporterVersions ?? {},
|
|
89
|
+
}),
|
|
90
|
+
signal,
|
|
91
|
+
});
|
|
92
|
+
if (!r.ok)
|
|
93
|
+
throw new Error(`worker submit failed: HTTP ${r.status}`);
|
|
94
|
+
accepted = true; // 2xx → the worker took the report
|
|
95
|
+
return (await r.json());
|
|
67
96
|
});
|
|
68
|
-
if (!r.ok)
|
|
69
|
-
throw new Error(`worker submit failed: HTTP ${r.status}`);
|
|
70
|
-
return (await r.json());
|
|
71
|
-
});
|
|
72
|
-
// Common path: the Worker files synchronously and returns the link inline.
|
|
73
|
-
if (submit.url)
|
|
74
|
-
return { ...submit, status: submit.status ?? "done" };
|
|
75
|
-
const jobId = submit.job_id;
|
|
76
|
-
if (!jobId) {
|
|
77
|
-
// No url AND no job to poll — nothing we can surface. Throw so the caller
|
|
78
|
-
// falls back to the prefilled link.
|
|
79
|
-
throw new Error("worker returned neither a url nor a job_id");
|
|
80
97
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
98
|
+
catch (err) {
|
|
99
|
+
// A 2xx whose body stalled/was malformed: the worker still took it and is
|
|
100
|
+
// filing — surface pending (no job_id, no ack) so the caller does NOT
|
|
101
|
+
// prefill. A pre-2xx failure (network / non-OK) rethrows → caller prefills.
|
|
102
|
+
if (accepted)
|
|
103
|
+
return { kind: "pending", ack: {} };
|
|
104
|
+
throw err;
|
|
105
|
+
}
|
|
106
|
+
const ack = {
|
|
107
|
+
job_id: submit.job_id,
|
|
108
|
+
versions: submit.versions,
|
|
109
|
+
up_to_date: submit.up_to_date,
|
|
110
|
+
upgrade_hint: submit.upgrade_hint,
|
|
111
|
+
};
|
|
112
|
+
// A synchronous worker (legacy / very fast) may return the result inline.
|
|
113
|
+
if (isClosedFrame(submit)) {
|
|
114
|
+
const inline = frameToResult(submit);
|
|
115
|
+
return inline ? { kind: "closed", ack, result: inline } : { kind: "unfiled", ack };
|
|
116
|
+
}
|
|
117
|
+
const jobId = submit.job_id;
|
|
118
|
+
// Accepted (2xx) but no job_id and no inline result → we can't poll, but the
|
|
119
|
+
// worker took it and is filing. Surface pending (never prefill → no double).
|
|
120
|
+
if (!jobId)
|
|
121
|
+
return { kind: "pending", ack };
|
|
86
122
|
const base = opts.workerUrl.replace(/\/+$/, "");
|
|
87
123
|
for (let i = 0; i < maxPolls; i++) {
|
|
88
124
|
await sleep(pollDelayMs);
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
125
|
+
let parsed;
|
|
126
|
+
try {
|
|
127
|
+
parsed = await withTimeout(async (signal) => {
|
|
128
|
+
const r = await doFetch(`${base}/status/${jobId}`, {
|
|
129
|
+
signal,
|
|
130
|
+
headers: { "X-Client-Key": opts.clientKey },
|
|
131
|
+
});
|
|
132
|
+
if (!r.ok)
|
|
133
|
+
throw new Error(`poll failed: HTTP ${r.status}`);
|
|
134
|
+
return (await r.json());
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
// A transient poll error does NOT mean the job failed — the worker keeps
|
|
139
|
+
// running. Keep polling; only a real terminal frame or the budget ends it.
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (isClosedFrame(parsed) || isTerminalError(parsed)) {
|
|
143
|
+
const result = frameToResult(parsed);
|
|
144
|
+
// Terminal WITH a usable issue/answer → closed; terminal WITHOUT one
|
|
145
|
+
// (unfiled_needs_manual / hard error) → the worker gave up filing, so the
|
|
146
|
+
// caller may safely prefill (nothing was written → no double-file).
|
|
147
|
+
return result ? { kind: "closed", ack, result } : { kind: "unfiled", ack };
|
|
148
|
+
}
|
|
149
|
+
// else PENDING / INVESTIGATING → keep polling
|
|
150
|
+
}
|
|
151
|
+
// Still running at the budget: the worker will finish autonomously — do NOT
|
|
152
|
+
// prefill (that duplicates). Surface the ack + job id.
|
|
153
|
+
return { kind: "pending", ack, job_id: jobId };
|
|
154
|
+
}
|
|
155
|
+
/** A frame is TERMINAL (job finished) iff CLOSED, a legacy done, or a legacy
|
|
156
|
+
* sync response that carries a url with no lifecycle field at all. */
|
|
157
|
+
function isClosedFrame(frame) {
|
|
158
|
+
return (frame.state === "CLOSED" ||
|
|
159
|
+
frame.status === "done" ||
|
|
160
|
+
(frame.state == null && frame.status == null && !!frame.url));
|
|
161
|
+
}
|
|
162
|
+
/** Flatten a terminal frame to a TriageResult, or null if it carries no usable
|
|
163
|
+
* issue link / answer (→ the caller treats it as "unfiled"). */
|
|
164
|
+
function frameToResult(frame) {
|
|
165
|
+
const p = frame.payload;
|
|
166
|
+
const issueUrl = p?.issue?.url ?? frame.url;
|
|
167
|
+
const issueNumber = p?.issue?.number ?? frame.number;
|
|
168
|
+
// "Usable" = there is a real issue link, OR it is the advise-upgrade answer
|
|
169
|
+
// (no created issue, but real fix guidance). A terminal frame WITHOUT either —
|
|
170
|
+
// e.g. unfiled_needs_manual, which still carries an agent_message — is NOT a
|
|
171
|
+
// success: return null so the caller treats it as "unfiled" and prefills. (Do
|
|
172
|
+
// NOT key this on agent_message; the worker sets one even on failure.)
|
|
173
|
+
const usable = !!issueUrl || p?.action_taken === "advised_upgrade";
|
|
174
|
+
if (!usable)
|
|
175
|
+
return null;
|
|
176
|
+
return {
|
|
177
|
+
url: issueUrl,
|
|
178
|
+
number: issueNumber,
|
|
179
|
+
deduped: p?.deduped,
|
|
180
|
+
classification: p?.classification,
|
|
181
|
+
action_taken: p?.action_taken,
|
|
182
|
+
fixed_in_version: p?.fixed_in_version ?? null,
|
|
183
|
+
fix_pr_url: p?.fix_pr_url ?? null,
|
|
184
|
+
recommend_upgrade: p?.recommend_upgrade,
|
|
185
|
+
agent_message: p?.agent_message,
|
|
186
|
+
possible_duplicate: p?.possible_duplicate,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
function isTerminalError(frame) {
|
|
190
|
+
return frame.status === "error" && !frame.url && !frame.payload;
|
|
191
|
+
}
|
|
192
|
+
/** The running comfyui-mcp version (best-effort; undefined if undetectable). */
|
|
193
|
+
function detectMcpVersion() {
|
|
194
|
+
try {
|
|
195
|
+
return detectInstallMode().currentVersion ?? undefined;
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return undefined;
|
|
100
199
|
}
|
|
101
|
-
throw new Error("worker filing did not complete before polling gave up");
|
|
102
200
|
}
|
|
103
201
|
export function registerReportIssueTools(server) {
|
|
104
|
-
server.tool("report_issue", "File or
|
|
202
|
+
server.tool("report_issue", "File or triage a GitHub issue for a bug/problem you hit (ComfyUI, a workflow, a model, custom nodes, or comfyui-mcp/its panel). For OUR repos (artokun/comfyui-mcp, artokun/comfyui-mcp-panel) it sends the report to the AI triage worker, which searches existing OPEN and CLOSED issues, version-matches, and either files a new issue, adds context to an existing one, or — if the problem was already FIXED in a newer version than the user runs — answers with the fixing PR + fixed-in version and a recommendation to upgrade (no new issue). It returns that triage result plus an instant check of whether the user is on the latest versions. If the worker is unreachable it falls back to a prefilled GitHub 'new issue' URL. For third-party repos it returns a prefilled URL to SHARE (it does not auto-file). ALWAYS pass mcp_version and panel_version from the known environment (the env line in your context, e.g. 'mcp=… panel=…') so the worker can tell the user if simply upgrading fixes it — the single most common resolution. Surface the worker's agent_message / upgrade advice to the user.", {
|
|
105
203
|
title: z.string().min(1).describe("Short, specific issue title."),
|
|
106
204
|
body: z
|
|
107
205
|
.string()
|
|
@@ -112,6 +210,14 @@ export function registerReportIssueTools(server) {
|
|
|
112
210
|
.optional()
|
|
113
211
|
.describe("owner/repo (default 'artokun/comfyui-mcp'; use 'artokun/comfyui-mcp-panel' for the sidebar panel)."),
|
|
114
212
|
labels: z.array(z.string()).optional().describe("Optional GitHub label names to prefill."),
|
|
213
|
+
mcp_version: z
|
|
214
|
+
.string()
|
|
215
|
+
.optional()
|
|
216
|
+
.describe("The running comfyui-mcp version (from the env line in your context). Auto-detected if omitted."),
|
|
217
|
+
panel_version: z
|
|
218
|
+
.string()
|
|
219
|
+
.optional()
|
|
220
|
+
.describe("The running comfyui-mcp-panel (sidebar) version, from the env line in your context, if known."),
|
|
115
221
|
no_file: z
|
|
116
222
|
.boolean()
|
|
117
223
|
.optional()
|
|
@@ -129,46 +235,94 @@ export function registerReportIssueTools(server) {
|
|
|
129
235
|
note: "Prefilled issue link (not auto-filed). Share it with the user to review and submit.",
|
|
130
236
|
});
|
|
131
237
|
}
|
|
132
|
-
// Our repo: file via the intake Worker (submit + poll for the link).
|
|
133
238
|
const workerUrl = process.env.COMFYUI_MCP_ISSUE_WORKER_URL || DEFAULT_WORKER_URL;
|
|
134
239
|
const clientKey = process.env.COMFYUI_MCP_ISSUE_CLIENT_KEY || DEFAULT_CLIENT_KEY;
|
|
135
240
|
const timeoutEnv = Number(process.env.COMFYUI_MCP_ISSUE_TIMEOUT_MS);
|
|
136
241
|
const timeoutMs = Number.isFinite(timeoutEnv) && timeoutEnv > 0 ? timeoutEnv : undefined;
|
|
242
|
+
const maxPollsEnv = Math.floor(Number(process.env.COMFYUI_MCP_ISSUE_MAX_POLLS));
|
|
243
|
+
// Clamp to a sane ceiling so a mis-set env can't poll for hours.
|
|
244
|
+
const maxPolls = Number.isFinite(maxPollsEnv) && maxPollsEnv > 0 ? Math.min(maxPollsEnv, 200) : undefined;
|
|
245
|
+
const pollMsEnv = Number(process.env.COMFYUI_MCP_ISSUE_POLL_MS);
|
|
246
|
+
const pollDelayMs = Number.isFinite(pollMsEnv) && pollMsEnv >= 0 ? Math.min(pollMsEnv, 60000) : undefined;
|
|
137
247
|
const repoName = repo.split("/")[1];
|
|
248
|
+
const reporterVersions = {
|
|
249
|
+
mcp: args.mcp_version ?? detectMcpVersion(),
|
|
250
|
+
panel: args.panel_version ?? process.env.COMFYUI_MCP_PANEL_VERSION ?? undefined,
|
|
251
|
+
};
|
|
138
252
|
try {
|
|
139
|
-
|
|
140
|
-
// any failure (non-OK submit, transport/timeout, poll error/exhaustion)
|
|
141
|
-
// throws → we fall back to the prefilled link below.
|
|
142
|
-
const result = await submitAndPoll({
|
|
253
|
+
const outcome = await submitAndPoll({
|
|
143
254
|
workerUrl,
|
|
144
255
|
clientKey,
|
|
145
256
|
repoName,
|
|
146
257
|
title: args.title,
|
|
147
258
|
body: args.body,
|
|
148
259
|
labels: args.labels,
|
|
260
|
+
reporterVersions,
|
|
149
261
|
timeoutMs,
|
|
262
|
+
maxPolls,
|
|
263
|
+
pollDelayMs,
|
|
150
264
|
});
|
|
265
|
+
if (outcome.kind === "closed") {
|
|
266
|
+
const r = outcome.result;
|
|
267
|
+
return jsonResult({
|
|
268
|
+
// "filed" means a real issue was created/updated. advised_upgrade
|
|
269
|
+
// files nothing; and a closed result always has a url here (a
|
|
270
|
+
// no-url terminal is routed to "unfiled" above).
|
|
271
|
+
filed: !!r.url && r.action_taken !== "advised_upgrade",
|
|
272
|
+
repo,
|
|
273
|
+
url: r.url,
|
|
274
|
+
number: r.number,
|
|
275
|
+
classification: r.classification,
|
|
276
|
+
action_taken: r.action_taken,
|
|
277
|
+
deduped: r.deduped,
|
|
278
|
+
fixed_in_version: r.fixed_in_version,
|
|
279
|
+
fix_pr_url: r.fix_pr_url,
|
|
280
|
+
recommend_upgrade: r.recommend_upgrade,
|
|
281
|
+
possible_duplicate: r.possible_duplicate,
|
|
282
|
+
versions: outcome.ack.versions,
|
|
283
|
+
up_to_date: outcome.ack.up_to_date,
|
|
284
|
+
upgrade_hint: outcome.ack.upgrade_hint,
|
|
285
|
+
// The one line to relay to the user.
|
|
286
|
+
agent_message: r.agent_message,
|
|
287
|
+
note: "Triaged by the AI issue worker. Relay agent_message (and the upgrade advice) to the user.",
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
// Terminal without an issue: the worker's triage AND its own fallback
|
|
291
|
+
// both gave up — nothing was filed, so a prefilled URL is the safe
|
|
292
|
+
// last resort (no double-file risk).
|
|
293
|
+
if (outcome.kind === "unfiled") {
|
|
294
|
+
return jsonResult({
|
|
295
|
+
url: prefilledUrl,
|
|
296
|
+
repo,
|
|
297
|
+
filed: false,
|
|
298
|
+
versions: outcome.ack.versions,
|
|
299
|
+
up_to_date: outcome.ack.up_to_date,
|
|
300
|
+
upgrade_hint: outcome.ack.upgrade_hint,
|
|
301
|
+
note: "The triage worker could not file this report. Fallback: prefilled issue link for the user to submit in one click.",
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
// Still triaging at the budget: the worker WILL finish + file/dedup on
|
|
305
|
+
// its own. Do NOT prefill (would double-file). Surface the version-ack.
|
|
151
306
|
return jsonResult({
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
deduped: result.deduped,
|
|
307
|
+
filed: false,
|
|
308
|
+
pending: true,
|
|
155
309
|
repo,
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
310
|
+
job_id: outcome.job_id,
|
|
311
|
+
versions: outcome.ack.versions,
|
|
312
|
+
up_to_date: outcome.ack.up_to_date,
|
|
313
|
+
upgrade_hint: outcome.ack.upgrade_hint,
|
|
314
|
+
agent_message: outcome.ack.upgrade_hint,
|
|
315
|
+
note: "The AI triage is still running; the worker will file or dedup this report autonomously. If the user is behind on versions (see upgrade_hint), suggest upgrading first — that often resolves it.",
|
|
161
316
|
});
|
|
162
317
|
}
|
|
163
318
|
catch (workerErr) {
|
|
164
|
-
//
|
|
165
|
-
//
|
|
166
|
-
// without a real issue link.
|
|
319
|
+
// SUBMIT failed (worker unreachable / non-OK) → the worker never took
|
|
320
|
+
// the report, so a prefilled URL is safe (no double-file risk).
|
|
167
321
|
return jsonResult({
|
|
168
322
|
url: prefilledUrl,
|
|
169
323
|
repo,
|
|
170
324
|
filed: false,
|
|
171
|
-
note: `Could not
|
|
325
|
+
note: `Could not reach the AI triage worker (${workerErr instanceof Error ? workerErr.message : String(workerErr)}). Fallback: prefilled issue link for the user to submit in one click.`,
|
|
172
326
|
});
|
|
173
327
|
}
|
|
174
328
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report-issue.js","sourceRoot":"","sources":["../../src/tools/report-issue.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"report-issue.js","sourceRoot":"","sources":["../../src/tools/report-issue.ts"],"names":[],"mappings":"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"}
|