comfyui-mcp 0.44.0 → 0.45.0

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.
Files changed (53) hide show
  1. package/dist/config.js +3 -1
  2. package/dist/config.js.map +1 -1
  3. package/dist/orchestrator/ai-proposer.js +5 -0
  4. package/dist/orchestrator/ai-proposer.js.map +1 -1
  5. package/dist/orchestrator/antigravity-backend.js +394 -52
  6. package/dist/orchestrator/antigravity-backend.js.map +1 -1
  7. package/dist/orchestrator/claude-backend.js +13 -0
  8. package/dist/orchestrator/claude-backend.js.map +1 -1
  9. package/dist/orchestrator/codex-backend.js +12 -1
  10. package/dist/orchestrator/codex-backend.js.map +1 -1
  11. package/dist/orchestrator/gemini-backend.js +8 -1
  12. package/dist/orchestrator/gemini-backend.js.map +1 -1
  13. package/dist/orchestrator/grok-backend.js +4 -1
  14. package/dist/orchestrator/grok-backend.js.map +1 -1
  15. package/dist/orchestrator/index.js +53 -10
  16. package/dist/orchestrator/index.js.map +1 -1
  17. package/dist/orchestrator/panel-agent.js +21 -5
  18. package/dist/orchestrator/panel-agent.js.map +1 -1
  19. package/dist/orchestrator/panel-console-http.js +1 -0
  20. package/dist/orchestrator/panel-console-http.js.map +1 -1
  21. package/dist/orchestrator/panel-tools.js +140 -9
  22. package/dist/orchestrator/panel-tools.js.map +1 -1
  23. package/dist/services/ai-toolkit.js +260 -3
  24. package/dist/services/ai-toolkit.js.map +1 -1
  25. package/dist/services/missing-models.js +295 -0
  26. package/dist/services/missing-models.js.map +1 -0
  27. package/dist/services/openai-provider-registry.js +20 -1
  28. package/dist/services/openai-provider-registry.js.map +1 -1
  29. package/dist/services/panel-secrets.js +58 -7
  30. package/dist/services/panel-secrets.js.map +1 -1
  31. package/dist/services/runpod-client.js +157 -9
  32. package/dist/services/runpod-client.js.map +1 -1
  33. package/dist/services/runpod-ssh.js +594 -0
  34. package/dist/services/runpod-ssh.js.map +1 -0
  35. package/dist/services/runpod-watch.js +53 -12
  36. package/dist/services/runpod-watch.js.map +1 -1
  37. package/dist/services/trainer-bootstrap.js +142 -0
  38. package/dist/services/trainer-bootstrap.js.map +1 -0
  39. package/dist/services/training-config.js +4 -1
  40. package/dist/services/training-config.js.map +1 -1
  41. package/dist/services/training-jobs.js +1332 -253
  42. package/dist/services/training-jobs.js.map +1 -1
  43. package/dist/tools/index.js +2 -0
  44. package/dist/tools/index.js.map +1 -1
  45. package/dist/tools/missing-models.js +151 -0
  46. package/dist/tools/missing-models.js.map +1 -0
  47. package/dist/tools/runpod.js +7 -0
  48. package/dist/tools/runpod.js.map +1 -1
  49. package/dist/tools/train.js +138 -5
  50. package/dist/tools/train.js.map +1 -1
  51. package/docker/trainer/Dockerfile +4 -2
  52. package/package.json +1 -1
  53. package/scripts/gen-tool-docs.ts +36 -4
@@ -3,8 +3,8 @@
3
3
  // link so a user creating their own pod credits our account.
4
4
  //
5
5
  // Auth: RUNPOD_API_KEY (loaded from ~/.comfyui-mcp/.env into process.env by
6
- // src/config.ts). The key goes in the endpoint query string exactly as RunPod's
7
- // API expects (`?api_key=…`) — NEVER logged.
6
+ // src/config.ts). The key is sent as an `Authorization: Bearer` header — NEVER
7
+ // in the URL (query strings leak into proxy/server logs) and NEVER logged.
8
8
  //
9
9
  // Referral: RunPod's referral attaches at signup/deploy via a `?ref=` link, NOT as
10
10
  // a per-pod API parameter — so we surface the deploy link for pod CREATION while
@@ -53,20 +53,35 @@ function getApiKey() {
53
53
  throw new RunpodAuthError();
54
54
  return key;
55
55
  }
