[Manager] Preview the individual nodes for packs on the registry (#3408)

Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
Christian Byrne
2025-04-12 04:18:41 +08:00
committed by GitHub
parent 60c0ce228a
commit 67835edfca
14 changed files with 223 additions and 107 deletions

View File

@@ -1,7 +1,6 @@
import axios, { AxiosError, AxiosResponse } from 'axios'
import { ref } from 'vue'
import { useNodeDefStore } from '@/stores/nodeDefStore'
import type { components, operations } from '@/types/comfyRegistryTypes'
import { isAbortError } from '@/utils/typeGuardUtil'
@@ -25,29 +24,6 @@ export const useComfyRegistryService = () => {
const isLoading = ref(false)
const error = ref<string | null>(null)
const nodeDefStore = useNodeDefStore()
const isLocalNodePack = (nodePackId: string) =>
!!nodeDefStore.nodeDefsByName[nodePackId]
const isLocalNode = (nodeName: string, nodePackId: string) => {
if (!nodeDefStore.nodeDefsByName[nodeName]) return false
return (
nodeDefStore.nodeDefsByName[nodeName].python_module.toLowerCase() ===
nodePackId.toLowerCase()
)
}
/**
* Check if the node definitions for the pack are available
*/
const packNodesAvailable = (node: components['schemas']['Node']) => {
if (node.id && isLocalNodePack(node.id)) return true
if (node.latest_version?.comfy_node_extract_status !== 'success')
return false
return true
}
const handleApiError = (
err: unknown,
context: string,
@@ -125,11 +101,11 @@ export const useComfyRegistryService = () => {
const getNodeDefs = async (
params: {
packId: components['schemas']['Node']['id']
versionId: components['schemas']['NodeVersion']['id']
},
version: components['schemas']['NodeVersion']['version']
} & operations['ListComfyNodes']['parameters']['query'],
signal?: AbortSignal
) => {
const { packId, versionId } = params
const { packId, version: versionId, ...queryParams } = params
if (!packId || !versionId) return null
const endpoint = `/nodes/${packId}/versions/${versionId}/comfy-nodes`
@@ -141,7 +117,10 @@ export const useComfyRegistryService = () => {
return executeApiRequest(
() =>
registryApiClient.get<components['schemas']['ComfyNode'][]>(endpoint, {
registryApiClient.get<
operations['ListComfyNodes']['responses'][200]['content']['application/json']
>(endpoint, {
params: queryParams,
signal
}),
errorContext,
@@ -149,33 +128,6 @@ export const useComfyRegistryService = () => {
)
}
/**
* Get a Comfy Node definition for a specific node in a specific version of a node pack
* @param packId - The ID of the node pack
* @param versionId - The version of the node pack
* @param comfyNodeName - The name of the comfy node (corresponds to `ComfyNodeDef#name`)
* @returns The node definition or null if not found or an error occurred
*/
const getNodeDef = async (
params: {
packId: components['schemas']['Node']['id']
versionId: components['schemas']['NodeVersion']['id']
comfyNodeName: components['schemas']['ComfyNode']['comfy_node_name']
},
signal?: AbortSignal
) => {
const { packId, versionId, comfyNodeName } = params
if (!comfyNodeName || !packId || !versionId) return null
if (isLocalNode(comfyNodeName, packId))
return nodeDefStore.nodeDefsByName[comfyNodeName]
const nodeDefs = await getNodeDefs({ packId, versionId }, signal)
return (
nodeDefs?.find((nodeDef) => nodeDef.comfy_node_name === comfyNodeName) ||
null
)
}
/**
* Get a paginated list of packs matching specific criteria.
* Search packs using `search` param. Search individual nodes using `comfy_node_search` param.
@@ -377,9 +329,7 @@ export const useComfyRegistryService = () => {
getPackByVersion,
getPublisherById,
listPacksForPublisher,
getNodeDef,
getNodeDefs,
postPackReview,
packNodesAvailable
postPackReview
}
}