mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-28 18:22:40 +00:00
[manager] Update core services for new manager API
Updated ComfyUI Manager service and dialog service to support the new menu items structure and API endpoints.
This commit is contained in:
@@ -1,17 +1,18 @@
|
|||||||
import axios, { AxiosError, AxiosResponse } from 'axios'
|
import axios, { AxiosError, AxiosResponse } from 'axios'
|
||||||
|
import { v4 as uuidv4 } from 'uuid'
|
||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
|
|
||||||
import { api } from '@/scripts/api'
|
import { api } from '@/scripts/api'
|
||||||
import {
|
import { components } from '@/types/generatedManagerTypes'
|
||||||
type InstallPackParams,
|
|
||||||
type InstalledPacksResponse,
|
|
||||||
type ManagerPackInfo,
|
|
||||||
type ManagerQueueStatus,
|
|
||||||
SelectedVersion,
|
|
||||||
type UpdateAllPacksParams
|
|
||||||
} from '@/types/comfyManagerTypes'
|
|
||||||
import { isAbortError } from '@/utils/typeGuardUtil'
|
import { isAbortError } from '@/utils/typeGuardUtil'
|
||||||
|
|
||||||
|
type ManagerQueueStatus = components['schemas']['QueueStatus']
|
||||||
|
type InstallPackParams = components['schemas']['InstallPackParams']
|
||||||
|
type InstalledPacksResponse = components['schemas']['InstalledPacksResponse']
|
||||||
|
type UpdateAllPacksParams = components['schemas']['UpdateAllPacksParams']
|
||||||
|
type ManagerTaskHistory = components['schemas']['HistoryResponse']
|
||||||
|
type QueueTaskItem = components['schemas']['QueueTaskItem']
|
||||||
|
|
||||||
const GENERIC_SECURITY_ERR_MSG =
|
const GENERIC_SECURITY_ERR_MSG =
|
||||||
'Forbidden: A security error has occurred. Please check the terminal logs'
|
'Forbidden: A security error has occurred. Please check the terminal logs'
|
||||||
|
|
||||||
@@ -22,18 +23,14 @@ enum ManagerRoute {
|
|||||||
START_QUEUE = 'v2/manager/queue/start',
|
START_QUEUE = 'v2/manager/queue/start',
|
||||||
RESET_QUEUE = 'v2/manager/queue/reset',
|
RESET_QUEUE = 'v2/manager/queue/reset',
|
||||||
QUEUE_STATUS = 'v2/manager/queue/status',
|
QUEUE_STATUS = 'v2/manager/queue/status',
|
||||||
INSTALL = 'v2/manager/queue/install',
|
|
||||||
UPDATE = 'v2/manager/queue/update',
|
|
||||||
UPDATE_ALL = 'v2/manager/queue/update_all',
|
UPDATE_ALL = 'v2/manager/queue/update_all',
|
||||||
UNINSTALL = 'v2/manager/queue/uninstall',
|
|
||||||
DISABLE = 'v2/manager/queue/disable',
|
|
||||||
FIX_NODE = 'v2/manager/queue/fix',
|
|
||||||
LIST_INSTALLED = 'v2/customnode/installed',
|
LIST_INSTALLED = 'v2/customnode/installed',
|
||||||
GET_NODES = 'v2/customnode/getmappings',
|
GET_NODES = 'v2/customnode/getmappings',
|
||||||
GET_PACKS = 'v2/customnode/getlist',
|
|
||||||
IMPORT_FAIL_INFO = 'v2/customnode/import_fail_info',
|
IMPORT_FAIL_INFO = 'v2/customnode/import_fail_info',
|
||||||
REBOOT = 'v2/manager/reboot',
|
REBOOT = 'v2/manager/reboot',
|
||||||
IS_LEGACY_MANAGER_UI = 'v2/manager/is_legacy_manager_ui'
|
IS_LEGACY_MANAGER_UI = 'v2/manager/is_legacy_manager_ui',
|
||||||
|
TASK_HISTORY = 'v2/manager/queue/history',
|
||||||
|
QUEUE_TASK = 'v2/manager/queue/task'
|
||||||
}
|
}
|
||||||
|
|
||||||
const managerApiClient = axios.create({
|
const managerApiClient = axios.create({
|
||||||
@@ -50,7 +47,6 @@ const managerApiClient = axios.create({
|
|||||||
export const useComfyManagerService = () => {
|
export const useComfyManagerService = () => {
|
||||||
const isLoading = ref(false)
|
const isLoading = ref(false)
|
||||||
const error = ref<string | null>(null)
|
const error = ref<string | null>(null)
|
||||||
const didStartQueue = ref(false)
|
|
||||||
|
|
||||||
const handleRequestError = (
|
const handleRequestError = (
|
||||||
err: unknown,
|
err: unknown,
|
||||||
@@ -111,28 +107,21 @@ export const useComfyManagerService = () => {
|
|||||||
201: 'Created: ComfyUI-Manager job queue is already running'
|
201: 'Created: ComfyUI-Manager job queue is already running'
|
||||||
}
|
}
|
||||||
|
|
||||||
didStartQueue.value = true
|
|
||||||
|
|
||||||
return executeRequest<null>(
|
return executeRequest<null>(
|
||||||
() => managerApiClient.get(ManagerRoute.START_QUEUE, { signal }),
|
() => managerApiClient.get(ManagerRoute.START_QUEUE, { signal }),
|
||||||
{ errorContext, routeSpecificErrors }
|
{ errorContext, routeSpecificErrors }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const getQueueStatus = async (signal?: AbortSignal) => {
|
const getQueueStatus = async (client_id?: string, signal?: AbortSignal) => {
|
||||||
const errorContext = 'Getting ComfyUI-Manager queue status'
|
const errorContext = 'Getting ComfyUI-Manager queue status'
|
||||||
|
|
||||||
return executeRequest<ManagerQueueStatus>(
|
return executeRequest<ManagerQueueStatus>(
|
||||||
() => managerApiClient.get(ManagerRoute.QUEUE_STATUS, { signal }),
|
() =>
|
||||||
{ errorContext }
|
managerApiClient.get(ManagerRoute.QUEUE_STATUS, {
|
||||||
)
|
params: client_id ? { client_id } : undefined,
|
||||||
}
|
signal
|
||||||
|
}),
|
||||||
const resetQueue = async (signal?: AbortSignal) => {
|
|
||||||
const errorContext = 'Resetting ComfyUI-Manager queue'
|
|
||||||
|
|
||||||
return executeRequest<null>(
|
|
||||||
() => managerApiClient.get(ManagerRoute.RESET_QUEUE, { signal }),
|
|
||||||
{ errorContext }
|
{ errorContext }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -155,73 +144,66 @@ export const useComfyManagerService = () => {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const installPack = async (
|
const queueTask = async (
|
||||||
params: InstallPackParams,
|
kind: QueueTaskItem['kind'],
|
||||||
|
params: QueueTaskItem['params'],
|
||||||
|
ui_id?: string,
|
||||||
signal?: AbortSignal
|
signal?: AbortSignal
|
||||||
) => {
|
) => {
|
||||||
const errorContext = `Installing pack ${params.id}`
|
const task: QueueTaskItem = {
|
||||||
|
kind,
|
||||||
|
params,
|
||||||
|
ui_id: ui_id || uuidv4(),
|
||||||
|
client_id: api.clientId ?? api.initialClientId ?? 'unknown'
|
||||||
|
}
|
||||||
|
|
||||||
|
const errorContext = `Queueing ${task.kind} task`
|
||||||
const routeSpecificErrors = {
|
const routeSpecificErrors = {
|
||||||
403: GENERIC_SECURITY_ERR_MSG,
|
403: GENERIC_SECURITY_ERR_MSG,
|
||||||
404:
|
404: `Not Found: Task could not be queued`
|
||||||
params.selected_version === SelectedVersion.NIGHTLY
|
|
||||||
? `Not Found: Node pack ${params.id} does not provide nightly version`
|
|
||||||
: GENERIC_SECURITY_ERR_MSG
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return executeRequest<null>(
|
return executeRequest<null>(
|
||||||
() => managerApiClient.post(ManagerRoute.INSTALL, params, { signal }),
|
() => managerApiClient.post(ManagerRoute.QUEUE_TASK, task, { signal }),
|
||||||
{ errorContext, routeSpecificErrors, isQueueOperation: true }
|
{ errorContext, routeSpecificErrors, isQueueOperation: true }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const installPack = async (
|
||||||
|
params: InstallPackParams,
|
||||||
|
ui_id?: string,
|
||||||
|
signal?: AbortSignal
|
||||||
|
) => {
|
||||||
|
return queueTask('install', params, ui_id, signal)
|
||||||
|
}
|
||||||
|
|
||||||
const uninstallPack = async (
|
const uninstallPack = async (
|
||||||
params: ManagerPackInfo,
|
params: components['schemas']['UninstallPackParams'],
|
||||||
|
ui_id?: string,
|
||||||
signal?: AbortSignal
|
signal?: AbortSignal
|
||||||
) => {
|
) => {
|
||||||
const errorContext = `Uninstalling pack ${params.id}`
|
return queueTask('uninstall', params, ui_id, signal)
|
||||||
const routeSpecificErrors = {
|
|
||||||
403: GENERIC_SECURITY_ERR_MSG
|
|
||||||
}
|
|
||||||
|
|
||||||
return executeRequest<null>(
|
|
||||||
() => managerApiClient.post(ManagerRoute.UNINSTALL, params, { signal }),
|
|
||||||
{ errorContext, routeSpecificErrors, isQueueOperation: true }
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const disablePack = async (
|
const disablePack = async (
|
||||||
params: ManagerPackInfo,
|
params: components['schemas']['DisablePackParams'],
|
||||||
|
ui_id?: string,
|
||||||
signal?: AbortSignal
|
signal?: AbortSignal
|
||||||
): Promise<null> => {
|
): Promise<null> => {
|
||||||
const errorContext = `Disabling pack ${params.id}`
|
return queueTask('disable', params, ui_id, signal)
|
||||||
const routeSpecificErrors = {
|
|
||||||
404: `Pack ${params.id} not found or not installed`,
|
|
||||||
409: `Pack ${params.id} is already disabled`
|
|
||||||
}
|
|
||||||
|
|
||||||
return executeRequest<null>(
|
|
||||||
() => managerApiClient.post(ManagerRoute.DISABLE, params, { signal }),
|
|
||||||
{ errorContext, routeSpecificErrors, isQueueOperation: true }
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const updatePack = async (
|
const updatePack = async (
|
||||||
params: ManagerPackInfo,
|
params: components['schemas']['UpdatePackParams'],
|
||||||
|
ui_id?: string,
|
||||||
signal?: AbortSignal
|
signal?: AbortSignal
|
||||||
): Promise<null> => {
|
): Promise<null> => {
|
||||||
const errorContext = `Updating pack ${params.id}`
|
return queueTask('update', params, ui_id, signal)
|
||||||
const routeSpecificErrors = {
|
|
||||||
403: GENERIC_SECURITY_ERR_MSG
|
|
||||||
}
|
|
||||||
|
|
||||||
return executeRequest<null>(
|
|
||||||
() => managerApiClient.post(ManagerRoute.UPDATE, params, { signal }),
|
|
||||||
{ errorContext, routeSpecificErrors, isQueueOperation: true }
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const updateAllPacks = async (
|
const updateAllPacks = async (
|
||||||
params?: UpdateAllPacksParams,
|
params: UpdateAllPacksParams = {},
|
||||||
|
ui_id?: string,
|
||||||
signal?: AbortSignal
|
signal?: AbortSignal
|
||||||
) => {
|
) => {
|
||||||
const errorContext = 'Updating all packs'
|
const errorContext = 'Updating all packs'
|
||||||
@@ -230,8 +212,18 @@ export const useComfyManagerService = () => {
|
|||||||
401: 'Unauthorized: ComfyUI-Manager job queue is busy'
|
401: 'Unauthorized: ComfyUI-Manager job queue is busy'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const queryParams = {
|
||||||
|
mode: params.mode,
|
||||||
|
client_id: api.clientId ?? api.initialClientId ?? 'unknown',
|
||||||
|
ui_id: ui_id || uuidv4()
|
||||||
|
}
|
||||||
|
|
||||||
return executeRequest<null>(
|
return executeRequest<null>(
|
||||||
() => managerApiClient.get(ManagerRoute.UPDATE_ALL, { params, signal }),
|
() =>
|
||||||
|
managerApiClient.get(ManagerRoute.UPDATE_ALL, {
|
||||||
|
params: queryParams,
|
||||||
|
signal
|
||||||
|
}),
|
||||||
{ errorContext, routeSpecificErrors, isQueueOperation: true }
|
{ errorContext, routeSpecificErrors, isQueueOperation: true }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -257,6 +249,27 @@ export const useComfyManagerService = () => {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getTaskHistory = async (
|
||||||
|
options: {
|
||||||
|
ui_id?: string
|
||||||
|
max_items?: number
|
||||||
|
client_id?: string
|
||||||
|
offset?: number
|
||||||
|
} = {},
|
||||||
|
signal?: AbortSignal
|
||||||
|
) => {
|
||||||
|
const errorContext = 'Getting ComfyUI-Manager task history'
|
||||||
|
|
||||||
|
return executeRequest<ManagerTaskHistory>(
|
||||||
|
() =>
|
||||||
|
managerApiClient.get(ManagerRoute.TASK_HISTORY, {
|
||||||
|
params: options,
|
||||||
|
signal
|
||||||
|
}),
|
||||||
|
{ errorContext }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
// State
|
// State
|
||||||
isLoading,
|
isLoading,
|
||||||
@@ -264,8 +277,8 @@ export const useComfyManagerService = () => {
|
|||||||
|
|
||||||
// Queue operations
|
// Queue operations
|
||||||
startQueue,
|
startQueue,
|
||||||
resetQueue,
|
|
||||||
getQueueStatus,
|
getQueueStatus,
|
||||||
|
getTaskHistory,
|
||||||
|
|
||||||
// Pack management
|
// Pack management
|
||||||
listInstalledPacks,
|
listInstalledPacks,
|
||||||
|
|||||||
Reference in New Issue
Block a user