56
+ /** Per-request timeout for RunPod API calls — a hung network must not pile up
57
+ * poller ticks or wedge a tool call forever. Override with RUNPOD_HTTP_TIMEOUT_MS. */
58
+ export const RUNPOD_HTTP_TIMEOUT_MS = (() => {
59
+ const v = Number(process.env.RUNPOD_HTTP_TIMEOUT_MS);
60
+ return Number.isFinite(v) && v > 0 ? v : 10_000;
61
+ })();
56
62
  /** POST a GraphQL query to RunPod. Throws RunpodAuthError on 401, a descriptive
57
63
  * Error on GraphQL/HTTP errors. The api_key never appears in thrown messages. */
58
64
  export async function runpodGql(query, variables) {
59
65
  const key = getApiKey();
60
66
  let res;
61
67
  try {
62
- res = await fetch(`${RUNPOD_GRAPHQL_ENDPOINT}?api_key=${encodeURIComponent(key)}`, {
68
+ res = await fetch(RUNPOD_GRAPHQL_ENDPOINT, {
63
69
  method: "POST",
64
- headers: { "content-type": "application/json" },
70
+ headers: {
71
+ "content-type": "application/json",
72
+ // Bearer header, NOT `?api_key=` in the URL — URLs land in logs.
73
+ authorization: `Bearer ${key}`,
74
+ },
65
75
  body: JSON.stringify({ query, variables: variables ?? {} }),
76
+ signal: AbortSignal.timeout(RUNPOD_HTTP_TIMEOUT_MS),
66
77
  });
67
78
  }
68
79
  catch (err) {
69
- throw new Error(`Could not reach RunPod (${RUNPOD_GRAPHQL_ENDPOINT}): ${err instanceof Error ? err.message : String(err)}`);
80
+ const msg = err instanceof Error ? err.message : String(err);
81
+ const timedOut = err instanceof Error && (err.name === "TimeoutError" || err.name === "AbortError");
82
+ throw new Error(timedOut
83
+ ? `RunPod API request timed out after ${RUNPOD_HTTP_TIMEOUT_MS / 1000}s (${RUNPOD_GRAPHQL_ENDPOINT}).`
84
+ : `Could not reach RunPod (${RUNPOD_GRAPHQL_ENDPOINT}): ${msg}`);
70
85
  }
71
86
  if (res.status === 401)
72
87
  throw new RunpodAuthError("RunPod rejected the API key (401). Check RUNPOD_API_KEY in ~/.comfyui-mcp/.env.");
@@ -152,22 +167,124 @@ async function deployOnce(cloudType, gpuTypeId, opts) {
152
167
  volumeInGb: opts.volumeInGb ?? 60,
153
168
  volumeMountPath: "/workspace",
154
169
  // Guarantee ComfyUI is reachable through RunPod's HTTP proxy even if
155
- // the template's port config drifts.
156
- ports: `${RUNPOD_COMFYUI_PORT}/http`,
170
+ // the template's port config drifts — AND expose ssh (22/tcp) so the
171
+ // pod-native trainer can drive ai-toolkit over it (codex finding:
172
+ // one-tap pods had no SSH endpoint and rejected every pod job).
173
+ ports: `${RUNPOD_COMFYUI_PORT}/http,22/tcp`,
174
+ // SSH auth for the trainer: the template injects this at boot.
175
+ ...(opts.publicKey ? { env: [{ key: "PUBLIC_KEY", value: opts.publicKey }] } : {}),
157
176
  },
158
177
  });
159
178
  const pod = data.podFindAndDeployOnDemand;
160
179
  return pod?.id ? { ...pod, runtime: pod.runtime ?? null } : null;
161
180
  }
