Files
openclaw/extensions/comfy/index.ts
2026-04-23 18:16:20 -07:00

46 lines
1.7 KiB
TypeScript

import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
import { createProviderApiKeyAuthMethod } from "openclaw/plugin-sdk/provider-auth-api-key";
import { buildComfyImageGenerationProvider } from "./image-generation-provider.js";
import { buildComfyMusicGenerationProvider } from "./music-generation-provider.js";
import { buildComfyVideoGenerationProvider } from "./video-generation-provider.js";
const PROVIDER_ID = "comfy";
export default definePluginEntry({
id: PROVIDER_ID,
name: "ComfyUI Provider",
description: "Bundled ComfyUI workflow media generation provider",
register(api) {
api.registerProvider({
id: PROVIDER_ID,
label: "ComfyUI",
docsPath: "/providers/comfy",
envVars: ["COMFY_API_KEY", "COMFY_CLOUD_API_KEY"],
auth: [
createProviderApiKeyAuthMethod({
providerId: PROVIDER_ID,
methodId: "cloud-api-key",
label: "Comfy Cloud API key",
hint: "API key for Comfy Cloud workflow runs",
optionKey: "comfyApiKey",
flagName: "--comfy-api-key",
envVar: "COMFY_API_KEY",
promptMessage: "Enter Comfy Cloud API key",
wizard: {
choiceId: "comfy-cloud-api-key",
choiceLabel: "Comfy Cloud API key",
choiceHint: "Required for cloud workflows",
groupId: "comfy",
groupLabel: "ComfyUI",
groupHint: "Local or cloud workflows",
onboardingScopes: ["image-generation"],
},
}),
],
});
api.registerImageGenerationProvider(buildComfyImageGenerationProvider());
api.registerMusicGenerationProvider(buildComfyMusicGenerationProvider());
api.registerVideoGenerationProvider(buildComfyVideoGenerationProvider());
},
});