[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:
bymyself
2025-06-13 13:56:09 -07:00
parent 412fa680cc
commit 47cbf1ea0b

View File

@@ -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,