181
+ /** Does this createPod failure PROVE RunPod did NOT create (and bill) a pod?
182
+ * Only an explicit capacity/availability/quota rejection from RunPod's own
183
+ * GraphQL layer qualifies — the server processed the mutation and refused it.
184
+ * Everything else (network drop, timeout, 5xx, parse failure, rate limit) is
185
+ * AMBIGUOUS: the billed mutation may have landed even though we never saw the
186
+ * response, so blindly retrying could spawn a second billable pod. */
187
+ export function isProvablyNotCreatedError(err) {
188
+ const msg = err instanceof Error ? err.message : String(err);
189
+ return NOT_CREATED_RE.test(msg);
190
+ }
191
+ // CONSERVATIVE by design: match ONLY RunPod's explicit capacity/availability/
192
+ // quota REJECTION clauses. An error we don't specifically recognize is treated
193
+ // as AMBIGUOUS (a pod MAY have been created) → the caller must NOT retry.
194
+ //
195
+ // The "…capacity" clauses carry a negative lookahead that EXCLUDES the "capacity
196
+ // information / details / data / status" wording used by AMBIGUOUS "status
197
+ // unknown" messages — e.g. "response contained no capacity information, so
198
+ // creation status is unknown" must NOT be read as a capacity rejection, or a
199
+ // lost-but-landed create would be retried and double-bill. Likewise the
200
+ // availability clauses require the concrete "instances available" phrasing, not
201
+ // any sentence containing "there are no …".
202
+ const CAP_NOISE = "(?!\\s+(?:information|informations|data|details?|info|status|unknown))";
203
+ const NOT_CREATED_RE = new RegExp([
204
+ "no longer any instances? available",
205
+ "there are no (?:longer any )?(?:gpu )?instances? available",
206
+ "no (?:gpu )?instances? (?:currently )?available",
207
+ `\\bno capacity${CAP_NOISE}`,
208
+ `(?:not enough|insufficient) (?:gpu )?capacity${CAP_NOISE}`,
209
+ "(?:not enough|insufficient) (?:gpu instances|gpus|instances)",
210
+ "out of stock",
211
+ "quota (?:exceeded|reached)",
212
+ ].join("|"), "i");
213
+ /** Reconcile after an AMBIGUOUS create failure: did a NEW pod with the requested
214
+ * name appear (i.e. did the lost mutation actually land)? `priorIds` is the set
215
+ * of same-named pod ids that existed BEFORE this createPod call — null when we
216
+ * couldn't snapshot them, in which case we cannot tell new from pre-existing.
217
+ *
218
+ * CONCURRENCY HAZARD: pod name is NOT unique, so two concurrent createPod calls
219
+ * for the same default name ("comfyui-mcp") each see the OTHER's pod as "new".
220
+ * We therefore only attribute a pod to THIS call when EXACTLY ONE new same-named
221
+ * pod appeared; if several did, we fail closed (kind:"ambiguous") rather than
222
+ * risk claiming (and then managing/auto-stopping) a pod a different caller made.
223
+ *
224
+ * RESIDUAL LIMITATION (mis-attribution, NOT extra billing): the single-new-pod
225
+ * path can still claim a pod created by a CONCURRENT caller if THIS call failed
226
+ * before creating anything AND, in the same window, exactly one other same-named
227
+ * pod appeared. The claimed pod exists regardless (no extra spend); the only
228
+ * harm is that the wrong caller manages/auto-stops it. A fully correct fix needs
229
+ * a per-create idempotency token or a unique deploy name (a RunPod-API design
230
+ * change owned by the connector author). Tracked in issue #276 — see the note at
231
+ * the createPod call site (~line 400). Not blocking: the common single-caller
232
+ * path is correct and the multi-new-pod case is already fail-closed. */
233
+ async function reconcileCreatedPod(name, priorIds) {
234
+ if (!priorIds)
235
+ return { kind: "unknown" };
236
+ let created;
237
+ try {
238
+ const pods = await listPods();
239
+ created = pods.filter((p) => p.name === name && !priorIds.has(p.id));
240
+ }
241
+ catch {
242
+ return { kind: "unknown" }; // reconcile list failed — never retry blindly
243
+ }
244
+ if (created.length === 0)
245
+ return { kind: "none" };
246
+ if (created.length === 1)
247
+ return { kind: "one", pod: created[0] };
248
+ return { kind: "ambiguous", count: created.length };
249
+ }
162
250
  /** Deploy a fresh on-demand pod from our template. Community GPU capacity is
163
251
  * spotty, so unless a cloud type is pinned we try COMMUNITY (cheap) across each
164
252
  * GPU type, then SECURE (reliable, pricier) — the first slot with capacity wins,
165
253
  * so one-tap deploy survives community supply constraints. Throws a descriptive
166
254
  * error listing what RunPod rejected if nothing is available. The returned pod
167
- * is fresh (runtime null — still booting; follow with getPod/runpod_pod_connect). */
255
+ * is fresh (runtime null — still booting; follow with getPod/runpod_pod_connect).
256
+ *
257
+ * BILLING SAFETY: podFindAndDeployOnDemand is a non-idempotent, BILLED mutation.
258
+ * We only move on to the next cloud/GPU slot when RunPod EXPLICITLY rejected the
259
+ * deploy (capacity/quota — provably nothing was created). On any AMBIGUOUS
260
+ * failure (network/timeout/5xx/parse — the pod may exist even though the
261
+ * response was lost) we reconcile by listing pods under the requested name: if
262
+ * this call's pod appeared, return it; otherwise fail WITHOUT retrying so a
263
+ * lost-response create can never fan out into extra billable pods. Auth errors
264
+ * surface immediately. */
168
265
  export async function createPod(opts = {}) {
169
266
  const gpuTypeIds = opts.gpuTypeIds?.length ? opts.gpuTypeIds : RUNPOD_DEFAULT_GPU_TYPES;
170
267
  const cloudTypes = opts.cloudType ? [opts.cloudType] : ["COMMUNITY", "SECURE"];
268
+ // Mis-attribution mitigation (#276): pod name is NOT unique, so a shared
269
+ // default ("comfyui-mcp") let a lost-response reconcile claim a CONCURRENT
270
+ // caller's same-named pod. RunPod exposes no per-create idempotency token, so
271
+ // instead we default to a UNIQUE deploy name — then reconcileCreatedPod's
272
+ // `name` filter attributes exactly THIS call's pod and concurrent creates no
273
+ // longer collide. An explicitly-passed name keeps its old (shared) semantics:
274
+ // the caller opted in.
275
+ const name = opts.name ?? `comfyui-mcp-${Date.now().toString(36)}${Math.random().toString(36).slice(2, 6)}`;
276
+ // Ensure deployOnce sends the SAME name we reconcile against (its own default
277
+ // would otherwise be the shared "comfyui-mcp").
278
+ opts = { ...opts, name };
279
+ // Snapshot the ids of pods ALREADY carrying the requested name, so post-failure
280
+ // reconciliation can tell a pod THIS call created apart from a pre-existing one.
281
+ let priorIds = null;
282
+ try {
283
+ priorIds = new Set((await listPods()).filter((p) => p.name === name).map((p) => p.id));
284
+ }
285
+ catch {
286
+ priorIds = null; // snapshot unavailable → ambiguous failures become terminal
287
+ }
171
288
  const attempts = [];
172
289
  for (const cloudType of cloudTypes) {
173
290
  for (const gpuTypeId of gpuTypeIds) {
@@ -178,7 +295,38 @@ export async function createPod(opts = {}) {
178
295
  attempts.push(`${cloudType}/${gpuTypeId}: no capacity available`);
179
296
  }
180
297
  catch (err) {
181
- attempts.push(`${cloudType}/${gpuTypeId}: ${err instanceof Error ? err.message : String(err)}`);
298
+ const msg = err instanceof Error ? err.message : String(err);
299
+ // Auth rejection happens before any pod is created — surface it directly
300
+ // (retrying other slots with the same bad key is pointless).
301
+ if (err instanceof RunpodAuthError)
302
+ throw err;
303
+ if (isProvablyNotCreatedError(err)) {
304
+ // RunPod itself said "no capacity/quota" → nothing was created; the
305
+ // next cloud/GPU slot is safe to try.
306
+ attempts.push(`${cloudType}/${gpuTypeId}: ${msg}`);
307
+ continue;
308
+ }
309
+ // AMBIGUOUS failure: the billed mutation may have landed. Reconcile first.
310
+ const rec = await reconcileCreatedPod(name, priorIds);
311
+ // Exactly one new same-named pod → attribute it to this call. NOTE: a
312
+ // concurrent same-name create can make this mis-attribute (harm =
313
+ // wrong owner manages the pod, NOT extra billing); a proper fix needs a
314
+ // per-create idempotency key / unique deploy name — tracked in issue #276.
315
+ if (rec.kind === "one")
316
+ return rec.pod;
317
+ const suffix = attempts.length ? `\nEarlier attempts:\n${attempts.map((a) => ` • ${a}`).join("\n")}` : "";
318
+ if (rec.kind === "ambiguous") {
319
+ throw new Error(`RunPod pod creation on ${cloudType}/${gpuTypeId} failed ambiguously (${msg}) and ` +
320
+ `${rec.count} new pods named "${name}" appeared — likely a concurrent create raced ` +
321
+ `this one, so which pod belongs to this call can't be determined. NOT retrying and ` +
322
+ `NOT claiming any of them automatically (a wrong guess could auto-stop someone else's ` +
323
+ `pod or leak a billable one). Reconcile manually at console.runpod.io (or ` +
324
+ `runpod_pod_status).` + suffix);
325
+ }
326
+ throw new Error(`RunPod pod creation failed on ${cloudType}/${gpuTypeId} and it could not be confirmed ` +
327
+ `whether a pod was created (${msg}). NOT retrying automatically — a retry could create ` +
328
+ `a second billable pod. Check your pods at console.runpod.io (or runpod_pod_status) ` +
329
+ `before trying again.` + suffix);
182
330
  }
183
331
  }
184
332
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runpod-client.js","sourceRoot":"","sources":["../../src/services/runpod-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runpod-client.js","sourceRoot":"","sources":["../../src/services/runpod-client.ts"],"names":[],"mappings":"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"}