@comfyorg/comfyui-frontend-types 1.38.6 → 1.39.17

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 (2) hide show
  1. package/index.d.ts +1389 -207
  2. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -11,6 +11,8 @@ import { z } from 'zod';
11
11
  import { ZodArray } from 'zod';
12
12
  import { ZodBoolean } from 'zod';
13
13
  import { ZodEnum } from 'zod';
14
+ import { ZodLiteral } from 'zod';
15
+ import { ZodNumber } from 'zod';
14
16
  import { ZodObject } from 'zod';
15
17
  import { ZodOptional } from 'zod';
16
18
  import { ZodString } from 'zod';
@@ -226,7 +228,6 @@ declare abstract class BaseSteppedWidget<TWidget extends IBaseWidget = IBaseWidg
226
228
  }
227
229
 
228
230
  declare abstract class BaseWidget<TWidget extends IBaseWidget = IBaseWidget> implements IBaseWidget {
229
- #private;
230
231
  /** From node edge to widget edge */
231
232
  static margin: number;
232
233
  /** From widget edge to tip of arrow button */
@@ -245,6 +246,7 @@ declare abstract class BaseWidget<TWidget extends IBaseWidget = IBaseWidget> imp
245
246
  minWidth: number;
246
247
  maxWidth?: number;
247
248
  };
249
+ private _node;
248
250
  /** The node that this widget belongs to. */
249
251
  get node(): LGraphNode;
250
252
  linkedWidgets?: IBaseWidget[];
@@ -266,6 +268,7 @@ declare abstract class BaseWidget<TWidget extends IBaseWidget = IBaseWidget> imp
266
268
  mouse?(event: CanvasPointerEvent, pointerOffset: Point, node: LGraphNode): boolean;
267
269
  computeSize?(width?: number): Size;
268
270
  onPointerDown?(pointer: CanvasPointer, node: LGraphNode, canvas: LGraphCanvas): boolean;
271
+ private _value?;
269
272
  get value(): TWidget['value'];
270
273
  set value(value: TWidget['value']);
271
274
  constructor(widget: TWidget & {
@@ -379,26 +382,6 @@ declare class ButtonWidget extends BaseWidget<IButtonWidget> implements IButtonW
379
382
  onClick({ e, node, canvas }: WidgetEventOptions): void;
380
383
  }
381
384
 
382
- /**
383
- * Shorthand for {@link Parameters} of optional callbacks.
384
- * @example
385
- * ```ts
386
- * const { onClick } = CustomClass.prototype
387
- * CustomClass.prototype.onClick = function (...args: CallbackParams<typeof onClick>) {
388
- * const r = onClick?.apply(this, args)
389
- * // ...
390
- * return r
391
- * }
392
- * ```
393
- */
394
- declare type CallbackParams<T extends ((...args: any) => any) | undefined> = Parameters<Exclude<T, undefined>>;
395
-
396
- /**
397
- * Shorthand for {@link ReturnType} of optional callbacks.
398
- * @see {@link CallbackParams}
399
- */
400
- declare type CallbackReturn<T extends ((...args: any) => any) | undefined> = ReturnType<Exclude<T, undefined>>;
401
-
402
385
  declare type CanvasColour = string | CanvasGradient | CanvasPattern;
403
386
 
404
387
  /** Bit flags used to indicate what the pointer is currently hovering over. */
@@ -446,7 +429,6 @@ declare interface CanvasMouseEvent extends MouseEvent, Readonly<CanvasPointerExt
446
429
  * - {@link LGraphCanvas.processMouseUp}
447
430
  */
448
431
  declare class CanvasPointer {
449
- #private;
450
432
  /** Maximum time in milliseconds to ignore click drift */
451
433
  static bufferTime: number;
452
434
  /** Maximum gap between pointerup and pointerdown events to be considered as a double click */
@@ -454,6 +436,9 @@ declare class CanvasPointer {
454
436
  /** Maximum offset from click location */
455
437
  static get maxClickDrift(): number;
456
438
  static set maxClickDrift(value: number);
439
+ private static _maxClickDrift;
440
+ /** {@link maxClickDrift} squared. Used to calculate click drift without `sqrt`. */
441
+ private static _maxClickDrift2;
457
442
  /** Assume that "wheel" events with both deltaX and deltaY less than this value are trackpad gestures. */
458
443
  static trackpadThreshold: number;
459
444
  /**
@@ -544,6 +529,7 @@ declare class CanvasPointer {
544
529
  */
545
530
  get finally(): (() => unknown) | undefined;
546
531
  set finally(value: (() => unknown) | undefined);
532
+ private _finally?;
547
533
  constructor(element: Element);
548
534
  /**
549
535
  * Callback for `pointerdown` events. To be used as the event handler (or called by it).
@@ -560,6 +546,21 @@ declare class CanvasPointer {
560
546
  * @param e The `pointerup` event
561
547
  */
562
548
  up(e: CanvasPointerEvent): boolean;
549
+ private _completeClick;
550
+ /**
551
+ * Checks if two events occurred near each other - not further apart than the maximum click drift.
552
+ * @param a The first event to compare
553
+ * @param b The second event to compare
554
+ * @param tolerance2 The maximum distance (squared) before the positions are considered different
555
+ * @returns `true` if the two events were no more than {@link maxClickDrift} apart, otherwise `false`
556
+ */
557
+ private _hasSamePosition;
558
+ /**
559
+ * Checks whether the pointer is currently past the max click drift threshold.
560
+ * @returns `true` if the latest pointer event is past the the click drift threshold
561
+ */
562
+ private _isDoubleClick;
563
+ private _setDragStarted;
563
564
  /**
564
565
  * Checks if the given wheel event is part of a trackpad gesture.
565
566
  * This method now uses the new device detection internally for improved accuracy.
@@ -567,6 +568,50 @@ declare class CanvasPointer {
567
568
  * @returns `true` if the event is part of a trackpad gesture, otherwise `false`
568
569
  */
569
570
  isTrackpadGesture(e: WheelEvent): boolean;
571
+ /**
572
+ * Validates buffered high res wheel events and switches to mouse mode if pattern matches.
573
+ * @returns `true` if switched to mouse mode
574
+ */
575
+ private _isHighResWheelEvent;
576
+ /**
577
+ * Checks if we're within the cooldown period where mode switching is disabled.
578
+ */
579
+ private _isWithinCooldown;
580
+ /**
581
+ * Updates the device mode based on event patterns.
582
+ */
583
+ private _updateDeviceMode;
584
+ /**
585
+ * Clears the buffered Linux wheel event and associated timer.
586
+ */
587
+ private _clearLinuxBuffer;
588
+ /**
589
+ * Checks if the event matches trackpad input patterns.
590
+ * @param event The wheel event to check
591
+ */
592
+ private _isTrackpadPattern;
593
+ /**
594
+ * Checks if the event matches mouse wheel input patterns.
595
+ * @param event The wheel event to check
596
+ */
597
+ private _isMousePattern;
598
+ /**
599
+ * Checks if the event should be buffered as a potential Linux wheel event.
600
+ * @param event The wheel event to check
601
+ */
602
+ private _shouldBufferLinuxEvent;
603
+ /**
604
+ * Buffers a potential Linux wheel event for later confirmation.
605
+ * @param event The event to buffer
606
+ * @param now The current timestamp
607
+ */
608
+ private _bufferLinuxEvent;
609
+ /**
610
+ * Checks if two deltaY values follow a Linux wheel pattern (divisibility).
611
+ * @param deltaY1 The first deltaY value
612
+ * @param deltaY2 The second deltaY value
613
+ */
614
+ private _isLinuxWheelPattern;
570
615
  /**
571
616
  * Resets the state of this {@link CanvasPointer} instance.
572
617
  *
@@ -608,7 +653,7 @@ declare class ChangeTracker {
608
653
  scale: number;
609
654
  offset: [number, number];
610
655
  };
611
- nodeOutputs?: Record<string, any>;
656
+ nodeOutputs?: Record<string, ExecutedWsMessage['output']>;
612
657
  private subgraphState?;
613
658
  constructor(
614
659
  /**
@@ -681,7 +726,7 @@ declare type Clipspace = {
681
726
  widgets?: Pick<IBaseWidget, 'type' | 'name' | 'value'>[] | null;
682
727
  imgs?: HTMLImageElement[] | null;
683
728
  original_imgs?: HTMLImageElement[] | null;
684
- images?: any[] | null;
729
+ images?: ResultItem[] | null;
685
730
  selectedIndex: number;
686
731
  img_paste_mode: string;
687
732
  paintedIndex: number;
@@ -699,13 +744,12 @@ declare interface ColorOption {
699
744
  }
700
745
 
701
746
  /**
702
- * Widget for displaying a color picker
703
- * This is a widget that only has a Vue widgets implementation
747
+ * Widget for displaying a color picker using native HTML color input
704
748
  */
705
749
  declare class ColorWidget extends BaseWidget<IColorWidget> implements IColorWidget {
706
750
  type: "color";
707
751
  drawWidget(ctx: CanvasRenderingContext2D, options: DrawWidgetOptions): void;
708
- onClick(_options: WidgetEventOptions): void;
752
+ onClick({ e, node, canvas }: WidgetEventOptions): void;
709
753
  }
710
754
 
711
755
  declare class ComboWidget extends BaseSteppedWidget<IStringComboWidget | IComboWidget> implements IComboWidget {
@@ -739,7 +783,7 @@ export declare interface ComfyApi extends EventTarget {
739
783
  }
740
784
 
741
785
  export declare class ComfyApi extends EventTarget {
742
- #private;
786
+ private _registered;
743
787
  api_host: string;
744
788
  api_base: string;
745
789
  /**
@@ -813,6 +857,10 @@ export declare class ComfyApi extends EventTarget {
813
857
  dispatchCustomEvent<T extends ComplexApiEvents>(type: T, detail: ApiEventTypes[T] | null): boolean;
814
858
  /** @deprecated Use {@link dispatchCustomEvent}. */
815
859
  dispatchEvent(event: never): boolean;
860
+ /**
861
+ * Poll status for colab and other things that don't support websockets.
862
+ */
863
+ private _pollQueue;
816
864
  /**
817
865
  * Creates and connects a WebSocket for realtime updates
818
866
  * @param {boolean} isReconnect If the socket is connection is a reconnect attempt
@@ -881,10 +929,10 @@ export declare class ComfyApi extends EventTarget {
881
929
  * @param {string} type The type of items to load, queue or history
882
930
  * @returns The items of the specified type grouped by their status
883
931
  */
884
- getItems(type: 'queue' | 'history'): Promise<{
932
+ getItems(type: 'queue' | 'history'): Promise<JobListItem[] | {
885
933
  Running: JobListItem[];
886
934
  Pending: JobListItem[];
887
- } | JobListItem[]>;
935
+ }>;
888
936
  /**
889
937
  * Gets the current state of the queue
890
938
  * @returns The currently running and queued items
@@ -911,6 +959,12 @@ export declare class ComfyApi extends EventTarget {
911
959
  * @returns System stats such as python version, OS, per device info
912
960
  */
913
961
  getSystemStats(): Promise<SystemStats>;
962
+ /**
963
+ * Sends a POST request to the API
964
+ * @param {*} type The endpoint to post to
965
+ * @param {*} body Optional POST data
966
+ */
967
+ private _postItem;
914
968
  /**
915
969
  * Deletes an item from the specified list
916
970
  * @param {string} type The type of item to delete, queue or history
@@ -952,7 +1006,7 @@ export declare class ComfyApi extends EventTarget {
952
1006
  /**
953
1007
  * Stores a dictionary of settings for the current user
954
1008
  */
955
- storeSettings(settings: Settings): Promise<Response>;
1009
+ storeSettings(settings: Partial<Settings>): Promise<Response>;
956
1010
  /**
957
1011
  * Stores a setting for the current user
958
1012
  */
@@ -968,7 +1022,7 @@ export declare class ComfyApi extends EventTarget {
968
1022
  * @param { RequestInit & { stringify?: boolean, throwOnError?: boolean } } [options]
969
1023
  * @returns { Promise<Response> }
970
1024
  */
971
- storeUserData(file: string, data: any, options?: RequestInit & {
1025
+ storeUserData(file: string, data: unknown, options?: RequestInit & {
972
1026
  overwrite?: boolean;
973
1027
  stringify?: boolean;
974
1028
  throwOnError?: boolean;
@@ -1002,7 +1056,7 @@ export declare class ComfyApi extends EventTarget {
1002
1056
  *
1003
1057
  * @returns The custom nodes i18n data
1004
1058
  */
1005
- getCustomNodesI18n(): Promise<Record<string, any>>;
1059
+ getCustomNodesI18n(): Promise<CustomNodesI18n>;
1006
1060
  /**
1007
1061
  * Checks if the server supports a specific feature.
1008
1062
  * @param featureName The name of the feature to check (supports dot notation for nested values)
@@ -1050,7 +1104,7 @@ export declare class ComfyApp {
1050
1104
  nodePreviewImages: Record<string, string[]>;
1051
1105
  private rootGraphInternal;
1052
1106
  /** @deprecated Use {@link rootGraph} instead */
1053
- get graph(): unknown;
1107
+ get graph(): LGraph;
1054
1108
  get rootGraph(): LGraph;
1055
1109
  canvas: LGraphCanvas;
1056
1110
  dragOverNode: LGraphNode | null;
@@ -1318,7 +1372,8 @@ export declare class ComfyApp {
1318
1372
  }
1319
1373
 
1320
1374
  declare class ComfyButton implements ComfyComponent<HTMLElement> {
1321
- #private;
1375
+ private _over;
1376
+ private _popupOpen;
1322
1377
  isOver: boolean;
1323
1378
  iconElement: HTMLElement;
1324
1379
  contentElement: HTMLSpanElement;
@@ -1384,13 +1439,13 @@ export declare class ComfyApp {
1384
1439
  }
1385
1440
 
1386
1441
  declare class ComfyDialog<T extends HTMLElement = HTMLElement> extends EventTarget {
1387
- #private;
1388
1442
  element: T;
1389
1443
  textElement: HTMLElement;
1390
- constructor(type?: string, buttons?: null);
1444
+ private _buttons;
1445
+ constructor(type?: string, buttons?: HTMLButtonElement[] | null);
1391
1446
  createButtons(): HTMLButtonElement[];
1392
1447
  close(): void;
1393
- show(html: any): void;
1448
+ show(html: string | HTMLElement | HTMLElement[]): void;
1394
1449
  }
1395
1450
 
1396
1451
  export declare interface ComfyExtension {
@@ -1432,23 +1487,19 @@ export declare class ComfyApp {
1432
1487
  actionBarButtons?: ActionBarButton[];
1433
1488
  /**
1434
1489
  * Allows any initialisation, e.g. loading resources. Called after the canvas is created but before nodes are added
1435
- * @param app The ComfyUI app instance
1436
1490
  */
1437
1491
  init?(app: ComfyApp): Promise<void> | void;
1438
1492
  /**
1439
1493
  * Allows any additional setup, called after the application is fully set up and running
1440
- * @param app The ComfyUI app instance
1441
1494
  */
1442
1495
  setup?(app: ComfyApp): Promise<void> | void;
1443
1496
  /**
1444
1497
  * Called before nodes are registered with the graph
1445
1498
  * @param defs The collection of node definitions, add custom ones or edit existing ones
1446
- * @param app The ComfyUI app instance
1447
1499
  */
1448
1500
  addCustomNodeDefs?(defs: Record<string, ComfyNodeDef>, app: ComfyApp): Promise<void> | void;
1449
1501
  /**
1450
1502
  * Allows the extension to add custom widgets
1451
- * @param app The ComfyUI app instance
1452
1503
  * @returns An array of {[widget name]: widget data}
1453
1504
  */
1454
1505
  getCustomWidgets?(app: ComfyApp): Promise<Widgets> | Widgets;
@@ -1474,7 +1525,7 @@ export declare class ComfyApp {
1474
1525
  * Allows the extension to add additional handling to the node before it is registered with **LGraph**
1475
1526
  * @param nodeType The node class (not an instance)
1476
1527
  * @param nodeData The original node object info config object
1477
- * @param app The ComfyUI app instance
1528
+ * @param app The app instance
1478
1529
  */
1479
1530
  beforeRegisterNodeDef?(nodeType: typeof LGraphNode, nodeData: ComfyNodeDef, app: ComfyApp): Promise<void> | void;
1480
1531
  /**
@@ -1482,14 +1533,12 @@ export declare class ComfyApp {
1482
1533
  * Modifications is expected to be made in place.
1483
1534
  *
1484
1535
  * @param defs The node definitions
1485
- * @param app The ComfyUI app instance
1536
+ * @param app The app instance
1486
1537
  */
1487
1538
  beforeRegisterVueAppNodeDefs?(defs: ComfyNodeDef[], app: ComfyApp): void;
1488
1539
  /**
1489
1540
  * Allows the extension to register additional nodes with LGraph after standard nodes are added.
1490
1541
  * Custom node classes should extend **LGraphNode**.
1491
- *
1492
- * @param app The ComfyUI app instance
1493
1542
  */
1494
1543
  registerCustomNodes?(app: ComfyApp): Promise<void> | void;
1495
1544
  /**
@@ -1497,26 +1546,28 @@ export declare class ComfyApp {
1497
1546
  * If you break something in the backend and want to patch workflows in the frontend
1498
1547
  * This is the place to do this
1499
1548
  * @param node The node that has been loaded
1500
- * @param app The ComfyUI app instance
1549
+ * @param app The app instance
1501
1550
  */
1502
1551
  loadedGraphNode?(node: LGraphNode, app: ComfyApp): void;
1503
1552
  /**
1504
1553
  * Allows the extension to run code after the constructor of the node
1505
1554
  * @param node The node that has been created
1506
- * @param app The ComfyUI app instance
1555
+ * @param app The app instance
1507
1556
  */
1508
1557
  nodeCreated?(node: LGraphNode, app: ComfyApp): void;
1509
1558
  /**
1510
1559
  * Allows the extension to modify the graph data before it is configured.
1511
1560
  * @param graphData The graph data
1512
1561
  * @param missingNodeTypes The missing node types
1562
+ * @param app The app instance
1513
1563
  */
1514
- beforeConfigureGraph?(graphData: ComfyWorkflowJSON, missingNodeTypes: MissingNodeType[]): Promise<void> | void;
1564
+ beforeConfigureGraph?(graphData: ComfyWorkflowJSON, missingNodeTypes: MissingNodeType[], app: ComfyApp): Promise<void> | void;
1515
1565
  /**
1516
1566
  * Allows the extension to run code after the graph is configured.
1517
1567
  * @param missingNodeTypes The missing node types
1568
+ * @param app The app instance
1518
1569
  */
1519
- afterConfigureGraph?(missingNodeTypes: MissingNodeType[]): Promise<void> | void;
1570
+ afterConfigureGraph?(missingNodeTypes: MissingNodeType[], app: ComfyApp): Promise<void> | void;
1520
1571
  /**
1521
1572
  * Fired whenever authentication resolves, providing the anonymized user id..
1522
1573
  * Extensions can register at any time and will receive the latest value immediately.
@@ -1537,7 +1588,9 @@ export declare class ComfyApp {
1537
1588
  }
1538
1589
 
1539
1590
  declare class ComfyList {
1540
- #private;
1591
+ private _type;
1592
+ private _text;
1593
+ private _reverse;
1541
1594
  element: HTMLDivElement;
1542
1595
  button?: HTMLButtonElement;
1543
1596
  constructor(text: any, type?: any, reverse?: any);
@@ -1552,7 +1605,6 @@ export declare class ComfyApp {
1552
1605
  export declare type ComfyNodeDef = z.infer<typeof zComfyNodeDef>;
1553
1606
 
1554
1607
  declare class ComfyPopup extends EventTarget {
1555
- #private;
1556
1608
  element: HTMLElement;
1557
1609
  open: boolean;
1558
1610
  children: HTMLElement[];
@@ -1573,6 +1625,10 @@ export declare class ComfyApp {
1573
1625
  horizontal?: 'left' | 'right';
1574
1626
  }, ...children: HTMLElement[]);
1575
1627
  toggle(): void;
1628
+ private _hide;
1629
+ private _show;
1630
+ private _escHandler;
1631
+ private _clickHandler;
1576
1632
  update: () => void;
1577
1633
  }
1578
1634
 
@@ -1583,7 +1639,554 @@ export declare class ComfyApp {
1583
1639
  /**
1584
1640
  * @deprecated Use `settingStore.settingValues` instead.
1585
1641
  */
1586
- get settingsValues(): Record<string, any>;
1642
+ get settingsValues(): {
1643
+ 'Comfy.ColorPalette'?: string | undefined;
1644
+ 'Comfy.CustomColorPalettes'?: Record<string, objectOutputType< {
1645
+ id: ZodString;
1646
+ name: ZodString;
1647
+ colors: ZodObject< {
1648
+ node_slot: ZodObject< {
1649
+ CLIP: ZodOptional<ZodString>;
1650
+ CLIP_VISION: ZodOptional<ZodString>;
1651
+ CLIP_VISION_OUTPUT: ZodOptional<ZodString>;
1652
+ CONDITIONING: ZodOptional<ZodString>;
1653
+ CONTROL_NET: ZodOptional<ZodString>;
1654
+ IMAGE: ZodOptional<ZodString>;
1655
+ LATENT: ZodOptional<ZodString>;
1656
+ MASK: ZodOptional<ZodString>;
1657
+ MODEL: ZodOptional<ZodString>;
1658
+ STYLE_MODEL: ZodOptional<ZodString>;
1659
+ VAE: ZodOptional<ZodString>;
1660
+ NOISE: ZodOptional<ZodString>;
1661
+ GUIDER: ZodOptional<ZodString>;
1662
+ SAMPLER: ZodOptional<ZodString>;
1663
+ SIGMAS: ZodOptional<ZodString>;
1664
+ TAESD: ZodOptional<ZodString>;
1665
+ }, "strip", ZodTypeAny, {
1666
+ CLIP?: string | undefined;
1667
+ CLIP_VISION?: string | undefined;
1668
+ CLIP_VISION_OUTPUT?: string | undefined;
1669
+ CONDITIONING?: string | undefined;
1670
+ CONTROL_NET?: string | undefined;
1671
+ GUIDER?: string | undefined;
1672
+ IMAGE?: string | undefined;
1673
+ LATENT?: string | undefined;
1674
+ MASK?: string | undefined;
1675
+ MODEL?: string | undefined;
1676
+ NOISE?: string | undefined;
1677
+ SAMPLER?: string | undefined;
1678
+ SIGMAS?: string | undefined;
1679
+ STYLE_MODEL?: string | undefined;
1680
+ VAE?: string | undefined;
1681
+ TAESD?: string | undefined;
1682
+ }, {
1683
+ CLIP?: string | undefined;
1684
+ CLIP_VISION?: string | undefined;
1685
+ CLIP_VISION_OUTPUT?: string | undefined;
1686
+ CONDITIONING?: string | undefined;
1687
+ CONTROL_NET?: string | undefined;
1688
+ GUIDER?: string | undefined;
1689
+ IMAGE?: string | undefined;
1690
+ LATENT?: string | undefined;
1691
+ MASK?: string | undefined;
1692
+ MODEL?: string | undefined;
1693
+ NOISE?: string | undefined;
1694
+ SAMPLER?: string | undefined;
1695
+ SIGMAS?: string | undefined;
1696
+ STYLE_MODEL?: string | undefined;
1697
+ VAE?: string | undefined;
1698
+ TAESD?: string | undefined;
1699
+ }>;
1700
+ litegraph_base: ZodObject< {
1701
+ BACKGROUND_IMAGE: ZodOptional<ZodString>;
1702
+ CLEAR_BACKGROUND_COLOR: ZodOptional<ZodString>;
1703
+ NODE_TITLE_COLOR: ZodOptional<ZodString>;
1704
+ NODE_SELECTED_TITLE_COLOR: ZodOptional<ZodString>;
1705
+ NODE_TEXT_SIZE: ZodOptional<ZodNumber>;
1706
+ NODE_TEXT_COLOR: ZodOptional<ZodString>;
1707
+ NODE_TEXT_HIGHLIGHT_COLOR: ZodOptional<ZodString>;
1708
+ NODE_SUBTEXT_SIZE: ZodOptional<ZodNumber>;
1709
+ NODE_DEFAULT_COLOR: ZodOptional<ZodString>;
1710
+ NODE_DEFAULT_BGCOLOR: ZodOptional<ZodString>;
1711
+ NODE_DEFAULT_BOXCOLOR: ZodOptional<ZodString>;
1712
+ NODE_DEFAULT_SHAPE: ZodOptional<ZodUnion<[ZodLiteral<RenderShape>, ZodLiteral<RenderShape>, ZodLiteral<RenderShape>, ZodString]>>;
1713
+ NODE_BOX_OUTLINE_COLOR: ZodOptional<ZodString>;
1714
+ NODE_BYPASS_BGCOLOR: ZodOptional<ZodString>;
1715
+ NODE_ERROR_COLOUR: ZodOptional<ZodString>;
1716
+ DEFAULT_SHADOW_COLOR: ZodOptional<ZodString>;
1717
+ DEFAULT_GROUP_FONT: ZodOptional<ZodNumber>;
1718
+ WIDGET_BGCOLOR: ZodOptional<ZodString>;
1719
+ WIDGET_OUTLINE_COLOR: ZodOptional<ZodString>;
1720
+ WIDGET_TEXT_COLOR: ZodOptional<ZodString>;
1721
+ WIDGET_SECONDARY_TEXT_COLOR: ZodOptional<ZodString>;
1722
+ WIDGET_DISABLED_TEXT_COLOR: ZodOptional<ZodString>;
1723
+ LINK_COLOR: ZodOptional<ZodString>;
1724
+ EVENT_LINK_COLOR: ZodOptional<ZodString>;
1725
+ CONNECTING_LINK_COLOR: ZodOptional<ZodString>;
1726
+ BADGE_FG_COLOR: ZodOptional<ZodString>;
1727
+ BADGE_BG_COLOR: ZodOptional<ZodString>;
1728
+ }, "strip", ZodTypeAny, {
1729
+ BACKGROUND_IMAGE?: string | undefined;
1730
+ CLEAR_BACKGROUND_COLOR?: string | undefined;
1731
+ NODE_TITLE_COLOR?: string | undefined;
1732
+ NODE_SELECTED_TITLE_COLOR?: string | undefined;
1733
+ NODE_TEXT_SIZE?: number | undefined;
1734
+ NODE_TEXT_COLOR?: string | undefined;
1735
+ NODE_TEXT_HIGHLIGHT_COLOR?: string | undefined;
1736
+ NODE_SUBTEXT_SIZE?: number | undefined;
1737
+ NODE_DEFAULT_COLOR?: string | undefined;
1738
+ NODE_DEFAULT_BGCOLOR?: string | undefined;
1739
+ NODE_DEFAULT_BOXCOLOR?: string | undefined;
1740
+ NODE_DEFAULT_SHAPE?: string | RenderShape | undefined;
1741
+ NODE_BOX_OUTLINE_COLOR?: string | undefined;
1742
+ NODE_BYPASS_BGCOLOR?: string | undefined;
1743
+ NODE_ERROR_COLOUR?: string | undefined;
1744
+ DEFAULT_SHADOW_COLOR?: string | undefined;
1745
+ DEFAULT_GROUP_FONT?: number | undefined;
1746
+ WIDGET_BGCOLOR?: string | undefined;
1747
+ WIDGET_OUTLINE_COLOR?: string | undefined;
1748
+ WIDGET_TEXT_COLOR?: string | undefined;
1749
+ WIDGET_SECONDARY_TEXT_COLOR?: string | undefined;
1750
+ WIDGET_DISABLED_TEXT_COLOR?: string | undefined;
1751
+ LINK_COLOR?: string | undefined;
1752
+ EVENT_LINK_COLOR?: string | undefined;
1753
+ CONNECTING_LINK_COLOR?: string | undefined;
1754
+ BADGE_FG_COLOR?: string | undefined;
1755
+ BADGE_BG_COLOR?: string | undefined;
1756
+ }, {
1757
+ BACKGROUND_IMAGE?: string | undefined;
1758
+ CLEAR_BACKGROUND_COLOR?: string | undefined;
1759
+ NODE_TITLE_COLOR?: string | undefined;
1760
+ NODE_SELECTED_TITLE_COLOR?: string | undefined;
1761
+ NODE_TEXT_SIZE?: number | undefined;
1762
+ NODE_TEXT_COLOR?: string | undefined;
1763
+ NODE_TEXT_HIGHLIGHT_COLOR?: string | undefined;
1764
+ NODE_SUBTEXT_SIZE?: number | undefined;
1765
+ NODE_DEFAULT_COLOR?: string | undefined;
1766
+ NODE_DEFAULT_BGCOLOR?: string | undefined;
1767
+ NODE_DEFAULT_BOXCOLOR?: string | undefined;
1768
+ NODE_DEFAULT_SHAPE?: string | RenderShape | undefined;
1769
+ NODE_BOX_OUTLINE_COLOR?: string | undefined;
1770
+ NODE_BYPASS_BGCOLOR?: string | undefined;
1771
+ NODE_ERROR_COLOUR?: string | undefined;
1772
+ DEFAULT_SHADOW_COLOR?: string | undefined;
1773
+ DEFAULT_GROUP_FONT?: number | undefined;
1774
+ WIDGET_BGCOLOR?: string | undefined;
1775
+ WIDGET_OUTLINE_COLOR?: string | undefined;
1776
+ WIDGET_TEXT_COLOR?: string | undefined;
1777
+ WIDGET_SECONDARY_TEXT_COLOR?: string | undefined;
1778
+ WIDGET_DISABLED_TEXT_COLOR?: string | undefined;
1779
+ LINK_COLOR?: string | undefined;
1780
+ EVENT_LINK_COLOR?: string | undefined;
1781
+ CONNECTING_LINK_COLOR?: string | undefined;
1782
+ BADGE_FG_COLOR?: string | undefined;
1783
+ BADGE_BG_COLOR?: string | undefined;
1784
+ }>;
1785
+ comfy_base: ZodObject< {
1786
+ "fg-color": ZodOptional<ZodString>;
1787
+ "bg-color": ZodOptional<ZodString>;
1788
+ "bg-img": ZodOptional<ZodOptional<ZodString>>;
1789
+ "comfy-menu-bg": ZodOptional<ZodString>;
1790
+ "comfy-menu-secondary-bg": ZodOptional<ZodString>;
1791
+ "comfy-input-bg": ZodOptional<ZodString>;
1792
+ "input-text": ZodOptional<ZodString>;
1793
+ "descrip-text": ZodOptional<ZodString>;
1794
+ "drag-text": ZodOptional<ZodString>;
1795
+ "error-text": ZodOptional<ZodString>;
1796
+ "border-color": ZodOptional<ZodString>;
1797
+ "tr-even-bg-color": ZodOptional<ZodString>;
1798
+ "tr-odd-bg-color": ZodOptional<ZodString>;
1799
+ "content-bg": ZodOptional<ZodString>;
1800
+ "content-fg": ZodOptional<ZodString>;
1801
+ "content-hover-bg": ZodOptional<ZodString>;
1802
+ "content-hover-fg": ZodOptional<ZodString>;
1803
+ "bar-shadow": ZodOptional<ZodString>;
1804
+ "contrast-mix-color": ZodOptional<ZodOptional<ZodString>>;
1805
+ "interface-stroke": ZodOptional<ZodOptional<ZodString>>;
1806
+ "interface-panel-surface": ZodOptional<ZodOptional<ZodString>>;
1807
+ "interface-panel-box-shadow": ZodOptional<ZodOptional<ZodString>>;
1808
+ "interface-panel-drop-shadow": ZodOptional<ZodOptional<ZodString>>;
1809
+ "interface-panel-hover-surface": ZodOptional<ZodOptional<ZodString>>;
1810
+ "interface-panel-selected-surface": ZodOptional<ZodOptional<ZodString>>;
1811
+ "interface-button-hover-surface": ZodOptional<ZodOptional<ZodString>>;
1812
+ }, "strip", ZodTypeAny, {
1813
+ "fg-color"?: string | undefined;
1814
+ "bg-color"?: string | undefined;
1815
+ "bg-img"?: string | undefined;
1816
+ "comfy-menu-bg"?: string | undefined;
1817
+ "comfy-menu-secondary-bg"?: string | undefined;
1818
+ "comfy-input-bg"?: string | undefined;
1819
+ "input-text"?: string | undefined;
1820
+ "descrip-text"?: string | undefined;
1821
+ "drag-text"?: string | undefined;
1822
+ "error-text"?: string | undefined;
1823
+ "border-color"?: string | undefined;
1824
+ "tr-even-bg-color"?: string | undefined;
1825
+ "tr-odd-bg-color"?: string | undefined;
1826
+ "content-bg"?: string | undefined;
1827
+ "content-fg"?: string | undefined;
1828
+ "content-hover-bg"?: string | undefined;
1829
+ "content-hover-fg"?: string | undefined;
1830
+ "bar-shadow"?: string | undefined;
1831
+ "contrast-mix-color"?: string | undefined;
1832
+ "interface-stroke"?: string | undefined;
1833
+ "interface-panel-surface"?: string | undefined;
1834
+ "interface-panel-box-shadow"?: string | undefined;
1835
+ "interface-panel-drop-shadow"?: string | undefined;
1836
+ "interface-panel-hover-surface"?: string | undefined;
1837
+ "interface-panel-selected-surface"?: string | undefined;
1838
+ "interface-button-hover-surface"?: string | undefined;
1839
+ }, {
1840
+ "fg-color"?: string | undefined;
1841
+ "bg-color"?: string | undefined;
1842
+ "bg-img"?: string | undefined;
1843
+ "comfy-menu-bg"?: string | undefined;
1844
+ "comfy-menu-secondary-bg"?: string | undefined;
1845
+ "comfy-input-bg"?: string | undefined;
1846
+ "input-text"?: string | undefined;
1847
+ "descrip-text"?: string | undefined;
1848
+ "drag-text"?: string | undefined;
1849
+ "error-text"?: string | undefined;
1850
+ "border-color"?: string | undefined;
1851
+ "tr-even-bg-color"?: string | undefined;
1852
+ "tr-odd-bg-color"?: string | undefined;
1853
+ "content-bg"?: string | undefined;
1854
+ "content-fg"?: string | undefined;
1855
+ "content-hover-bg"?: string | undefined;
1856
+ "content-hover-fg"?: string | undefined;
1857
+ "bar-shadow"?: string | undefined;
1858
+ "contrast-mix-color"?: string | undefined;
1859
+ "interface-stroke"?: string | undefined;
1860
+ "interface-panel-surface"?: string | undefined;
1861
+ "interface-panel-box-shadow"?: string | undefined;
1862
+ "interface-panel-drop-shadow"?: string | undefined;
1863
+ "interface-panel-hover-surface"?: string | undefined;
1864
+ "interface-panel-selected-surface"?: string | undefined;
1865
+ "interface-button-hover-surface"?: string | undefined;
1866
+ }>;
1867
+ }, "strip", ZodTypeAny, {
1868
+ node_slot: {
1869
+ CLIP?: string | undefined;
1870
+ CLIP_VISION?: string | undefined;
1871
+ CLIP_VISION_OUTPUT?: string | undefined;
1872
+ CONDITIONING?: string | undefined;
1873
+ CONTROL_NET?: string | undefined;
1874
+ GUIDER?: string | undefined;
1875
+ IMAGE?: string | undefined;
1876
+ LATENT?: string | undefined;
1877
+ MASK?: string | undefined;
1878
+ MODEL?: string | undefined;
1879
+ NOISE?: string | undefined;
1880
+ SAMPLER?: string | undefined;
1881
+ SIGMAS?: string | undefined;
1882
+ STYLE_MODEL?: string | undefined;
1883
+ VAE?: string | undefined;
1884
+ TAESD?: string | undefined;
1885
+ };
1886
+ litegraph_base: {
1887
+ BACKGROUND_IMAGE?: string | undefined;
1888
+ CLEAR_BACKGROUND_COLOR?: string | undefined;
1889
+ NODE_TITLE_COLOR?: string | undefined;
1890
+ NODE_SELECTED_TITLE_COLOR?: string | undefined;
1891
+ NODE_TEXT_SIZE?: number | undefined;
1892
+ NODE_TEXT_COLOR?: string | undefined;
1893
+ NODE_TEXT_HIGHLIGHT_COLOR?: string | undefined;
1894
+ NODE_SUBTEXT_SIZE?: number | undefined;
1895
+ NODE_DEFAULT_COLOR?: string | undefined;
1896
+ NODE_DEFAULT_BGCOLOR?: string | undefined;
1897
+ NODE_DEFAULT_BOXCOLOR?: string | undefined;
1898
+ NODE_DEFAULT_SHAPE?: string | RenderShape | undefined;
1899
+ NODE_BOX_OUTLINE_COLOR?: string | undefined;
1900
+ NODE_BYPASS_BGCOLOR?: string | undefined;
1901
+ NODE_ERROR_COLOUR?: string | undefined;
1902
+ DEFAULT_SHADOW_COLOR?: string | undefined;
1903
+ DEFAULT_GROUP_FONT?: number | undefined;
1904
+ WIDGET_BGCOLOR?: string | undefined;
1905
+ WIDGET_OUTLINE_COLOR?: string | undefined;
1906
+ WIDGET_TEXT_COLOR?: string | undefined;
1907
+ WIDGET_SECONDARY_TEXT_COLOR?: string | undefined;
1908
+ WIDGET_DISABLED_TEXT_COLOR?: string | undefined;
1909
+ LINK_COLOR?: string | undefined;
1910
+ EVENT_LINK_COLOR?: string | undefined;
1911
+ CONNECTING_LINK_COLOR?: string | undefined;
1912
+ BADGE_FG_COLOR?: string | undefined;
1913
+ BADGE_BG_COLOR?: string | undefined;
1914
+ };
1915
+ comfy_base: {
1916
+ "fg-color"?: string | undefined;
1917
+ "bg-color"?: string | undefined;
1918
+ "bg-img"?: string | undefined;
1919
+ "comfy-menu-bg"?: string | undefined;
1920
+ "comfy-menu-secondary-bg"?: string | undefined;
1921
+ "comfy-input-bg"?: string | undefined;
1922
+ "input-text"?: string | undefined;
1923
+ "descrip-text"?: string | undefined;
1924
+ "drag-text"?: string | undefined;
1925
+ "error-text"?: string | undefined;
1926
+ "border-color"?: string | undefined;
1927
+ "tr-even-bg-color"?: string | undefined;
1928
+ "tr-odd-bg-color"?: string | undefined;
1929
+ "content-bg"?: string | undefined;
1930
+ "content-fg"?: string | undefined;
1931
+ "content-hover-bg"?: string | undefined;
1932
+ "content-hover-fg"?: string | undefined;
1933
+ "bar-shadow"?: string | undefined;
1934
+ "contrast-mix-color"?: string | undefined;
1935
+ "interface-stroke"?: string | undefined;
1936
+ "interface-panel-surface"?: string | undefined;
1937
+ "interface-panel-box-shadow"?: string | undefined;
1938
+ "interface-panel-drop-shadow"?: string | undefined;
1939
+ "interface-panel-hover-surface"?: string | undefined;
1940
+ "interface-panel-selected-surface"?: string | undefined;
1941
+ "interface-button-hover-surface"?: string | undefined;
1942
+ };
1943
+ }, {
1944
+ node_slot: {
1945
+ CLIP?: string | undefined;
1946
+ CLIP_VISION?: string | undefined;
1947
+ CLIP_VISION_OUTPUT?: string | undefined;
1948
+ CONDITIONING?: string | undefined;
1949
+ CONTROL_NET?: string | undefined;
1950
+ GUIDER?: string | undefined;
1951
+ IMAGE?: string | undefined;
1952
+ LATENT?: string | undefined;
1953
+ MASK?: string | undefined;
1954
+ MODEL?: string | undefined;
1955
+ NOISE?: string | undefined;
1956
+ SAMPLER?: string | undefined;
1957
+ SIGMAS?: string | undefined;
1958
+ STYLE_MODEL?: string | undefined;
1959
+ VAE?: string | undefined;
1960
+ TAESD?: string | undefined;
1961
+ };
1962
+ litegraph_base: {
1963
+ BACKGROUND_IMAGE?: string | undefined;
1964
+ CLEAR_BACKGROUND_COLOR?: string | undefined;
1965
+ NODE_TITLE_COLOR?: string | undefined;
1966
+ NODE_SELECTED_TITLE_COLOR?: string | undefined;
1967
+ NODE_TEXT_SIZE?: number | undefined;
1968
+ NODE_TEXT_COLOR?: string | undefined;
1969
+ NODE_TEXT_HIGHLIGHT_COLOR?: string | undefined;
1970
+ NODE_SUBTEXT_SIZE?: number | undefined;
1971
+ NODE_DEFAULT_COLOR?: string | undefined;
1972
+ NODE_DEFAULT_BGCOLOR?: string | undefined;
1973
+ NODE_DEFAULT_BOXCOLOR?: string | undefined;
1974
+ NODE_DEFAULT_SHAPE?: string | RenderShape | undefined;
1975
+ NODE_BOX_OUTLINE_COLOR?: string | undefined;
1976
+ NODE_BYPASS_BGCOLOR?: string | undefined;
1977
+ NODE_ERROR_COLOUR?: string | undefined;
1978
+ DEFAULT_SHADOW_COLOR?: string | undefined;
1979
+ DEFAULT_GROUP_FONT?: number | undefined;
1980
+ WIDGET_BGCOLOR?: string | undefined;
1981
+ WIDGET_OUTLINE_COLOR?: string | undefined;
1982
+ WIDGET_TEXT_COLOR?: string | undefined;
1983
+ WIDGET_SECONDARY_TEXT_COLOR?: string | undefined;
1984
+ WIDGET_DISABLED_TEXT_COLOR?: string | undefined;
1985
+ LINK_COLOR?: string | undefined;
1986
+ EVENT_LINK_COLOR?: string | undefined;
1987
+ CONNECTING_LINK_COLOR?: string | undefined;
1988
+ BADGE_FG_COLOR?: string | undefined;
1989
+ BADGE_BG_COLOR?: string | undefined;
1990
+ };
1991
+ comfy_base: {
1992
+ "fg-color"?: string | undefined;
1993
+ "bg-color"?: string | undefined;
1994
+ "bg-img"?: string | undefined;
1995
+ "comfy-menu-bg"?: string | undefined;
1996
+ "comfy-menu-secondary-bg"?: string | undefined;
1997
+ "comfy-input-bg"?: string | undefined;
1998
+ "input-text"?: string | undefined;
1999
+ "descrip-text"?: string | undefined;
2000
+ "drag-text"?: string | undefined;
2001
+ "error-text"?: string | undefined;
2002
+ "border-color"?: string | undefined;
2003
+ "tr-even-bg-color"?: string | undefined;
2004
+ "tr-odd-bg-color"?: string | undefined;
2005
+ "content-bg"?: string | undefined;
2006
+ "content-fg"?: string | undefined;
2007
+ "content-hover-bg"?: string | undefined;
2008
+ "content-hover-fg"?: string | undefined;
2009
+ "bar-shadow"?: string | undefined;
2010
+ "contrast-mix-color"?: string | undefined;
2011
+ "interface-stroke"?: string | undefined;
2012
+ "interface-panel-surface"?: string | undefined;
2013
+ "interface-panel-box-shadow"?: string | undefined;
2014
+ "interface-panel-drop-shadow"?: string | undefined;
2015
+ "interface-panel-hover-surface"?: string | undefined;
2016
+ "interface-panel-selected-surface"?: string | undefined;
2017
+ "interface-button-hover-surface"?: string | undefined;
2018
+ };
2019
+ }>;
2020
+ light_theme: ZodOptional<ZodBoolean>;
2021
+ }, ZodTypeAny, "passthrough">> | undefined;
2022
+ 'Comfy.ConfirmClear'?: boolean | undefined;
2023
+ 'Comfy.DevMode'?: boolean | undefined;
2024
+ 'Comfy.UI.TabBarLayout'?: "Default" | "Integrated" | undefined;
2025
+ 'Comfy.Workflow.ShowMissingNodesWarning'?: boolean | undefined;
2026
+ 'Comfy.Workflow.ShowMissingModelsWarning'?: boolean | undefined;
2027
+ 'Comfy.Workflow.WarnBlueprintOverwrite'?: boolean | undefined;
2028
+ 'Comfy.DisableFloatRounding'?: boolean | undefined;
2029
+ 'Comfy.DisableSliders'?: boolean | undefined;
2030
+ 'Comfy.DOMClippingEnabled'?: boolean | undefined;
2031
+ 'Comfy.EditAttention.Delta'?: number | undefined;
2032
+ 'Comfy.EnableTooltips'?: boolean | undefined;
2033
+ 'Comfy.EnableWorkflowViewRestore'?: boolean | undefined;
2034
+ 'Comfy.FloatRoundingPrecision'?: number | undefined;
2035
+ 'Comfy.Graph.CanvasInfo'?: boolean | undefined;
2036
+ 'Comfy.Graph.CanvasMenu'?: boolean | undefined;
2037
+ 'Comfy.Graph.CtrlShiftZoom'?: boolean | undefined;
2038
+ 'Comfy.Graph.DeduplicateSubgraphNodeIds'?: boolean | undefined;
2039
+ 'Comfy.Graph.LiveSelection'?: boolean | undefined;
2040
+ 'Comfy.Graph.LinkMarkers'?: LinkMarkerShape | undefined;
2041
+ 'Comfy.Graph.ZoomSpeed'?: number | undefined;
2042
+ 'Comfy.Group.DoubleClickTitleToEdit'?: boolean | undefined;
2043
+ 'Comfy.GroupSelectedNodes.Padding'?: number | undefined;
2044
+ 'Comfy.Locale'?: string | undefined;
2045
+ 'Comfy.NodeLibrary.Bookmarks'?: string[] | undefined;
2046
+ 'Comfy.NodeLibrary.Bookmarks.V2'?: string[] | undefined;
2047
+ 'Comfy.NodeLibrary.BookmarksCustomization'?: Record<string, {
2048
+ color?: string | undefined;
2049
+ icon?: string | undefined;
2050
+ }> | undefined;
2051
+ 'Comfy.LinkRelease.Action'?: string | undefined;
2052
+ 'Comfy.LinkRelease.ActionShift'?: string | undefined;
2053
+ 'Comfy.ModelLibrary.AutoLoadAll'?: boolean | undefined;
2054
+ 'Comfy.ModelLibrary.NameFormat'?: "title" | "filename" | undefined;
2055
+ 'Comfy.NodeSearchBoxImpl.NodePreview'?: boolean | undefined;
2056
+ 'Comfy.NodeSearchBoxImpl'?: "default" | "simple" | undefined;
2057
+ 'Comfy.NodeSearchBoxImpl.ShowCategory'?: boolean | undefined;
2058
+ 'Comfy.NodeSearchBoxImpl.ShowIdName'?: boolean | undefined;
2059
+ 'Comfy.NodeSearchBoxImpl.ShowNodeFrequency'?: boolean | undefined;
2060
+ 'Comfy.NodeSuggestions.number'?: number | undefined;
2061
+ 'Comfy.Node.BypassAllLinksOnDelete'?: boolean | undefined;
2062
+ 'Comfy.Node.Opacity'?: number | undefined;
2063
+ 'Comfy.Node.MiddleClickRerouteNode'?: boolean | undefined;
2064
+ 'Comfy.Node.ShowDeprecated'?: boolean | undefined;
2065
+ 'Comfy.Node.ShowExperimental'?: boolean | undefined;
2066
+ 'Comfy.NodeReplacement.Enabled'?: boolean | undefined;
2067
+ 'Comfy.Pointer.ClickBufferTime'?: number | undefined;
2068
+ 'Comfy.Pointer.ClickDrift'?: number | undefined;
2069
+ 'Comfy.Pointer.DoubleClickTime'?: number | undefined;
2070
+ 'Comfy.PreviewFormat'?: string | undefined;
2071
+ 'Comfy.PromptFilename'?: boolean | undefined;
2072
+ 'Comfy.Sidebar.Location'?: "left" | "right" | undefined;
2073
+ 'Comfy.Sidebar.Size'?: "small" | "normal" | undefined;
2074
+ 'Comfy.Sidebar.UnifiedWidth'?: boolean | undefined;
2075
+ 'Comfy.Sidebar.Style'?: "floating" | "connected" | undefined;
2076
+ 'Comfy.SnapToGrid.GridSize'?: number | undefined;
2077
+ 'Comfy.TextareaWidget.FontSize'?: number | undefined;
2078
+ 'Comfy.TextareaWidget.Spellcheck'?: boolean | undefined;
2079
+ 'Comfy.UseNewMenu'?: "Disabled" | "Top" | undefined;
2080
+ 'Comfy.TreeExplorer.ItemPadding'?: number | undefined;
2081
+ 'Comfy.Validation.Workflows'?: boolean | undefined;
2082
+ 'Comfy.Workflow.SortNodeIdOnSave'?: boolean | undefined;
2083
+ 'Comfy.Execution.PreviewMethod'?: "none" | "default" | "auto" | "latent2rgb" | "taesd" | undefined;
2084
+ 'Comfy.Workflow.WorkflowTabsPosition'?: "Sidebar" | "Topbar" | undefined;
2085
+ 'Comfy.Node.DoubleClickTitleToEdit'?: boolean | undefined;
2086
+ 'Comfy.WidgetControlMode'?: "before" | "after" | undefined;
2087
+ 'Comfy.Window.UnloadConfirmation'?: boolean | undefined;
2088
+ 'Comfy.NodeBadge.NodeSourceBadgeMode'?: string | undefined;
2089
+ 'Comfy.NodeBadge.NodeIdBadgeMode'?: string | undefined;
2090
+ 'Comfy.NodeBadge.NodeLifeCycleBadgeMode'?: string | undefined;
2091
+ 'Comfy.NodeBadge.ShowApiPricing'?: boolean | undefined;
2092
+ 'Comfy.Notification.ShowVersionUpdates'?: boolean | undefined;
2093
+ 'Comfy.QueueButton.BatchCountLimit'?: number | undefined;
2094
+ 'Comfy.Queue.MaxHistoryItems'?: number | undefined;
2095
+ 'Comfy.Queue.History.Expanded'?: boolean | undefined;
2096
+ 'Comfy.Keybinding.UnsetBindings'?: {
2097
+ combo: {
2098
+ key: string;
2099
+ shift?: boolean | undefined;
2100
+ alt?: boolean | undefined;
2101
+ meta?: boolean | undefined;
2102
+ ctrl?: boolean | undefined;
2103
+ };
2104
+ commandId: string;
2105
+ targetElementId?: string | undefined;
2106
+ }[] | undefined;
2107
+ 'Comfy.Keybinding.NewBindings'?: {
2108
+ combo: {
2109
+ key: string;
2110
+ shift?: boolean | undefined;
2111
+ alt?: boolean | undefined;
2112
+ meta?: boolean | undefined;
2113
+ ctrl?: boolean | undefined;
2114
+ };
2115
+ commandId: string;
2116
+ targetElementId?: string | undefined;
2117
+ }[] | undefined;
2118
+ 'Comfy.Extension.Disabled'?: string[] | undefined;
2119
+ 'Comfy.LinkRenderMode'?: number | undefined;
2120
+ 'Comfy.Node.AutoSnapLinkToSlot'?: boolean | undefined;
2121
+ 'Comfy.Node.SnapHighlightsNode'?: boolean | undefined;
2122
+ 'Comfy.Server.ServerConfigValues'?: Record<string, any> | undefined;
2123
+ 'Comfy.Server.LaunchArgs'?: Record<string, string> | undefined;
2124
+ 'LiteGraph.Canvas.MaximumFps'?: number | undefined;
2125
+ 'Comfy.Workflow.ConfirmDelete'?: boolean | undefined;
2126
+ 'Comfy.Workflow.AutoSaveDelay'?: number | undefined;
2127
+ 'Comfy.Workflow.AutoSave'?: "off" | "after delay" | undefined;
2128
+ 'Comfy.RerouteBeta'?: boolean | undefined;
2129
+ 'LiteGraph.Canvas.MinFontSizeForLOD'?: number | undefined;
2130
+ 'Comfy.Canvas.SelectionToolbox'?: boolean | undefined;
2131
+ 'LiteGraph.Node.TooltipDelay'?: number | undefined;
2132
+ 'LiteGraph.ContextMenu.Scaling'?: boolean | undefined;
2133
+ 'LiteGraph.Reroute.SplineOffset'?: number | undefined;
2134
+ 'LiteGraph.Canvas.LowQualityRenderingZoomThreshold'?: number | undefined;
2135
+ 'Comfy.Toast.DisableReconnectingToast'?: boolean | undefined;
2136
+ 'Comfy.Workflow.Persist'?: boolean | undefined;
2137
+ 'Comfy.TutorialCompleted'?: boolean | undefined;
2138
+ 'Comfy.InstalledVersion'?: string | null | undefined;
2139
+ 'Comfy.Node.AllowImageSizeDraw'?: boolean | undefined;
2140
+ 'Comfy.Minimap.Visible'?: boolean | undefined;
2141
+ 'Comfy.Minimap.NodeColors'?: boolean | undefined;
2142
+ 'Comfy.Minimap.ShowLinks'?: boolean | undefined;
2143
+ 'Comfy.Minimap.ShowGroups'?: boolean | undefined;
2144
+ 'Comfy.Minimap.RenderBypassState'?: boolean | undefined;
2145
+ 'Comfy.Minimap.RenderErrorState'?: boolean | undefined;
2146
+ 'Comfy.Canvas.NavigationMode'?: string | undefined;
2147
+ 'Comfy.Canvas.LeftMouseClickBehavior'?: string | undefined;
2148
+ 'Comfy.Canvas.MouseWheelScroll'?: string | undefined;
2149
+ 'Comfy.VueNodes.Enabled'?: boolean | undefined;
2150
+ 'Comfy.VueNodes.AutoScaleLayout'?: boolean | undefined;
2151
+ 'Comfy.Assets.UseAssetAPI'?: boolean | undefined;
2152
+ 'Comfy.Queue.QPOV2'?: boolean | undefined;
2153
+ 'Comfy-Desktop.AutoUpdate'?: boolean | undefined;
2154
+ 'Comfy-Desktop.SendStatistics'?: boolean | undefined;
2155
+ 'Comfy-Desktop.WindowStyle'?: string | undefined;
2156
+ 'Comfy-Desktop.UV.PythonInstallMirror'?: string | undefined;
2157
+ 'Comfy-Desktop.UV.PypiInstallMirror'?: string | undefined;
2158
+ 'Comfy-Desktop.UV.TorchInstallMirror'?: string | undefined;
2159
+ 'Comfy.MaskEditor.BrushAdjustmentSpeed'?: number | undefined;
2160
+ 'Comfy.MaskEditor.UseDominantAxis'?: boolean | undefined;
2161
+ 'Comfy.Load3D.ShowGrid'?: boolean | undefined;
2162
+ 'Comfy.Load3D.BackgroundColor'?: string | undefined;
2163
+ 'Comfy.Load3D.LightIntensity'?: number | undefined;
2164
+ 'Comfy.Load3D.LightIntensityMaximum'?: number | undefined;
2165
+ 'Comfy.Load3D.LightIntensityMinimum'?: number | undefined;
2166
+ 'Comfy.Load3D.LightAdjustmentIncrement'?: number | undefined;
2167
+ 'Comfy.Load3D.CameraType'?: "perspective" | "orthographic" | undefined;
2168
+ 'Comfy.Load3D.3DViewerEnable'?: boolean | undefined;
2169
+ 'Comfy.Load3D.PLYEngine'?: "threejs" | "fastply" | "sparkjs" | undefined;
2170
+ 'Comfy.Memory.AllowManualUnload'?: boolean | undefined;
2171
+ 'pysssss.SnapToGrid'?: boolean | undefined;
2172
+ 'VHS.AdvancedPreviews'?: string | undefined;
2173
+ 'Comfy.Release.Version'?: string | undefined;
2174
+ 'Comfy.Release.Status'?: "skipped" | "changelog seen" | "what's new seen" | undefined;
2175
+ 'Comfy.Release.Timestamp'?: number | undefined;
2176
+ 'Comfy.Templates.SelectedModels'?: string[] | undefined;
2177
+ 'Comfy.Templates.SelectedUseCases'?: string[] | undefined;
2178
+ 'Comfy.Templates.SelectedRunsOn'?: string[] | undefined;
2179
+ 'Comfy.Templates.SortBy'?: "default" | "recommended" | "alphabetical" | "popular" | "newest" | "vram-low-to-high" | "model-size-low-to-high" | undefined;
2180
+ 'LiteGraph.Node.DefaultPadding'?: boolean | undefined;
2181
+ 'LiteGraph.Pointer.TrackpadGestures'?: boolean | undefined;
2182
+ 'Comfy.VersionCompatibility.DisableWarnings'?: boolean | undefined;
2183
+ 'Comfy.RightSidePanel.IsOpen'?: boolean | undefined;
2184
+ 'Comfy.Node.AlwaysShowAdvancedWidgets'?: boolean | undefined;
2185
+ 'Comfy.Canvas.BackgroundImage'?: string | undefined;
2186
+ 'test.setting'?: any;
2187
+ 'main.sub.setting.name'?: any;
2188
+ 'single.setting'?: any;
2189
+ };
1587
2190
  /**
1588
2191
  * @deprecated Use `settingStore.settingsById` instead.
1589
2192
  */
@@ -1751,7 +2354,10 @@ export declare class ComfyApp {
1751
2354
  * - Width and height are then updated, clamped to min/max values
1752
2355
  */
1753
2356
  declare class ConstrainedSize {
1754
- #private;
2357
+ private _width;
2358
+ private _height;
2359
+ private _desiredWidth;
2360
+ private _desiredHeight;
1755
2361
  minWidth: number;
1756
2362
  minHeight: number;
1757
2363
  maxWidth: number;
@@ -1929,6 +2535,8 @@ export declare class ComfyApp {
1929
2535
  destroy?: () => void;
1930
2536
  }
1931
2537
 
2538
+ declare type CustomNodesI18n = z.infer<typeof zCustomNodesI18n>;
2539
+
1932
2540
  declare type CustomSidebarTabExtension = BaseSidebarTabExtension & CustomExtension;
1933
2541
 
1934
2542
  declare interface DefaultConnectionColors {
@@ -1991,7 +2599,6 @@ export declare class ComfyApp {
1991
2599
  }
1992
2600
 
1993
2601
  declare class DragAndScale {
1994
- #private;
1995
2602
  /**
1996
2603
  * The state of this DragAndScale instance.
1997
2604
  *
@@ -2016,6 +2623,11 @@ export declare class ComfyApp {
2016
2623
  get scale(): number;
2017
2624
  set scale(value: number);
2018
2625
  constructor(element: HTMLCanvasElement);
2626
+ /**
2627
+ * Returns `true` if the current state has changed from the previous state.
2628
+ * @returns `true` if the current state has changed from the previous state, otherwise `false`.
2629
+ */
2630
+ private _stateHasChanged;
2019
2631
  computeVisibleArea(viewport: Rect | undefined): void;
2020
2632
  toCanvasContext(ctx: CanvasRenderingContext2D): void;
2021
2633
  convertOffsetToCanvas(pos: Point): Point;
@@ -2118,7 +2730,7 @@ export declare class ComfyApp {
2118
2730
  }
2119
2731
 
2120
2732
  declare type EventListeners<T> = {
2121
- readonly [K in keyof T]: ((this: EventTarget, ev: CustomEvent<T[K]>) => any) | EventListenerObject | null;
2733
+ readonly [K in keyof T]: ((this: EventTarget, ev: CustomEvent<T[K]>) => unknown) | EventListenerObject | null;
2122
2734
  };
2123
2735
 
2124
2736
  /**
@@ -2131,7 +2743,6 @@ export declare class ComfyApp {
2131
2743
  * @remarks This is the class that is used to create the data transfer objects for executable nodes.
2132
2744
  */
2133
2745
  declare class ExecutableNodeDTO implements ExecutableLGraphNode {
2134
- #private;
2135
2746
  /** The actual node that this DTO wraps. */
2136
2747
  readonly node: LGraphNode | SubgraphNode;
2137
2748
  /** A list of subgraph instance node IDs from the root graph to the containing instance. @see {@link id} */
@@ -2140,7 +2751,7 @@ export declare class ComfyApp {
2140
2751
  readonly nodesByExecutionId: Map<ExecutionId, ExecutableLGraphNode>;
2141
2752
  /** The actual subgraph instance that contains this node, otherwise undefined. */
2142
2753
  readonly subgraphNode?: SubgraphNode | undefined;
2143
- applyToGraph?(...args: CallbackParams<typeof ExecutableNodeDTO.node.applyToGraph>): CallbackReturn<typeof ExecutableNodeDTO.node.applyToGraph>;
2754
+ applyToGraph?(...args: Parameters<NonNullable<typeof ExecutableNodeDTO.node.applyToGraph>>): ReturnType<NonNullable<typeof ExecutableNodeDTO.node.applyToGraph>>;
2144
2755
  /** The graph that this node is a part of. */
2145
2756
  readonly graph: LGraph | Subgraph;
2146
2757
  inputs: {
@@ -2148,6 +2759,8 @@ export declare class ComfyApp {
2148
2759
  name: string;
2149
2760
  type: ISlotType;
2150
2761
  }[];
2762
+ /** Backing field for {@link id}. */
2763
+ private _id;
2151
2764
  /**
2152
2765
  * The path to the actual node through subgraph instances, represented as a list of all subgraph node IDs (instances),
2153
2766
  * followed by the actual original node ID within the subgraph. Each segment is separated by `:`.
@@ -2193,6 +2806,21 @@ export declare class ComfyApp {
2193
2806
  * @returns The node and the origin ID / slot index of the output.
2194
2807
  */
2195
2808
  resolveOutput(slot: number, type: ISlotType, visited: Set<string>): ResolvedInput | undefined;
2809
+ /**
2810
+ * Finds the index of the input slot on this node that matches the given output {@link slot} index.
2811
+ * Used when bypassing nodes.
2812
+ * @param slot The output slot index on this node
2813
+ * @param type The type of the final target input (so type list matches are accurate)
2814
+ * @returns The index of the input slot on this node, otherwise `-1`.
2815
+ */
2816
+ private _getBypassSlotIndex;
2817
+ /**
2818
+ * Resolves the link inside a subgraph node, from the subgraph IO node to the node inside the subgraph.
2819
+ * @param slot The slot index of the output on the subgraph node.
2820
+ * @param visited A set of unique IDs to guard against infinite recursion. See {@link resolveInput}.
2821
+ * @returns A DTO for the node, and the origin ID / slot index of the output.
2822
+ */
2823
+ private _resolveSubgraphOutput;
2196
2824
  }
2197
2825
 
2198
2826
  declare type ExecutedWsMessage = z.infer<typeof zExecutedWsMessage>;
@@ -2377,23 +3005,48 @@ export declare class ComfyApp {
2377
3005
  name: string;
2378
3006
  info: {
2379
3007
  node_pack: string;
3008
+ category?: string;
3009
+ search_aliases?: string[];
2380
3010
  };
2381
3011
  data: string | Promise<string>;
2382
3012
  };
2383
3013
 
3014
+ /** Options for {@link LGraph.add} method. */
3015
+ declare interface GraphAddOptions {
3016
+ /** If true, skip recomputing execution order after adding the node. */
3017
+ skipComputeOrder?: boolean;
3018
+ /** If true, the node will be semi-transparent and follow the cursor until placed or cancelled. */
3019
+ ghost?: boolean;
3020
+ /** Mouse event for ghost placement. Used to position node under cursor. */
3021
+ dragEvent?: MouseEvent;
3022
+ }
3023
+
2384
3024
  /** Internal; simplifies type definitions. */
2385
3025
  declare type GraphOrSubgraph = LGraph | Subgraph;
2386
3026
 
3027
+ declare interface GroupNodeConfigEntry {
3028
+ input?: Record<string, {
3029
+ name?: string;
3030
+ visible?: boolean;
3031
+ }>;
3032
+ output?: Record<number, {
3033
+ name?: string;
3034
+ visible?: boolean;
3035
+ }>;
3036
+ }
3037
+
2387
3038
  declare interface GroupNodeWorkflowData {
2388
3039
  external: (number | string)[][];
2389
3040
  links: SerialisedLLinkArray[];
2390
3041
  nodes: {
2391
3042
  index?: number;
2392
3043
  type?: string;
3044
+ title?: string;
2393
3045
  inputs?: unknown[];
2394
3046
  outputs?: unknown[];
3047
+ widgets_values?: unknown[];
2395
3048
  }[];
2396
- config?: Record<number, unknown>;
3049
+ config?: Record<number, GroupNodeConfigEntry>;
2397
3050
  }
2398
3051
 
2399
3052
  /**
@@ -2840,6 +3493,8 @@ export declare class ComfyApp {
2840
3493
  collapsed?: boolean;
2841
3494
  /** Configuration setting for {@link LGraphNode.connectInputToOutput} */
2842
3495
  keepAllLinksOnBypass?: boolean;
3496
+ /** Node is in ghost placement mode (semi-transparent, following cursor) */
3497
+ ghost?: boolean;
2843
3498
  }
2844
3499
 
2845
3500
  declare interface INodeInputSlot extends INodeSlot {
@@ -2927,7 +3582,6 @@ export declare class ComfyApp {
2927
3582
  * ```
2928
3583
  */
2929
3584
  declare class InputIndicators implements Disposable {
2930
- #private;
2931
3585
  canvas: LGraphCanvas;
2932
3586
  radius: number;
2933
3587
  startAngle: number;
@@ -2950,14 +3604,29 @@ export declare class ComfyApp {
2950
3604
  y: number;
2951
3605
  controller?: AbortController;
2952
3606
  constructor(canvas: LGraphCanvas);
3607
+ private _onPointerDownOrMove;
2953
3608
  onPointerDownOrMove(e: MouseEvent): void;
3609
+ private _onPointerUp;
2954
3610
  onPointerUp(): void;
3611
+ private _onKeyDownOrUp;
2955
3612
  onKeyDownOrUp(e: KeyboardEvent): void;
2956
3613
  draw(): void;
2957
3614
  dispose(): void;
2958
3615
  [Symbol.dispose](): void;
2959
3616
  }
2960
3617
 
3618
+ declare type InputMap = InputMapOldId | InputMapSetValue;
3619
+
3620
+ declare interface InputMapOldId {
3621
+ new_id: string;
3622
+ old_id: string;
3623
+ }
3624
+
3625
+ declare interface InputMapSetValue {
3626
+ new_id: string;
3627
+ set_value: unknown;
3628
+ }
3629
+
2961
3630
  export declare type InputSpec = z.infer<typeof zInputSpec>;
2962
3631
 
2963
3632
  /** Any widget that uses a numeric backing */
@@ -3025,7 +3694,7 @@ export declare class ComfyApp {
3025
3694
  links: SerialisedLLinkArray[];
3026
3695
  floatingLinks?: SerialisableLLink[];
3027
3696
  groups: ISerialisedGroup[];
3028
- version: typeof LiteGraph.VERSION;
3697
+ version: typeof LiteGraph_2.VERSION;
3029
3698
  extra?: LGraphExtra;
3030
3699
  }
3031
3700
 
@@ -3222,6 +3891,12 @@ export declare class ComfyApp {
3222
3891
  getOptionLabel?: (value?: string | null) => string;
3223
3892
  callback?: IWidget['callback'];
3224
3893
  iconClass?: string;
3894
+ disabled?: boolean;
3895
+ useGrouping?: boolean;
3896
+ placeholder?: string;
3897
+ showThumbnails?: boolean;
3898
+ showItemNavigators?: boolean;
3899
+ hidden?: boolean;
3225
3900
  }
3226
3901
 
3227
3902
  declare interface IWidgetSliderOptions extends IWidgetOptions<number[]> {
@@ -3295,10 +3970,10 @@ export declare class ComfyApp {
3295
3970
  * + onNodeRemoved: when a node inside this graph is removed
3296
3971
  */
3297
3972
  declare class LGraph implements LinkNetwork, BaseLGraph, Serialisable<SerialisableGraph> {
3298
- #private;
3299
3973
  static serialisedSchemaVersion: 1;
3300
3974
  static STATUS_STOPPED: number;
3301
3975
  static STATUS_RUNNING: number;
3976
+ static deduplicateSubgraphIds: boolean;
3302
3977
  /** List of LGraph properties that are manually handled by {@link LGraph.configure}. */
3303
3978
  static readonly ConfigureProperties: Set<string>;
3304
3979
  id: UUID;
@@ -3320,7 +3995,9 @@ export declare class ComfyApp {
3320
3995
  links: Map<LinkId, LLink> & Record<LinkId, LLink>;
3321
3996
  list_of_graphcanvas: LGraphCanvas[] | null;
3322
3997
  status: number;
3323
- state: LGraphState;
3998
+ private _state;
3999
+ get state(): LGraphState;
4000
+ set state(value: LGraphState);
3324
4001
  readonly events: CustomEventTarget<LGraphEventMap, "configuring" | "configured" | "subgraph-created" | "convert-to-subgraph" | "open-subgraph">;
3325
4002
  readonly _subgraphs: Map<UUID, Subgraph>;
3326
4003
  _nodes: (LGraphNode | SubgraphNode)[];
@@ -3357,6 +4034,8 @@ export declare class ComfyApp {
3357
4034
  get empty(): boolean;
3358
4035
  /** @returns All items on the canvas that can be selected */
3359
4036
  positionableItems(): Generator<LGraphNode | LGraphGroup | Reroute>;
4037
+ /** Internal only. Not required for serialisation; calculated on deserialise. */
4038
+ private _lastFloatingLinkId;
3360
4039
  private readonly floatingLinksInternal;
3361
4040
  get floatingLinks(): ReadonlyMap<LinkId, LLink>;
3362
4041
  private readonly reroutesInternal;
@@ -3470,8 +4149,16 @@ export declare class ComfyApp {
3470
4149
  /**
3471
4150
  * Adds a new node instance to this graph
3472
4151
  * @param node the instance of the node
4152
+ * @param options Additional options for adding the node
4153
+ */
4154
+ add(node: LGraphNode | LGraphGroup, options?: GraphAddOptions): LGraphNode | null | undefined;
4155
+ /**
4156
+ * Adds a new node instance to this graph
4157
+ * @param node the instance of the node
4158
+ * @param skipComputeOrder If true, skip recomputing execution order
4159
+ * @deprecated Use options object instead
3473
4160
  */
3474
- add(node: LGraphNode | LGraphGroup, skip_compute_order?: boolean): LGraphNode | null | undefined;
4161
+ add(node: LGraphNode | LGraphGroup, skipComputeOrder?: boolean): LGraphNode | null | undefined;
3475
4162
  /**
3476
4163
  * Removes a node from the graph
3477
4164
  * @param node the instance of the node
@@ -3640,6 +4327,13 @@ export declare class ComfyApp {
3640
4327
  serialize(option?: {
3641
4328
  sortNodes: boolean;
3642
4329
  }): ISerialisedGraph;
4330
+ /**
4331
+ * Custom JSON serialization to prevent circular reference errors.
4332
+ * Called automatically by JSON.stringify().
4333
+ */
4334
+ toJSON(): ISerialisedGraph;
4335
+ /** @returns The drag and scale state of the first attached canvas, otherwise `undefined`. */
4336
+ private _getDragAndScale;
3643
4337
  /**
3644
4338
  * Prepares a shallow copy of this object for immediate serialisation or structuredCloning.
3645
4339
  * The return value should be discarded immediately.
@@ -3659,12 +4353,20 @@ export declare class ComfyApp {
3659
4353
  * adding the configuration.
3660
4354
  */
3661
4355
  configure(data: ISerialisedGraph | SerialisableGraph, keep_old?: boolean): boolean | undefined;
4356
+ /**
4357
+ * Ensures all node IDs are globally unique across the root graph and all
4358
+ * subgraphs. Reassigns any colliding IDs found in subgraphs, preserving
4359
+ * root graph IDs as canonical. Updates link references (`origin_id`,
4360
+ * `target_id`) within the affected graph to match the new node IDs.
4361
+ */
4362
+ ensureGlobalIdUniqueness(reservedNodeIds?: Iterable<number>): void;
4363
+ private _canvas?;
3662
4364
  get primaryCanvas(): LGraphCanvas | undefined;
3663
4365
  set primaryCanvas(canvas: LGraphCanvas);
3664
4366
  load(url: string | Blob | URL | File, callback: () => void): void;
3665
4367
  }
3666
4368
 
3667
- declare class LGraphBadge {
4369
+ declare class LGraphBadge_2 {
3668
4370
  text: string;
3669
4371
  fgColor: string;
3670
4372
  bgColor: string;
@@ -3673,9 +4375,12 @@ export declare class ComfyApp {
3673
4375
  height: number;
3674
4376
  cornerRadius: number;
3675
4377
  icon?: LGraphIcon;
4378
+ onClick?: (e: MouseEvent) => void;
3676
4379
  xOffset: number;
3677
4380
  yOffset: number;
3678
- constructor({ text, fgColor, bgColor, fontSize, padding, height, cornerRadius, iconOptions, xOffset, yOffset }: LGraphBadgeOptions);
4381
+ readonly _boundingRect: [number, number, number, number];
4382
+ get boundingRect(): ReadOnlyRect;
4383
+ constructor({ text, fgColor, bgColor, fontSize, padding, height, cornerRadius, iconOptions, onClick, xOffset, yOffset }: LGraphBadgeOptions);
3679
4384
  get visible(): boolean;
3680
4385
  getWidth(ctx: CanvasRenderingContext2D): number;
3681
4386
  draw(ctx: CanvasRenderingContext2D, x: number, y: number): void;
@@ -3690,11 +4395,12 @@ export declare class ComfyApp {
3690
4395
  height?: number;
3691
4396
  cornerRadius?: number;
3692
4397
  iconOptions?: LGraphIconOptions;
4398
+ onClick?: (e: MouseEvent) => void;
3693
4399
  xOffset?: number;
3694
4400
  yOffset?: number;
3695
4401
  }
3696
4402
 
3697
- declare class LGraphButton extends LGraphBadge {
4403
+ declare class LGraphButton extends LGraphBadge_2 {
3698
4404
  name?: string;
3699
4405
  _last_area: Rectangle;
3700
4406
  constructor(options: LGraphButtonOptions);
@@ -3718,7 +4424,6 @@ export declare class ComfyApp {
3718
4424
  * Valid callbacks are: onNodeSelected, onNodeDeselected, onShowNodePanel, onNodeDblClicked
3719
4425
  */
3720
4426
  declare class LGraphCanvas implements CustomEventDispatcher<LGraphCanvasEventMap> {
3721
- #private;
3722
4427
  static DEFAULT_BACKGROUND_IMAGE: string;
3723
4428
  static DEFAULT_EVENT_LINK_COLOR: string;
3724
4429
  /** Link type to colour dictionary. */
@@ -3733,6 +4438,7 @@ export declare class ComfyApp {
3733
4438
  * Implemented as a POCO that can be proxied without side-effects.
3734
4439
  */
3735
4440
  state: LGraphCanvasState;
4441
+ private _subgraph?;
3736
4442
  get subgraph(): Subgraph | undefined;
3737
4443
  set subgraph(value: Subgraph | undefined);
3738
4444
  /**
@@ -3743,6 +4449,7 @@ export declare class ComfyApp {
3743
4449
  dispatch<T extends keyof NeverNever<LGraphCanvasEventMap>>(type: T, detail: LGraphCanvasEventMap[T]): boolean;
3744
4450
  dispatch<T extends keyof PickNevers<LGraphCanvasEventMap>>(type: T): boolean;
3745
4451
  dispatchEvent<TEvent extends keyof LGraphCanvasEventMap>(type: TEvent, detail: LGraphCanvasEventMap[TEvent]): void;
4452
+ private _updateCursorStyle;
3746
4453
  private _previously_dragging_canvas;
3747
4454
  /** @deprecated @inheritdoc {@link LGraphCanvasState.readOnly} */
3748
4455
  get read_only(): boolean;
@@ -3763,6 +4470,7 @@ export declare class ComfyApp {
3763
4470
  */
3764
4471
  get title_text_font(): string;
3765
4472
  get inner_text_font(): string;
4473
+ private _maximumFrameGap;
3766
4474
  /** Maximum frames per second to render. 0: unlimited. Default: 0 */
3767
4475
  get maximumFps(): number;
3768
4476
  set maximumFps(value: number);
@@ -3895,9 +4603,15 @@ export declare class ComfyApp {
3895
4603
  selected_group: LGraphGroup | null;
3896
4604
  /** The nodes that are currently visible on the canvas. */
3897
4605
  visible_nodes: LGraphNode[];
4606
+ /**
4607
+ * The IDs of the nodes that are currently visible on the canvas. More
4608
+ * performant than {@link visible_nodes} for visibility checks.
4609
+ */
4610
+ private _visible_node_ids;
3898
4611
  node_over?: LGraphNode;
3899
4612
  node_capturing_input?: LGraphNode | null;
3900
4613
  highlighted_links: Dictionary<boolean>;
4614
+ private _visibleReroutes;
3901
4615
  dirty_canvas: boolean;
3902
4616
  dirty_bgcanvas: boolean;
3903
4617
  /** A map of nodes that require selective-redraw */
@@ -3911,6 +4625,8 @@ export declare class ComfyApp {
3911
4625
  get _graph(): LGraph | Subgraph;
3912
4626
  canvas: HTMLCanvasElement & ICustomEventTarget<LGraphCanvasEventMap>;
3913
4627
  bgcanvas: HTMLCanvasElement;
4628
+ overlayCanvas: HTMLCanvasElement | null;
4629
+ overlayCtx: CanvasRenderingContext2D | null;
3914
4630
  ctx: CanvasRenderingContext2D;
3915
4631
  _events_binded?: boolean;
3916
4632
  _mousedown_callback?(e: PointerEvent): void;
@@ -3948,10 +4664,16 @@ export declare class ComfyApp {
3948
4664
  SELECTED_NODE?: LGraphNode;
3949
4665
  /** @deprecated Panels */
3950
4666
  NODEPANEL_IS_OPEN?: boolean;
4667
+ /** Once per frame check of snap to grid value. @todo Update on change. */
4668
+ private _snapToGrid?;
4669
+ /** Set on keydown, keyup. @todo */
4670
+ private _shiftDown;
3951
4671
  /** Link rendering adapter for litegraph-to-canvas integration */
3952
4672
  linkRenderer: LitegraphLinkAdapter | null;
3953
4673
  /** If true, enable drag zoom. Ctrl+Shift+Drag Up/Down: zoom canvas. */
3954
4674
  dragZoomEnabled: boolean;
4675
+ /** The start position of the drag zoom and original read-only state. */
4676
+ private _dragZoomStart;
3955
4677
  /** If true, enable live selection during drag. Nodes are selected/deselected in real-time. */
3956
4678
  liveSelection: boolean;
3957
4679
  getMenuOptions?(): IContextMenuValue<string>[];
@@ -4023,7 +4745,7 @@ export declare class ComfyApp {
4023
4745
  static onMenuNodeMode(_value: IContextMenuValue, _options: IContextMenuOptions, e: MouseEvent, menu: ContextMenu, node: LGraphNode): boolean;
4024
4746
  /** @param value Parameter is never used */
4025
4747
  static onMenuNodeColors(value: IContextMenuValue<string | null>, _options: IContextMenuOptions, e: MouseEvent, menu: ContextMenu<string | null>, node: LGraphNode): boolean;
4026
- static onMenuNodeShapes(_value: IContextMenuValue<(typeof LiteGraph.VALID_SHAPES)[number]>, _options: IContextMenuOptions<(typeof LiteGraph.VALID_SHAPES)[number]>, e: MouseEvent, menu?: ContextMenu<(typeof LiteGraph.VALID_SHAPES)[number]>, node?: LGraphNode): boolean;
4748
+ static onMenuNodeShapes(_value: IContextMenuValue<(typeof LiteGraph_2.VALID_SHAPES)[number]>, _options: IContextMenuOptions<(typeof LiteGraph_2.VALID_SHAPES)[number]>, e: MouseEvent, menu?: ContextMenu<(typeof LiteGraph_2.VALID_SHAPES)[number]>, node?: LGraphNode): boolean;
4027
4749
  static onMenuNodeRemove(): void;
4028
4750
  static onMenuNodeClone(_value: IContextMenuValue, _options: IContextMenuOptions, _e: MouseEvent, _menu: ContextMenu, node: LGraphNode): void;
4029
4751
  static cloneNodes(nodes: Positionable[]): ClipboardPasteResult | undefined;
@@ -4041,6 +4763,13 @@ export declare class ComfyApp {
4041
4763
  * @returns the visually active graph (in case there are more in the stack)
4042
4764
  */
4043
4765
  getCurrentGraph(): LGraph | null;
4766
+ /**
4767
+ * Finds the canvas if required, throwing on failure.
4768
+ * @param canvas Canvas element, or its element ID
4769
+ * @returns The canvas element
4770
+ * @throws If {@link canvas} is an element ID that does not belong to a valid HTML canvas element
4771
+ */
4772
+ private _validateCanvas;
4044
4773
  /**
4045
4774
  * Sets the current HTML canvas element.
4046
4775
  * Calls bindEvents to add input event listeners, and (re)creates the background canvas.
@@ -4068,6 +4797,9 @@ export declare class ComfyApp {
4068
4797
  * @param bgcanvas If true, mark the background canvas as dirty (background, groups, links). Default: false
4069
4798
  */
4070
4799
  setDirty(fgcanvas: boolean, bgcanvas?: boolean): void;
4800
+ /** Marks the entire canvas as dirty. */
4801
+ private _dirty;
4802
+ private _linkConnectorDrop;
4071
4803
  /**
4072
4804
  * Used to attach the canvas in a popup
4073
4805
  * @returns returns the window where the canvas is attached (the DOM root node)
@@ -4104,11 +4836,72 @@ export declare class ComfyApp {
4104
4836
  */
4105
4837
  updateMouseOverNodes(node: LGraphNode | null, e: CanvasPointerEvent): void;
4106
4838
  processMouseDown(e: MouseEvent): void;
4839
+ /**
4840
+ * Returns the first matching positionable item at the given co-ordinates.
4841
+ *
4842
+ * Order of preference:
4843
+ * - Subgraph IO Nodes
4844
+ * - Reroutes
4845
+ * - Group titlebars
4846
+ * @param x The x coordinate in canvas space
4847
+ * @param y The y coordinate in canvas space
4848
+ * @returns The positionable item or undefined
4849
+ */
4850
+ private _getPositionableOnPos;
4851
+ private _processPrimaryButton;
4852
+ private _setupNodeSelectionDrag;
4853
+ /**
4854
+ * Processes a pointerdown event inside the bounds of a node. Part of {@link processMouseDown}.
4855
+ * @param e The pointerdown event
4856
+ * @param ctrlOrMeta Ctrl or meta key is pressed
4857
+ * @param node The node to process a click event for
4858
+ */
4859
+ private _processNodeClick;
4107
4860
  processWidgetClick(e: CanvasPointerEvent, node: LGraphNode, widget: IBaseWidget, pointer?: CanvasPointer): void;
4861
+ /**
4862
+ * Pointer middle button click processing. Part of {@link processMouseDown}.
4863
+ * @param e The pointerdown event
4864
+ * @param node The node to process a click event for
4865
+ */
4866
+ private _processMiddleButton;
4867
+ private _processDragZoom;
4868
+ private _finishDragZoom;
4108
4869
  /**
4109
4870
  * Called when a mouse move event has to be processed
4110
4871
  */
4111
4872
  processMouseMove(e: PointerEvent): void;
4873
+ /**
4874
+ * Updates the hover / snap state of all visible reroutes.
4875
+ * @returns The original value of {@link underPointer}, with any found reroute items added.
4876
+ */
4877
+ private _updateReroutes;
4878
+ /**
4879
+ * Start dragging an item, optionally including all other selected items.
4880
+ *
4881
+ * ** This function sets the {@link CanvasPointer.finally}() callback. **
4882
+ * @param item The item that the drag event started on
4883
+ * @param pointer The pointer event that initiated the drag, e.g. pointerdown
4884
+ * @param sticky If `true`, the item is added to the selection - see {@link processSelect}
4885
+ */
4886
+ private _startDraggingItems;
4887
+ /**
4888
+ * Handles shared clean up and placement after items have been dragged.
4889
+ * @param e The event that completed the drag, e.g. pointerup, pointermove
4890
+ */
4891
+ private _processDraggedItems;
4892
+ /**
4893
+ * Starts ghost placement mode for a node.
4894
+ * The node will be semi-transparent and follow the cursor until the user
4895
+ * clicks to place it, or presses Escape/right-clicks to cancel.
4896
+ * @param node The node to place
4897
+ * @param dragEvent Optional mouse event for positioning under cursor
4898
+ */
4899
+ startGhostPlacement(node: LGraphNode, dragEvent?: MouseEvent): void;
4900
+ /**
4901
+ * Finalizes ghost placement mode.
4902
+ * @param cancelled If true, the node is removed; otherwise it's placed
4903
+ */
4904
+ finalizeGhostPlacement(cancelled: boolean): void;
4112
4905
  /**
4113
4906
  * Called when a mouse up event has to be processed
4114
4907
  */
@@ -4123,6 +4916,7 @@ export declare class ComfyApp {
4123
4916
  * Called when a mouse wheel event has to be processed
4124
4917
  */
4125
4918
  processMouseWheel(e: WheelEvent): void;
4919
+ private _noItemsSelected;
4126
4920
  /**
4127
4921
  * process a key event
4128
4922
  */
@@ -4146,6 +4940,18 @@ export declare class ComfyApp {
4146
4940
  _deserializeItems(parsed: ClipboardItems_2, options: IPasteFromClipboardOptions): ClipboardPasteResult | undefined;
4147
4941
  pasteFromClipboard(options?: IPasteFromClipboardOptions): void;
4148
4942
  processNodeDblClicked(n: LGraphNode): void;
4943
+ /**
4944
+ * Normalizes a drag rectangle to have positive width and height.
4945
+ * @param dragRect The drag rectangle to normalize (modified in place)
4946
+ * @returns The normalized rectangle
4947
+ */
4948
+ private _normalizeDragRect;
4949
+ /**
4950
+ * Gets all positionable items that overlap with the given rectangle.
4951
+ * @param rect The rectangle to check against
4952
+ * @returns Set of positionable items that overlap with the rectangle
4953
+ */
4954
+ private _getItemsInRect;
4149
4955
  /**
4150
4956
  * Handles live selection updates during drag. Called on each pointer move.
4151
4957
  * @param e The pointer move event
@@ -4157,6 +4963,12 @@ export declare class ComfyApp {
4157
4963
  * Finalizes the live selection when drag ends.
4158
4964
  */
4159
4965
  private finalizeLiveSelect;
4966
+ /**
4967
+ * Handles multi-select when drag ends (classic mode).
4968
+ * @param e The pointer up event
4969
+ * @param dragRect The drag rectangle
4970
+ */
4971
+ private _handleMultiSelect;
4160
4972
  /**
4161
4973
  * Determines whether to select or deselect an item that has received a pointer event. Will deselect other nodes if
4162
4974
  * @param item Canvas item to select/deselect
@@ -4262,6 +5074,18 @@ export declare class ComfyApp {
4262
5074
  * draws the front canvas (the one containing all the nodes)
4263
5075
  */
4264
5076
  drawFrontCanvas(): void;
5077
+ private _getLinkCentreOnPos;
5078
+ private _drawConnectingLinks;
5079
+ private _drawLinkTooltip;
5080
+ private _drawOverlayLinks;
5081
+ /** Get the target snap / highlight point in graph space */
5082
+ private _getHighlightPosition;
5083
+ /**
5084
+ * Renders indicators showing where a link will connect if released.
5085
+ * Partial border over target node and a highlight over the slot itself.
5086
+ * @param ctx Canvas 2D context
5087
+ */
5088
+ private _renderSnapHighlight;
4265
5089
  /**
4266
5090
  * draws some useful stats in the corner of the canvas
4267
5091
  */
@@ -4307,6 +5131,8 @@ export declare class ComfyApp {
4307
5131
  drawSnapGuide(ctx: CanvasRenderingContext2D, item: Positionable, shape?: RenderShape): void;
4308
5132
  drawConnections(ctx: CanvasRenderingContext2D): void;
4309
5133
  private getNodeModeAlpha;
5134
+ private _renderFloatingLinks;
5135
+ private _renderAllLinkSegments;
4310
5136
  /**
4311
5137
  * Build LinkRenderContext from canvas properties
4312
5138
  * Helper method for using LitegraphLinkAdapter
@@ -4407,6 +5233,16 @@ export declare class ComfyApp {
4407
5233
  private moveGroupChildren;
4408
5234
  moveChildNodesInGroupVueMode(allItems: Set<Positionable>, deltaX: number, deltaY: number): void;
4409
5235
  repositionNodesVueMode(nodesToReposition: NewNodePosition[]): void;
5236
+ /**
5237
+ * Custom JSON serialization to prevent circular reference errors.
5238
+ * LGraphCanvas should not be serialized directly - serialize the graph instead.
5239
+ */
5240
+ toJSON(): {
5241
+ ds: {
5242
+ scale: number;
5243
+ offset: [number, number];
5244
+ };
5245
+ };
4410
5246
  }
4411
5247
 
4412
5248
  declare interface LGraphCanvasEventMap {
@@ -4470,6 +5306,8 @@ export declare class ComfyApp {
4470
5306
  * Downstream consumers may reset to false once actioned.
4471
5307
  */
4472
5308
  selectionChanged: boolean;
5309
+ /** ID of node currently in ghost placement mode (semi-transparent, following cursor). */
5310
+ ghostNodeId: NodeId | null;
4473
5311
  }
4474
5312
 
4475
5313
  /** Configuration used by {@link LGraph} `config`. */
@@ -4592,7 +5430,13 @@ export declare class ComfyApp {
4592
5430
  move(deltaX: number, deltaY: number, skipChildren?: boolean): void;
4593
5431
  /** @inheritdoc */
4594
5432
  snapToGrid(snapTo: number): boolean;
4595
- recomputeInsideNodes(): void;
5433
+ /**
5434
+ * Recomputes which items (nodes, reroutes, nested groups) are inside this group.
5435
+ * Recursively processes nested groups to ensure their children are also computed.
5436
+ * @param maxDepth Maximum recursion depth for nested groups. Use 1 to skip nested group computation.
5437
+ * @param visited Set of already visited group IDs to prevent redundant computation.
5438
+ */
5439
+ recomputeInsideNodes(maxDepth?: number, visited?: Set<number>): void;
4596
5440
  /**
4597
5441
  * Resizes and moves the group to neatly fit all given {@link objects}.
4598
5442
  * @param objects All objects that should be inside the group
@@ -4608,7 +5452,7 @@ export declare class ComfyApp {
4608
5452
  getMenuOptions(): (IContextMenuValue<string> | IContextMenuValue<string | null> | null)[];
4609
5453
  isPointInTitlebar(x: number, y: number): boolean;
4610
5454
  isInResize(x: number, y: number): boolean;
4611
- isPointInside: (x: number, y: number) => boolean;
5455
+ isPointInside(x: number, y: number): boolean;
4612
5456
  setDirtyCanvas: (dirty_foreground: boolean, dirty_background?: boolean) => void;
4613
5457
  }
4614
5458
 
@@ -4650,7 +5494,6 @@ export declare class ComfyApp {
4650
5494
  * @param type a type for the node
4651
5495
  */
4652
5496
  declare class LGraphNode implements NodeLike, Positionable, IPinnable, IColorable {
4653
- #private;
4654
5497
  static title?: string;
4655
5498
  static MAX_CONSOLE?: number;
4656
5499
  static type?: string;
@@ -4658,6 +5501,14 @@ export declare class ComfyApp {
4658
5501
  static description?: string;
4659
5502
  static filter?: string;
4660
5503
  static skip_list?: boolean;
5504
+ static nodeData?: {
5505
+ dev_only?: boolean;
5506
+ deprecated?: boolean;
5507
+ experimental?: boolean;
5508
+ output_node?: boolean;
5509
+ api_node?: boolean;
5510
+ name?: string;
5511
+ };
4661
5512
  static resizeHandleSize: number;
4662
5513
  static resizeEdgeSize: number;
4663
5514
  /** Default setting for {@link LGraphNode.connectInputToOutput}. @see {@link INodeFlags.keepAllLinksOnBypass} */
@@ -4675,6 +5526,8 @@ export declare class ComfyApp {
4675
5526
  type: string;
4676
5527
  inputs: INodeInputSlot[];
4677
5528
  outputs: INodeOutputSlot[];
5529
+ private _concreteInputs;
5530
+ private _concreteOutputs;
4678
5531
  properties: Dictionary<NodeProperty | undefined>;
4679
5532
  properties_info: INodePropertyInfo[];
4680
5533
  flags: INodeFlags;
@@ -4729,11 +5582,15 @@ export declare class ComfyApp {
4729
5582
  action_call?: string;
4730
5583
  execute_triggered?: number;
4731
5584
  action_triggered?: number;
5585
+ /**
5586
+ * @deprecated This property is unsupported and will be removed in a future release.
5587
+ * Use `widgets_start_y` or a custom `arrange()` override instead.
5588
+ */
4732
5589
  widgets_up?: boolean;
4733
5590
  widgets_start_y?: number;
4734
5591
  lostFocusAt?: number;
4735
5592
  gotFocusAt?: number;
4736
- badges: (LGraphBadge | (() => LGraphBadge))[];
5593
+ badges: (LGraphBadge_2 | (() => LGraphBadge_2))[];
4737
5594
  title_buttons: LGraphButton[];
4738
5595
  badgePosition: BadgePosition;
4739
5596
  onOutputRemoved?(this: LGraphNode, slot: number): void;
@@ -4768,11 +5625,15 @@ export declare class ComfyApp {
4768
5625
  isVirtualNode?: boolean;
4769
5626
  applyToGraph?(extraLinks?: LLink[]): void;
4770
5627
  isSubgraphNode(): this is SubgraphNode;
5628
+ /** @inheritdoc {@link renderArea} */
5629
+ private _renderArea;
4771
5630
  /**
4772
5631
  * Rect describing the node area, including shadows and any protrusions.
4773
5632
  * Determines if the node is visible. Calculated once at the start of every frame.
4774
5633
  */
4775
5634
  get renderArea(): ReadOnlyRect;
5635
+ /** @inheritdoc {@link boundingRect} */
5636
+ private _boundingRect;
4776
5637
  /**
4777
5638
  * Cached node position & area as `x, y, width, height`. Includes changes made by {@link onBounding}, if present.
4778
5639
  *
@@ -4879,6 +5740,8 @@ export declare class ComfyApp {
4879
5740
  onMouseMove?(this: LGraphNode, e: CanvasPointerEvent, pos: Point, arg2: LGraphCanvas): void;
4880
5741
  onPropertyChange?(this: LGraphNode): void;
4881
5742
  updateOutputData?(this: LGraphNode, origin_slot: number): void;
5743
+ private _getErrorStrokeStyle;
5744
+ private _getSelectedStrokeStyle;
4882
5745
  constructor(title: string, type?: string);
4883
5746
  /** Internal callback for subgraph nodes. Do not implement externally. */
4884
5747
  _internalConfigureAfterSlots?(): void;
@@ -5202,6 +6065,11 @@ export declare class ComfyApp {
5202
6065
  findOutputSlotFree<TReturn extends true>(optsIn?: FindFreeSlotOptions & {
5203
6066
  returnObj?: TReturn;
5204
6067
  }): INodeOutputSlot | -1;
6068
+ /**
6069
+ * Finds the next free slot
6070
+ * @param slots The slots to search, i.e. this.inputs or this.outputs
6071
+ */
6072
+ private _findFreeSlot;
5205
6073
  /**
5206
6074
  * findSlotByType for INPUTS
5207
6075
  */
@@ -5223,6 +6091,19 @@ export declare class ComfyApp {
5223
6091
  findSlotByType<TSlot extends true | false, TReturn extends false>(input: TSlot, type: ISlotType, returnObj?: TReturn, preferFreeSlot?: boolean, doNotUseOccupied?: boolean): number;
5224
6092
  findSlotByType<TSlot extends true, TReturn extends true>(input: TSlot, type: ISlotType, returnObj?: TReturn, preferFreeSlot?: boolean, doNotUseOccupied?: boolean): INodeInputSlot | -1;
5225
6093
  findSlotByType<TSlot extends false, TReturn extends true>(input: TSlot, type: ISlotType, returnObj?: TReturn, preferFreeSlot?: boolean, doNotUseOccupied?: boolean): INodeOutputSlot | -1;
6094
+ /**
6095
+ * Finds a matching slot from those provided, returning the slot itself or its index in {@link slots}.
6096
+ * @param slots Slots to search (this.inputs or this.outputs)
6097
+ * @param type Type of slot to look for
6098
+ * @param returnObj If true, returns the slot itself. Otherwise, the index.
6099
+ * @param preferFreeSlot Prefer a free slot, but if none are found, fall back to an occupied slot.
6100
+ * @param doNotUseOccupied Do not fall back to occupied slots.
6101
+ * @see {findSlotByType}
6102
+ * @see {findOutputSlotByType}
6103
+ * @see {findInputSlotByType}
6104
+ * @returns If a match is found, the slot if returnObj is true, otherwise the index. If no matches are found, -1
6105
+ */
6106
+ private _findSlotByType;
5226
6107
  /**
5227
6108
  * Determines the slot index to connect to when attempting to connect by type.
5228
6109
  * @param findInputs If true, searches for an input. Otherwise, an output.
@@ -5320,6 +6201,9 @@ export declare class ComfyApp {
5320
6201
  * @returns the position
5321
6202
  */
5322
6203
  getConnectionPos(is_input: boolean, slot_number: number, out?: Point): Point;
6204
+ /* Excluded from this release type: _defaultVerticalInputs */
6205
+ /* Excluded from this release type: _defaultVerticalOutputs */
6206
+ /* Excluded from this release type: _getSlotPositionContext */
5323
6207
  /**
5324
6208
  * Gets the position of an input slot, in graph co-ordinates.
5325
6209
  *
@@ -5432,6 +6316,11 @@ export declare class ComfyApp {
5432
6316
  */
5433
6317
  drawCollapsedSlots(ctx: CanvasRenderingContext2D): void;
5434
6318
  get slots(): (INodeInputSlot | INodeOutputSlot)[];
6319
+ private _measureSlot;
6320
+ private _measureSlots;
6321
+ private _getMouseOverSlot;
6322
+ private _isMouseOverSlot;
6323
+ private _isMouseOverWidget;
5435
6324
  /**
5436
6325
  * Returns the input slot that is associated with the given widget.
5437
6326
  */
@@ -5444,6 +6333,18 @@ export declare class ComfyApp {
5444
6333
  * Draws the node's input and output slots.
5445
6334
  */
5446
6335
  drawSlots(ctx: CanvasRenderingContext2D, { fromSlot, colorContext, editorAlpha, lowQuality }: DrawSlotsOptions): void;
6336
+ /**
6337
+ * Arranges the node's widgets vertically.
6338
+ * Sets following properties on each widget:
6339
+ * - {@link IBaseWidget.computedHeight}
6340
+ * - {@link IBaseWidget.y}
6341
+ * @param widgetStartY The y-coordinate of the first widget
6342
+ */
6343
+ private _arrangeWidgets;
6344
+ /**
6345
+ * Arranges the layout of the node's widget input slots.
6346
+ */
6347
+ private _arrangeWidgetInputSlots;
5447
6348
  /* Excluded from this release type: _setConcreteSlots */
5448
6349
  /**
5449
6350
  * Arranges node elements in preparation for rendering (slots & widgets).
@@ -5480,10 +6381,34 @@ export declare class ComfyApp {
5480
6381
  * Manages node properties with optional change tracking and instrumentation.
5481
6382
  */
5482
6383
  declare class LGraphNodeProperties {
5483
- #private;
5484
6384
  /** The node this property manager belongs to */
5485
6385
  node: LGraphNode;
6386
+ /** Set of property paths that have been instrumented */
6387
+ private _instrumentedPaths;
5486
6388
  constructor(node: LGraphNode);
6389
+ /**
6390
+ * Sets up property instrumentation for all tracked properties
6391
+ */
6392
+ private _setupInstrumentation;
6393
+ private _resolveTargetObject;
6394
+ /**
6395
+ * Instruments a single property to track changes
6396
+ */
6397
+ private _instrumentProperty;
6398
+ /**
6399
+ * Creates a property descriptor that emits change events
6400
+ */
6401
+ private _createInstrumentedDescriptor;
6402
+ private _createInstrumentedDescriptorTyped;
6403
+ /**
6404
+ * Emits a property change event if the node is connected to a graph
6405
+ */
6406
+ private _emitPropertyChange;
6407
+ private _emitPropertyChangeTyped;
6408
+ /**
6409
+ * Ensures parent objects exist for nested properties
6410
+ */
6411
+ private _ensureNestedPath;
5487
6412
  /**
5488
6413
  * Checks if a property is being tracked
5489
6414
  */
@@ -5521,7 +6446,6 @@ export declare class ComfyApp {
5521
6446
  * @see {@link LLink}
5522
6447
  */
5523
6448
  declare class LinkConnector {
5524
- #private;
5525
6449
  /**
5526
6450
  * Link connection state POJO. Source of truth for state of link drag operations.
5527
6451
  *
@@ -5545,6 +6469,7 @@ export declare class ComfyApp {
5545
6469
  overWidgetType?: string;
5546
6470
  /** The reroute beneath the pointer, if it is a valid connection target. */
5547
6471
  overReroute?: Reroute;
6472
+ private readonly _setConnectingLinks;
5548
6473
  constructor(setConnectingLinks: (value: ConnectingLink[]) => void);
5549
6474
  get isConnecting(): boolean;
5550
6475
  get draggingExistingLinks(): boolean;
@@ -5603,6 +6528,8 @@ export declare class ComfyApp {
5603
6528
  * @param event Contains the drop location, in canvas space
5604
6529
  */
5605
6530
  connectToNode(node: LGraphNode, event: CanvasPointerEvent): void;
6531
+ private _dropOnInput;
6532
+ private _dropOnOutput;
5606
6533
  isInputValidDrop(node: LGraphNode, input: INodeInputSlot): boolean;
5607
6534
  isNodeValidDrop(node: LGraphNode): boolean;
5608
6535
  isSubgraphInputValidDrop(input: SubgraphInput): boolean;
@@ -5612,6 +6539,8 @@ export declare class ComfyApp {
5612
6539
  * @returns `true` if any of the current links being connected are valid for the given reroute.
5613
6540
  */
5614
6541
  isRerouteValidDrop(reroute: Reroute): boolean;
6542
+ /** Sets connecting_links, used by some extensions still. */
6543
+ private _setLegacyLinks;
5615
6544
  /**
5616
6545
  * Exports the current state of the link connector.
5617
6546
  * @param network The network that the links being connected belong to.
@@ -5778,7 +6707,7 @@ export declare class ComfyApp {
5778
6707
  readonly origin_slot: number | undefined;
5779
6708
  }
5780
6709
 
5781
- declare const LiteGraph: LiteGraphGlobal;
6710
+ declare const LiteGraph_2: LiteGraphGlobal;
5782
6711
 
5783
6712
  /**
5784
6713
  * The Global Scope. It contains all the registered node classes.
@@ -6197,7 +7126,6 @@ export declare class ComfyApp {
6197
7126
  }
6198
7127
 
6199
7128
  declare class LLink implements LinkSegment, Serialisable<SerialisableLLink> {
6200
- #private;
6201
7129
  static _drawDebug: boolean;
6202
7130
  /** Link ID */
6203
7131
  id: LinkId;
@@ -6225,6 +7153,7 @@ export declare class ComfyApp {
6225
7153
  _centreAngle?: number;
6226
7154
  /** @inheritdoc */
6227
7155
  _dragging?: boolean;
7156
+ private _color?;
6228
7157
  /** Custom colour for this link only */
6229
7158
  get color(): CanvasColour | null | undefined;
6230
7159
  set color(value: CanvasColour);
@@ -6356,6 +7285,19 @@ export declare class ComfyApp {
6356
7285
 
6357
7286
  export declare type LogEntry = z.infer<typeof zLogEntry>;
6358
7287
 
7288
+ declare interface LogoInfo {
7289
+ /** Provider name(s) matching index_logo.json. String for single, array for stacked logos. */
7290
+ provider: string | string[];
7291
+ /** Custom label text. If omitted, defaults to provider names joined with " & " */
7292
+ label?: string;
7293
+ /** Gap between stacked logos in pixels. Negative for overlap effect. Default: -6 */
7294
+ gap?: number;
7295
+ /** Tailwind positioning classes */
7296
+ position?: string;
7297
+ /** Opacity 0-1, default 0.85 */
7298
+ opacity?: number;
7299
+ }
7300
+
6359
7301
  export declare type LogsRawResponse = z.infer<typeof zLogRawResponse>;
6360
7302
 
6361
7303
  declare type LogsWsMessage = z.infer<typeof zLogsWsMessage>;
@@ -6383,7 +7325,7 @@ export declare class ComfyApp {
6383
7325
  };
6384
7326
 
6385
7327
  /** The names of all (optional) methods and functions in T */
6386
- declare type MethodNames<T> = KeysOfType<T, ((...args: any) => any) | undefined>;
7328
+ declare type MethodNames<T> = KeysOfType<T, ((...args: unknown[]) => unknown) | undefined>;
6387
7329
 
6388
7330
  declare type MissingNodeType = string | {
6389
7331
  type: string;
@@ -6392,6 +7334,8 @@ export declare class ComfyApp {
6392
7334
  text: string;
6393
7335
  callback: () => void;
6394
7336
  };
7337
+ isReplaceable?: boolean;
7338
+ replacement?: NodeReplacement;
6395
7339
  };
6396
7340
 
6397
7341
  declare type ModelFile = z.infer<typeof zModelFile>;
@@ -6567,6 +7511,14 @@ export declare class ComfyApp {
6567
7511
  newValue: unknown;
6568
7512
  }
6569
7513
 
7514
+ declare interface NodeReplacement {
7515
+ new_node_id: string;
7516
+ old_node_id: string;
7517
+ old_widget_ids: string[] | null;
7518
+ input_mapping: InputMap[] | null;
7519
+ output_mapping: OutputMap[] | null;
7520
+ }
7521
+
6570
7522
  declare interface NodeSlotErrorsChangedEvent {
6571
7523
  type: 'node:slot-errors:changed';
6572
7524
  nodeId: NodeId;
@@ -6618,6 +7570,11 @@ export declare class ComfyApp {
6618
7570
  [K in Properties]?: T[K];
6619
7571
  };
6620
7572
 
7573
+ declare interface OutputMap {
7574
+ new_idx: number;
7575
+ old_idx: number;
7576
+ }
7577
+
6621
7578
  /**
6622
7579
  * Determines if two rectangles have any overlap
6623
7580
  * @param a Rectangle A as `x, y, width, height`
@@ -6832,7 +7789,8 @@ export declare class ComfyApp {
6832
7789
  * - {@link size}: The size of the rectangle.
6833
7790
  */
6834
7791
  declare class Rectangle extends Float64Array {
6835
- #private;
7792
+ private _pos;
7793
+ private _size;
6836
7794
  constructor(x?: number, y?: number, width?: number, height?: number);
6837
7795
  static from([x, y, width, height]: ReadOnlyRect): Rectangle;
6838
7796
  /**
@@ -7285,6 +8243,8 @@ export declare class ComfyApp {
7285
8243
  subgraphInput: SubgraphInput;
7286
8244
  }
7287
8245
 
8246
+ declare type ResultItem = z.infer<typeof zResultItem>;
8247
+
7288
8248
  /**
7289
8249
  * Widget for selecting from a group of buttons
7290
8250
  * This is a widget that only has a Vue widgets implementation
@@ -7454,7 +8414,6 @@ export declare class ComfyApp {
7454
8414
 
7455
8415
  /** A subgraph definition. */
7456
8416
  declare class Subgraph extends LGraph implements BaseLGraph, Serialisable<ExportedSubgraph> {
7457
- #private;
7458
8417
  readonly events: CustomEventTarget<SubgraphEventMap, "configuring" | "configured" | "subgraph-created" | "convert-to-subgraph" | "open-subgraph" | "adding-input" | "adding-output" | "input-added" | "output-added" | "removing-input" | "removing-output" | "renaming-input" | "renaming-output" | "widget-promoted" | "widget-demoted">;
7459
8418
  /** Limits the number of levels / depth that subgraphs may be nested. Prevents uncontrolled programmatic nesting. */
7460
8419
  static MAX_NESTED_SUBGRAPHS: number;
@@ -7468,9 +8427,13 @@ export declare class ComfyApp {
7468
8427
  readonly outputs: SubgraphOutput[];
7469
8428
  /** A list of node widgets displayed in the parent graph, on the subgraph object. */
7470
8429
  readonly widgets: ExposedWidget[];
8430
+ private _rootGraph;
7471
8431
  get rootGraph(): LGraph;
8432
+ get state(): LGraphState;
8433
+ set state(_value: LGraphState);
7472
8434
  constructor(rootGraph: LGraph, data: ExportedSubgraph);
7473
8435
  getIoNodeOnPos(x: number, y: number): SubgraphInputNode | SubgraphOutputNode | undefined;
8436
+ private _configureSubgraph;
7474
8437
  configure(data: (ISerialisedGraph & ExportedSubgraph) | (SerialisableGraph & ExportedSubgraph), keep_old?: boolean): boolean | undefined;
7475
8438
  attachCanvas(canvas: LGraphCanvas): void;
7476
8439
  addInput(name: string, type: string): SubgraphInput;
@@ -7563,9 +8526,10 @@ export declare class ComfyApp {
7563
8526
  * Functionally, however, when editing a subgraph, that "subgraph input" is the "origin" or "output side" of a link.
7564
8527
  */
7565
8528
  declare class SubgraphInput extends SubgraphSlot {
7566
- #private;
7567
8529
  parent: SubgraphInputNode;
7568
8530
  events: CustomEventTarget<SubgraphInputEventMap, "configuring" | "configured" | "subgraph-created" | "convert-to-subgraph" | "open-subgraph" | "input-connected" | "input-disconnected">;
8531
+ /** The linked widget that this slot is connected to. */
8532
+ private _widgetRef?;
7569
8533
  get _widget(): IBaseWidget<string | number | boolean | object | undefined, string, IWidgetOptions<unknown>> | undefined;
7570
8534
  set _widget(widget: IBaseWidget<string | number | boolean | object | undefined, string, IWidgetOptions<unknown>> | undefined);
7571
8535
  connect(slot: INodeInputSlot, node: LGraphNode, afterRerouteId?: RerouteId): LLink | undefined;
@@ -7632,12 +8596,12 @@ export declare class ComfyApp {
7632
8596
  }
7633
8597
 
7634
8598
  declare abstract class SubgraphIONodeBase<TSlot extends SubgraphInput | SubgraphOutput> implements Positionable, Hoverable, Serialisable<ExportedSubgraphIONode> {
7635
- #private;
7636
8599
  /** The subgraph that this node belongs to. */
7637
8600
  readonly subgraph: Subgraph;
7638
8601
  static margin: number;
7639
8602
  static minWidth: number;
7640
8603
  static roundedRadius: number;
8604
+ private readonly _boundingRect;
7641
8605
  abstract readonly id: NodeId;
7642
8606
  get boundingRect(): Rectangle;
7643
8607
  selected: boolean;
@@ -7695,6 +8659,25 @@ export declare class ComfyApp {
7695
8659
  * @param event The event that triggered the context menu.
7696
8660
  */
7697
8661
  protected showSlotContextMenu(slot: TSlot, event: CanvasPointerEvent): void;
8662
+ /**
8663
+ * Gets the context menu options for an IO slot.
8664
+ * @param slot The slot to get the context menu options for.
8665
+ * @returns The context menu options.
8666
+ */
8667
+ private _getSlotMenuOptions;
8668
+ /**
8669
+ * Handles the action for an IO slot context menu.
8670
+ * @param selectedItem The item that was selected from the context menu.
8671
+ * @param slot The slot
8672
+ * @param event The event that triggered the context menu.
8673
+ */
8674
+ private _onSlotMenuAction;
8675
+ /**
8676
+ * Prompts the user to rename a slot.
8677
+ * @param slot The slot to rename.
8678
+ * @param event The event that triggered the rename.
8679
+ */
8680
+ private _promptForSlotRename;
7698
8681
  /** Arrange the slots in this node. */
7699
8682
  arrange(): void;
7700
8683
  draw(ctx: CanvasRenderingContext2D, colorContext: DefaultConnectionColors, fromSlot?: INodeInputSlot | INodeOutputSlot | SubgraphInput | SubgraphOutput, editorAlpha?: number): void;
@@ -7711,26 +8694,28 @@ export declare class ComfyApp {
7711
8694
  * An instance of a {@link Subgraph}, displayed as a node on the containing (parent) graph.
7712
8695
  */
7713
8696
  declare class SubgraphNode extends LGraphNode implements BaseLGraph {
7714
- #private;
7715
- /** The (sub)graph that contains this subgraph instance. */
7716
- readonly graph: GraphOrSubgraph;
7717
8697
  /** The definition of this subgraph; how its nodes are configured, etc. */
7718
8698
  readonly subgraph: Subgraph;
7719
8699
  inputs: (INodeInputSlot & Partial<ISubgraphInput>)[];
7720
8700
  readonly type: UUID;
7721
8701
  readonly isVirtualNode: true;
8702
+ graph: GraphOrSubgraph | null;
7722
8703
  get rootGraph(): LGraph;
7723
8704
  get displayType(): string;
7724
8705
  isSubgraphNode(): this is SubgraphNode;
7725
8706
  widgets: IBaseWidget[];
8707
+ /** Manages lifecycle of all subgraph event listeners */
8708
+ private _eventAbortController;
7726
8709
  constructor(
7727
8710
  /** The (sub)graph that contains this subgraph instance. */
7728
8711
  graph: GraphOrSubgraph,
7729
8712
  /** The definition of this subgraph; how its nodes are configured, etc. */
7730
8713
  subgraph: Subgraph, instanceData: ExportedSubgraphInstance);
7731
8714
  onTitleButtonClick(button: LGraphButton, canvas: LGraphCanvas): void;
8715
+ private _addSubgraphInputListeners;
7732
8716
  configure(info: ExportedSubgraphInstance): void;
7733
8717
  _internalConfigureAfterSlots(): void;
8718
+ private _setWidget;
7734
8719
  /**
7735
8720
  * Ensures the subgraph slot is in the params before adding the input as normal.
7736
8721
  * @param name The name of the input slot.
@@ -7814,8 +8799,8 @@ export declare class ComfyApp {
7814
8799
 
7815
8800
  /** Shared base class for the slots used on Subgraph . */
7816
8801
  declare abstract class SubgraphSlot extends SlotBase implements SubgraphIO, Hoverable, Serialisable<SubgraphIO> {
7817
- #private;
7818
8802
  static get defaultHeight(): number;
8803
+ private readonly _pos;
7819
8804
  readonly measurement: ConstrainedSize;
7820
8805
  readonly id: UUID;
7821
8806
  readonly parent: SubgraphInputNode | SubgraphOutputNode;
@@ -7920,6 +8905,10 @@ export declare class ComfyApp {
7920
8905
  * If not specified, the template will be included on all distributions.
7921
8906
  */
7922
8907
  includeOnDistributions?: TemplateIncludeOnDistributionEnum[];
8908
+ /**
8909
+ * Logo overlays to display on the template thumbnail.
8910
+ */
8911
+ logos?: LogoInfo[];
7923
8912
  }
7924
8913
 
7925
8914
  export declare type TerminalSize = z.infer<typeof zTerminalSize>;
@@ -8365,7 +9354,7 @@ export declare class ComfyApp {
8365
9354
  * If true, a linked widget will be added to the node to select the mode
8366
9355
  * of `control_after_generate`.
8367
9356
  */
8368
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
9357
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
8369
9358
  }>, "passthrough", z.ZodTypeAny, z.objectOutputType<z.objectUtil.extendShape<z.objectUtil.extendShape<{
8370
9359
  default: z.ZodOptional<z.ZodAny>;
8371
9360
  defaultInput: z.ZodOptional<z.ZodBoolean>;
@@ -8391,7 +9380,7 @@ export declare class ComfyApp {
8391
9380
  * If true, a linked widget will be added to the node to select the mode
8392
9381
  * of `control_after_generate`.
8393
9382
  */
8394
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
9383
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
8395
9384
  }>, z.ZodTypeAny, "passthrough">, z.objectInputType<z.objectUtil.extendShape<z.objectUtil.extendShape<{
8396
9385
  default: z.ZodOptional<z.ZodAny>;
8397
9386
  defaultInput: z.ZodOptional<z.ZodBoolean>;
@@ -8417,7 +9406,7 @@ export declare class ComfyApp {
8417
9406
  * If true, a linked widget will be added to the node to select the mode
8418
9407
  * of `control_after_generate`.
8419
9408
  */
8420
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
9409
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
8421
9410
  }>, z.ZodTypeAny, "passthrough">>>], null>, z.ZodTuple<[z.ZodLiteral<"FLOAT">, z.ZodOptional<z.ZodObject<z.objectUtil.extendShape<z.objectUtil.extendShape<{
8422
9411
  default: z.ZodOptional<z.ZodAny>;
8423
9412
  defaultInput: z.ZodOptional<z.ZodBoolean>;
@@ -8606,12 +9595,14 @@ export declare class ComfyApp {
8606
9595
  rawLink: z.ZodOptional<z.ZodBoolean>;
8607
9596
  lazy: z.ZodOptional<z.ZodBoolean>;
8608
9597
  }, {
8609
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
9598
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
8610
9599
  image_upload: z.ZodOptional<z.ZodBoolean>;
8611
9600
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
8612
9601
  allow_batch: z.ZodOptional<z.ZodBoolean>;
8613
9602
  video_upload: z.ZodOptional<z.ZodBoolean>;
8614
9603
  audio_upload: z.ZodOptional<z.ZodBoolean>;
9604
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
9605
+ upload_subfolder: z.ZodOptional<z.ZodString>;
8615
9606
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
8616
9607
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
8617
9608
  remote: z.ZodOptional<z.ZodObject<{
@@ -8626,20 +9617,20 @@ export declare class ComfyApp {
8626
9617
  }, "strip", z.ZodTypeAny, {
8627
9618
  route: string;
8628
9619
  refresh?: number | undefined;
8629
- timeout?: number | undefined;
8630
9620
  response_key?: string | undefined;
8631
9621
  query_params?: Record<string, string> | undefined;
8632
9622
  refresh_button?: boolean | undefined;
8633
9623
  control_after_refresh?: "first" | "last" | undefined;
9624
+ timeout?: number | undefined;
8634
9625
  max_retries?: number | undefined;
8635
9626
  }, {
8636
9627
  route: string;
8637
9628
  refresh?: number | undefined;
8638
- timeout?: number | undefined;
8639
9629
  response_key?: string | undefined;
8640
9630
  query_params?: Record<string, string> | undefined;
8641
9631
  refresh_button?: boolean | undefined;
8642
9632
  control_after_refresh?: "first" | "last" | undefined;
9633
+ timeout?: number | undefined;
8643
9634
  max_retries?: number | undefined;
8644
9635
  }>>;
8645
9636
  /** Whether the widget is a multi-select widget. */
@@ -8667,12 +9658,14 @@ export declare class ComfyApp {
8667
9658
  rawLink: z.ZodOptional<z.ZodBoolean>;
8668
9659
  lazy: z.ZodOptional<z.ZodBoolean>;
8669
9660
  }, {
8670
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
9661
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
8671
9662
  image_upload: z.ZodOptional<z.ZodBoolean>;
8672
9663
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
8673
9664
  allow_batch: z.ZodOptional<z.ZodBoolean>;
8674
9665
  video_upload: z.ZodOptional<z.ZodBoolean>;
8675
9666
  audio_upload: z.ZodOptional<z.ZodBoolean>;
9667
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
9668
+ upload_subfolder: z.ZodOptional<z.ZodString>;
8676
9669
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
8677
9670
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
8678
9671
  remote: z.ZodOptional<z.ZodObject<{
@@ -8687,20 +9680,20 @@ export declare class ComfyApp {
8687
9680
  }, "strip", z.ZodTypeAny, {
8688
9681
  route: string;
8689
9682
  refresh?: number | undefined;
8690
- timeout?: number | undefined;
8691
9683
  response_key?: string | undefined;
8692
9684
  query_params?: Record<string, string> | undefined;
8693
9685
  refresh_button?: boolean | undefined;
8694
9686
  control_after_refresh?: "first" | "last" | undefined;
9687
+ timeout?: number | undefined;
8695
9688
  max_retries?: number | undefined;
8696
9689
  }, {
8697
9690
  route: string;
8698
9691
  refresh?: number | undefined;
8699
- timeout?: number | undefined;
8700
9692
  response_key?: string | undefined;
8701
9693
  query_params?: Record<string, string> | undefined;
8702
9694
  refresh_button?: boolean | undefined;
8703
9695
  control_after_refresh?: "first" | "last" | undefined;
9696
+ timeout?: number | undefined;
8704
9697
  max_retries?: number | undefined;
8705
9698
  }>>;
8706
9699
  /** Whether the widget is a multi-select widget. */
@@ -8728,12 +9721,14 @@ export declare class ComfyApp {
8728
9721
  rawLink: z.ZodOptional<z.ZodBoolean>;
8729
9722
  lazy: z.ZodOptional<z.ZodBoolean>;
8730
9723
  }, {
8731
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
9724
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
8732
9725
  image_upload: z.ZodOptional<z.ZodBoolean>;
8733
9726
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
8734
9727
  allow_batch: z.ZodOptional<z.ZodBoolean>;
8735
9728
  video_upload: z.ZodOptional<z.ZodBoolean>;
8736
9729
  audio_upload: z.ZodOptional<z.ZodBoolean>;
9730
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
9731
+ upload_subfolder: z.ZodOptional<z.ZodString>;
8737
9732
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
8738
9733
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
8739
9734
  remote: z.ZodOptional<z.ZodObject<{
@@ -8748,20 +9743,20 @@ export declare class ComfyApp {
8748
9743
  }, "strip", z.ZodTypeAny, {
8749
9744
  route: string;
8750
9745
  refresh?: number | undefined;
8751
- timeout?: number | undefined;
8752
9746
  response_key?: string | undefined;
8753
9747
  query_params?: Record<string, string> | undefined;
8754
9748
  refresh_button?: boolean | undefined;
8755
9749
  control_after_refresh?: "first" | "last" | undefined;
9750
+ timeout?: number | undefined;
8756
9751
  max_retries?: number | undefined;
8757
9752
  }, {
8758
9753
  route: string;
8759
9754
  refresh?: number | undefined;
8760
- timeout?: number | undefined;
8761
9755
  response_key?: string | undefined;
8762
9756
  query_params?: Record<string, string> | undefined;
8763
9757
  refresh_button?: boolean | undefined;
8764
9758
  control_after_refresh?: "first" | "last" | undefined;
9759
+ timeout?: number | undefined;
8765
9760
  max_retries?: number | undefined;
8766
9761
  }>>;
8767
9762
  /** Whether the widget is a multi-select widget. */
@@ -8789,12 +9784,14 @@ export declare class ComfyApp {
8789
9784
  rawLink: z.ZodOptional<z.ZodBoolean>;
8790
9785
  lazy: z.ZodOptional<z.ZodBoolean>;
8791
9786
  }, {
8792
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
9787
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
8793
9788
  image_upload: z.ZodOptional<z.ZodBoolean>;
8794
9789
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
8795
9790
  allow_batch: z.ZodOptional<z.ZodBoolean>;
8796
9791
  video_upload: z.ZodOptional<z.ZodBoolean>;
8797
9792
  audio_upload: z.ZodOptional<z.ZodBoolean>;
9793
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
9794
+ upload_subfolder: z.ZodOptional<z.ZodString>;
8798
9795
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
8799
9796
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
8800
9797
  remote: z.ZodOptional<z.ZodObject<{
@@ -8809,20 +9806,20 @@ export declare class ComfyApp {
8809
9806
  }, "strip", z.ZodTypeAny, {
8810
9807
  route: string;
8811
9808
  refresh?: number | undefined;
8812
- timeout?: number | undefined;
8813
9809
  response_key?: string | undefined;
8814
9810
  query_params?: Record<string, string> | undefined;
8815
9811
  refresh_button?: boolean | undefined;
8816
9812
  control_after_refresh?: "first" | "last" | undefined;
9813
+ timeout?: number | undefined;
8817
9814
  max_retries?: number | undefined;
8818
9815
  }, {
8819
9816
  route: string;
8820
9817
  refresh?: number | undefined;
8821
- timeout?: number | undefined;
8822
9818
  response_key?: string | undefined;
8823
9819
  query_params?: Record<string, string> | undefined;
8824
9820
  refresh_button?: boolean | undefined;
8825
9821
  control_after_refresh?: "first" | "last" | undefined;
9822
+ timeout?: number | undefined;
8826
9823
  max_retries?: number | undefined;
8827
9824
  }>>;
8828
9825
  /** Whether the widget is a multi-select widget. */
@@ -8850,12 +9847,14 @@ export declare class ComfyApp {
8850
9847
  rawLink: z.ZodOptional<z.ZodBoolean>;
8851
9848
  lazy: z.ZodOptional<z.ZodBoolean>;
8852
9849
  }, {
8853
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
9850
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
8854
9851
  image_upload: z.ZodOptional<z.ZodBoolean>;
8855
9852
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
8856
9853
  allow_batch: z.ZodOptional<z.ZodBoolean>;
8857
9854
  video_upload: z.ZodOptional<z.ZodBoolean>;
8858
9855
  audio_upload: z.ZodOptional<z.ZodBoolean>;
9856
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
9857
+ upload_subfolder: z.ZodOptional<z.ZodString>;
8859
9858
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
8860
9859
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
8861
9860
  remote: z.ZodOptional<z.ZodObject<{
@@ -8870,20 +9869,20 @@ export declare class ComfyApp {
8870
9869
  }, "strip", z.ZodTypeAny, {
8871
9870
  route: string;
8872
9871
  refresh?: number | undefined;
8873
- timeout?: number | undefined;
8874
9872
  response_key?: string | undefined;
8875
9873
  query_params?: Record<string, string> | undefined;
8876
9874
  refresh_button?: boolean | undefined;
8877
9875
  control_after_refresh?: "first" | "last" | undefined;
9876
+ timeout?: number | undefined;
8878
9877
  max_retries?: number | undefined;
8879
9878
  }, {
8880
9879
  route: string;
8881
9880
  refresh?: number | undefined;
8882
- timeout?: number | undefined;
8883
9881
  response_key?: string | undefined;
8884
9882
  query_params?: Record<string, string> | undefined;
8885
9883
  refresh_button?: boolean | undefined;
8886
9884
  control_after_refresh?: "first" | "last" | undefined;
9885
+ timeout?: number | undefined;
8887
9886
  max_retries?: number | undefined;
8888
9887
  }>>;
8889
9888
  /** Whether the widget is a multi-select widget. */
@@ -8911,12 +9910,14 @@ export declare class ComfyApp {
8911
9910
  rawLink: z.ZodOptional<z.ZodBoolean>;
8912
9911
  lazy: z.ZodOptional<z.ZodBoolean>;
8913
9912
  }, {
8914
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
9913
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
8915
9914
  image_upload: z.ZodOptional<z.ZodBoolean>;
8916
9915
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
8917
9916
  allow_batch: z.ZodOptional<z.ZodBoolean>;
8918
9917
  video_upload: z.ZodOptional<z.ZodBoolean>;
8919
9918
  audio_upload: z.ZodOptional<z.ZodBoolean>;
9919
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
9920
+ upload_subfolder: z.ZodOptional<z.ZodString>;
8920
9921
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
8921
9922
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
8922
9923
  remote: z.ZodOptional<z.ZodObject<{
@@ -8931,20 +9932,20 @@ export declare class ComfyApp {
8931
9932
  }, "strip", z.ZodTypeAny, {
8932
9933
  route: string;
8933
9934
  refresh?: number | undefined;
8934
- timeout?: number | undefined;
8935
9935
  response_key?: string | undefined;
8936
9936
  query_params?: Record<string, string> | undefined;
8937
9937
  refresh_button?: boolean | undefined;
8938
9938
  control_after_refresh?: "first" | "last" | undefined;
9939
+ timeout?: number | undefined;
8939
9940
  max_retries?: number | undefined;
8940
9941
  }, {
8941
9942
  route: string;
8942
9943
  refresh?: number | undefined;
8943
- timeout?: number | undefined;
8944
9944
  response_key?: string | undefined;
8945
9945
  query_params?: Record<string, string> | undefined;
8946
9946
  refresh_button?: boolean | undefined;
8947
9947
  control_after_refresh?: "first" | "last" | undefined;
9948
+ timeout?: number | undefined;
8948
9949
  max_retries?: number | undefined;
8949
9950
  }>>;
8950
9951
  /** Whether the widget is a multi-select widget. */
@@ -9023,7 +10024,7 @@ export declare class ComfyApp {
9023
10024
  * If true, a linked widget will be added to the node to select the mode
9024
10025
  * of `control_after_generate`.
9025
10026
  */
9026
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
10027
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
9027
10028
  }>, "passthrough", z.ZodTypeAny, z.objectOutputType<z.objectUtil.extendShape<z.objectUtil.extendShape<{
9028
10029
  default: z.ZodOptional<z.ZodAny>;
9029
10030
  defaultInput: z.ZodOptional<z.ZodBoolean>;
@@ -9049,7 +10050,7 @@ export declare class ComfyApp {
9049
10050
  * If true, a linked widget will be added to the node to select the mode
9050
10051
  * of `control_after_generate`.
9051
10052
  */
9052
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
10053
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
9053
10054
  }>, z.ZodTypeAny, "passthrough">, z.objectInputType<z.objectUtil.extendShape<z.objectUtil.extendShape<{
9054
10055
  default: z.ZodOptional<z.ZodAny>;
9055
10056
  defaultInput: z.ZodOptional<z.ZodBoolean>;
@@ -9075,7 +10076,7 @@ export declare class ComfyApp {
9075
10076
  * If true, a linked widget will be added to the node to select the mode
9076
10077
  * of `control_after_generate`.
9077
10078
  */
9078
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
10079
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
9079
10080
  }>, z.ZodTypeAny, "passthrough">>>], null>, z.ZodTuple<[z.ZodLiteral<"FLOAT">, z.ZodOptional<z.ZodObject<z.objectUtil.extendShape<z.objectUtil.extendShape<{
9080
10081
  default: z.ZodOptional<z.ZodAny>;
9081
10082
  defaultInput: z.ZodOptional<z.ZodBoolean>;
@@ -9264,12 +10265,14 @@ export declare class ComfyApp {
9264
10265
  rawLink: z.ZodOptional<z.ZodBoolean>;
9265
10266
  lazy: z.ZodOptional<z.ZodBoolean>;
9266
10267
  }, {
9267
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
10268
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
9268
10269
  image_upload: z.ZodOptional<z.ZodBoolean>;
9269
10270
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
9270
10271
  allow_batch: z.ZodOptional<z.ZodBoolean>;
9271
10272
  video_upload: z.ZodOptional<z.ZodBoolean>;
9272
10273
  audio_upload: z.ZodOptional<z.ZodBoolean>;
10274
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
10275
+ upload_subfolder: z.ZodOptional<z.ZodString>;
9273
10276
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
9274
10277
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
9275
10278
  remote: z.ZodOptional<z.ZodObject<{
@@ -9284,20 +10287,20 @@ export declare class ComfyApp {
9284
10287
  }, "strip", z.ZodTypeAny, {
9285
10288
  route: string;
9286
10289
  refresh?: number | undefined;
9287
- timeout?: number | undefined;
9288
10290
  response_key?: string | undefined;
9289
10291
  query_params?: Record<string, string> | undefined;
9290
10292
  refresh_button?: boolean | undefined;
9291
10293
  control_after_refresh?: "first" | "last" | undefined;
10294
+ timeout?: number | undefined;
9292
10295
  max_retries?: number | undefined;
9293
10296
  }, {
9294
10297
  route: string;
9295
10298
  refresh?: number | undefined;
9296
- timeout?: number | undefined;
9297
10299
  response_key?: string | undefined;
9298
10300
  query_params?: Record<string, string> | undefined;
9299
10301
  refresh_button?: boolean | undefined;
9300
10302
  control_after_refresh?: "first" | "last" | undefined;
10303
+ timeout?: number | undefined;
9301
10304
  max_retries?: number | undefined;
9302
10305
  }>>;
9303
10306
  /** Whether the widget is a multi-select widget. */
@@ -9325,12 +10328,14 @@ export declare class ComfyApp {
9325
10328
  rawLink: z.ZodOptional<z.ZodBoolean>;
9326
10329
  lazy: z.ZodOptional<z.ZodBoolean>;
9327
10330
  }, {
9328
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
10331
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
9329
10332
  image_upload: z.ZodOptional<z.ZodBoolean>;
9330
10333
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
9331
10334
  allow_batch: z.ZodOptional<z.ZodBoolean>;
9332
10335
  video_upload: z.ZodOptional<z.ZodBoolean>;
9333
10336
  audio_upload: z.ZodOptional<z.ZodBoolean>;
10337
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
10338
+ upload_subfolder: z.ZodOptional<z.ZodString>;
9334
10339
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
9335
10340
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
9336
10341
  remote: z.ZodOptional<z.ZodObject<{
@@ -9345,20 +10350,20 @@ export declare class ComfyApp {
9345
10350
  }, "strip", z.ZodTypeAny, {
9346
10351
  route: string;
9347
10352
  refresh?: number | undefined;
9348
- timeout?: number | undefined;
9349
10353
  response_key?: string | undefined;
9350
10354
  query_params?: Record<string, string> | undefined;
9351
10355
  refresh_button?: boolean | undefined;
9352
10356
  control_after_refresh?: "first" | "last" | undefined;
10357
+ timeout?: number | undefined;
9353
10358
  max_retries?: number | undefined;
9354
10359
  }, {
9355
10360
  route: string;
9356
10361
  refresh?: number | undefined;
9357
- timeout?: number | undefined;
9358
10362
  response_key?: string | undefined;
9359
10363
  query_params?: Record<string, string> | undefined;
9360
10364
  refresh_button?: boolean | undefined;
9361
10365
  control_after_refresh?: "first" | "last" | undefined;
10366
+ timeout?: number | undefined;
9362
10367
  max_retries?: number | undefined;
9363
10368
  }>>;
9364
10369
  /** Whether the widget is a multi-select widget. */
@@ -9386,12 +10391,14 @@ export declare class ComfyApp {
9386
10391
  rawLink: z.ZodOptional<z.ZodBoolean>;
9387
10392
  lazy: z.ZodOptional<z.ZodBoolean>;
9388
10393
  }, {
9389
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
10394
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
9390
10395
  image_upload: z.ZodOptional<z.ZodBoolean>;
9391
10396
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
9392
10397
  allow_batch: z.ZodOptional<z.ZodBoolean>;
9393
10398
  video_upload: z.ZodOptional<z.ZodBoolean>;
9394
10399
  audio_upload: z.ZodOptional<z.ZodBoolean>;
10400
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
10401
+ upload_subfolder: z.ZodOptional<z.ZodString>;
9395
10402
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
9396
10403
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
9397
10404
  remote: z.ZodOptional<z.ZodObject<{
@@ -9406,20 +10413,20 @@ export declare class ComfyApp {
9406
10413
  }, "strip", z.ZodTypeAny, {
9407
10414
  route: string;
9408
10415
  refresh?: number | undefined;
9409
- timeout?: number | undefined;
9410
10416
  response_key?: string | undefined;
9411
10417
  query_params?: Record<string, string> | undefined;
9412
10418
  refresh_button?: boolean | undefined;
9413
10419
  control_after_refresh?: "first" | "last" | undefined;
10420
+ timeout?: number | undefined;
9414
10421
  max_retries?: number | undefined;
9415
10422
  }, {
9416
10423
  route: string;
9417
10424
  refresh?: number | undefined;
9418
- timeout?: number | undefined;
9419
10425
  response_key?: string | undefined;
9420
10426
  query_params?: Record<string, string> | undefined;
9421
10427
  refresh_button?: boolean | undefined;
9422
10428
  control_after_refresh?: "first" | "last" | undefined;
10429
+ timeout?: number | undefined;
9423
10430
  max_retries?: number | undefined;
9424
10431
  }>>;
9425
10432
  /** Whether the widget is a multi-select widget. */
@@ -9447,12 +10454,14 @@ export declare class ComfyApp {
9447
10454
  rawLink: z.ZodOptional<z.ZodBoolean>;
9448
10455
  lazy: z.ZodOptional<z.ZodBoolean>;
9449
10456
  }, {
9450
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
10457
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
9451
10458
  image_upload: z.ZodOptional<z.ZodBoolean>;
9452
10459
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
9453
10460
  allow_batch: z.ZodOptional<z.ZodBoolean>;
9454
10461
  video_upload: z.ZodOptional<z.ZodBoolean>;
9455
10462
  audio_upload: z.ZodOptional<z.ZodBoolean>;
10463
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
10464
+ upload_subfolder: z.ZodOptional<z.ZodString>;
9456
10465
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
9457
10466
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
9458
10467
  remote: z.ZodOptional<z.ZodObject<{
@@ -9467,20 +10476,20 @@ export declare class ComfyApp {
9467
10476
  }, "strip", z.ZodTypeAny, {
9468
10477
  route: string;
9469
10478
  refresh?: number | undefined;
9470
- timeout?: number | undefined;
9471
10479
  response_key?: string | undefined;
9472
10480
  query_params?: Record<string, string> | undefined;
9473
10481
  refresh_button?: boolean | undefined;
9474
10482
  control_after_refresh?: "first" | "last" | undefined;
10483
+ timeout?: number | undefined;
9475
10484
  max_retries?: number | undefined;
9476
10485
  }, {
9477
10486
  route: string;
9478
10487
  refresh?: number | undefined;
9479
- timeout?: number | undefined;
9480
10488
  response_key?: string | undefined;
9481
10489
  query_params?: Record<string, string> | undefined;
9482
10490
  refresh_button?: boolean | undefined;
9483
10491
  control_after_refresh?: "first" | "last" | undefined;
10492
+ timeout?: number | undefined;
9484
10493
  max_retries?: number | undefined;
9485
10494
  }>>;
9486
10495
  /** Whether the widget is a multi-select widget. */
@@ -9508,12 +10517,14 @@ export declare class ComfyApp {
9508
10517
  rawLink: z.ZodOptional<z.ZodBoolean>;
9509
10518
  lazy: z.ZodOptional<z.ZodBoolean>;
9510
10519
  }, {
9511
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
10520
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
9512
10521
  image_upload: z.ZodOptional<z.ZodBoolean>;
9513
10522
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
9514
10523
  allow_batch: z.ZodOptional<z.ZodBoolean>;
9515
10524
  video_upload: z.ZodOptional<z.ZodBoolean>;
9516
10525
  audio_upload: z.ZodOptional<z.ZodBoolean>;
10526
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
10527
+ upload_subfolder: z.ZodOptional<z.ZodString>;
9517
10528
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
9518
10529
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
9519
10530
  remote: z.ZodOptional<z.ZodObject<{
@@ -9528,20 +10539,20 @@ export declare class ComfyApp {
9528
10539
  }, "strip", z.ZodTypeAny, {
9529
10540
  route: string;
9530
10541
  refresh?: number | undefined;
9531
- timeout?: number | undefined;
9532
10542
  response_key?: string | undefined;
9533
10543
  query_params?: Record<string, string> | undefined;
9534
10544
  refresh_button?: boolean | undefined;
9535
10545
  control_after_refresh?: "first" | "last" | undefined;
10546
+ timeout?: number | undefined;
9536
10547
  max_retries?: number | undefined;
9537
10548
  }, {
9538
10549
  route: string;
9539
10550
  refresh?: number | undefined;
9540
- timeout?: number | undefined;
9541
10551
  response_key?: string | undefined;
9542
10552
  query_params?: Record<string, string> | undefined;
9543
10553
  refresh_button?: boolean | undefined;
9544
10554
  control_after_refresh?: "first" | "last" | undefined;
10555
+ timeout?: number | undefined;
9545
10556
  max_retries?: number | undefined;
9546
10557
  }>>;
9547
10558
  /** Whether the widget is a multi-select widget. */
@@ -9569,12 +10580,14 @@ export declare class ComfyApp {
9569
10580
  rawLink: z.ZodOptional<z.ZodBoolean>;
9570
10581
  lazy: z.ZodOptional<z.ZodBoolean>;
9571
10582
  }, {
9572
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
10583
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
9573
10584
  image_upload: z.ZodOptional<z.ZodBoolean>;
9574
10585
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
9575
10586
  allow_batch: z.ZodOptional<z.ZodBoolean>;
9576
10587
  video_upload: z.ZodOptional<z.ZodBoolean>;
9577
10588
  audio_upload: z.ZodOptional<z.ZodBoolean>;
10589
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
10590
+ upload_subfolder: z.ZodOptional<z.ZodString>;
9578
10591
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
9579
10592
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
9580
10593
  remote: z.ZodOptional<z.ZodObject<{
@@ -9589,20 +10602,20 @@ export declare class ComfyApp {
9589
10602
  }, "strip", z.ZodTypeAny, {
9590
10603
  route: string;
9591
10604
  refresh?: number | undefined;
9592
- timeout?: number | undefined;
9593
10605
  response_key?: string | undefined;
9594
10606
  query_params?: Record<string, string> | undefined;
9595
10607
  refresh_button?: boolean | undefined;
9596
10608
  control_after_refresh?: "first" | "last" | undefined;
10609
+ timeout?: number | undefined;
9597
10610
  max_retries?: number | undefined;
9598
10611
  }, {
9599
10612
  route: string;
9600
10613
  refresh?: number | undefined;
9601
- timeout?: number | undefined;
9602
10614
  response_key?: string | undefined;
9603
10615
  query_params?: Record<string, string> | undefined;
9604
10616
  refresh_button?: boolean | undefined;
9605
10617
  control_after_refresh?: "first" | "last" | undefined;
10618
+ timeout?: number | undefined;
9606
10619
  max_retries?: number | undefined;
9607
10620
  }>>;
9608
10621
  /** Whether the widget is a multi-select widget. */
@@ -9684,7 +10697,7 @@ export declare class ComfyApp {
9684
10697
  * If true, a linked widget will be added to the node to select the mode
9685
10698
  * of `control_after_generate`.
9686
10699
  */
9687
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
10700
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
9688
10701
  }>, z.ZodTypeAny, "passthrough"> | undefined] | ["FLOAT", z.objectOutputType<z.objectUtil.extendShape<z.objectUtil.extendShape<{
9689
10702
  default: z.ZodOptional<z.ZodAny>;
9690
10703
  defaultInput: z.ZodOptional<z.ZodBoolean>;
@@ -9757,12 +10770,14 @@ export declare class ComfyApp {
9757
10770
  rawLink: z.ZodOptional<z.ZodBoolean>;
9758
10771
  lazy: z.ZodOptional<z.ZodBoolean>;
9759
10772
  }, {
9760
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
10773
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
9761
10774
  image_upload: z.ZodOptional<z.ZodBoolean>;
9762
10775
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
9763
10776
  allow_batch: z.ZodOptional<z.ZodBoolean>;
9764
10777
  video_upload: z.ZodOptional<z.ZodBoolean>;
9765
10778
  audio_upload: z.ZodOptional<z.ZodBoolean>;
10779
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
10780
+ upload_subfolder: z.ZodOptional<z.ZodString>;
9766
10781
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
9767
10782
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
9768
10783
  remote: z.ZodOptional<z.ZodObject<{
@@ -9777,20 +10792,20 @@ export declare class ComfyApp {
9777
10792
  }, "strip", z.ZodTypeAny, {
9778
10793
  route: string;
9779
10794
  refresh?: number | undefined;
9780
- timeout?: number | undefined;
9781
10795
  response_key?: string | undefined;
9782
10796
  query_params?: Record<string, string> | undefined;
9783
10797
  refresh_button?: boolean | undefined;
9784
10798
  control_after_refresh?: "first" | "last" | undefined;
10799
+ timeout?: number | undefined;
9785
10800
  max_retries?: number | undefined;
9786
10801
  }, {
9787
10802
  route: string;
9788
10803
  refresh?: number | undefined;
9789
- timeout?: number | undefined;
9790
10804
  response_key?: string | undefined;
9791
10805
  query_params?: Record<string, string> | undefined;
9792
10806
  refresh_button?: boolean | undefined;
9793
10807
  control_after_refresh?: "first" | "last" | undefined;
10808
+ timeout?: number | undefined;
9794
10809
  max_retries?: number | undefined;
9795
10810
  }>>;
9796
10811
  /** Whether the widget is a multi-select widget. */
@@ -9818,12 +10833,14 @@ export declare class ComfyApp {
9818
10833
  rawLink: z.ZodOptional<z.ZodBoolean>;
9819
10834
  lazy: z.ZodOptional<z.ZodBoolean>;
9820
10835
  }, {
9821
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
10836
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
9822
10837
  image_upload: z.ZodOptional<z.ZodBoolean>;
9823
10838
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
9824
10839
  allow_batch: z.ZodOptional<z.ZodBoolean>;
9825
10840
  video_upload: z.ZodOptional<z.ZodBoolean>;
9826
10841
  audio_upload: z.ZodOptional<z.ZodBoolean>;
10842
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
10843
+ upload_subfolder: z.ZodOptional<z.ZodString>;
9827
10844
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
9828
10845
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
9829
10846
  remote: z.ZodOptional<z.ZodObject<{
@@ -9838,20 +10855,20 @@ export declare class ComfyApp {
9838
10855
  }, "strip", z.ZodTypeAny, {
9839
10856
  route: string;
9840
10857
  refresh?: number | undefined;
9841
- timeout?: number | undefined;
9842
10858
  response_key?: string | undefined;
9843
10859
  query_params?: Record<string, string> | undefined;
9844
10860
  refresh_button?: boolean | undefined;
9845
10861
  control_after_refresh?: "first" | "last" | undefined;
10862
+ timeout?: number | undefined;
9846
10863
  max_retries?: number | undefined;
9847
10864
  }, {
9848
10865
  route: string;
9849
10866
  refresh?: number | undefined;
9850
- timeout?: number | undefined;
9851
10867
  response_key?: string | undefined;
9852
10868
  query_params?: Record<string, string> | undefined;
9853
10869
  refresh_button?: boolean | undefined;
9854
10870
  control_after_refresh?: "first" | "last" | undefined;
10871
+ timeout?: number | undefined;
9855
10872
  max_retries?: number | undefined;
9856
10873
  }>>;
9857
10874
  /** Whether the widget is a multi-select widget. */
@@ -9904,7 +10921,7 @@ export declare class ComfyApp {
9904
10921
  * If true, a linked widget will be added to the node to select the mode
9905
10922
  * of `control_after_generate`.
9906
10923
  */
9907
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
10924
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
9908
10925
  }>, z.ZodTypeAny, "passthrough"> | undefined] | ["FLOAT", z.objectOutputType<z.objectUtil.extendShape<z.objectUtil.extendShape<{
9909
10926
  default: z.ZodOptional<z.ZodAny>;
9910
10927
  defaultInput: z.ZodOptional<z.ZodBoolean>;
@@ -9977,12 +10994,14 @@ export declare class ComfyApp {
9977
10994
  rawLink: z.ZodOptional<z.ZodBoolean>;
9978
10995
  lazy: z.ZodOptional<z.ZodBoolean>;
9979
10996
  }, {
9980
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
10997
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
9981
10998
  image_upload: z.ZodOptional<z.ZodBoolean>;
9982
10999
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
9983
11000
  allow_batch: z.ZodOptional<z.ZodBoolean>;
9984
11001
  video_upload: z.ZodOptional<z.ZodBoolean>;
9985
11002
  audio_upload: z.ZodOptional<z.ZodBoolean>;
11003
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
11004
+ upload_subfolder: z.ZodOptional<z.ZodString>;
9986
11005
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
9987
11006
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
9988
11007
  remote: z.ZodOptional<z.ZodObject<{
@@ -9997,20 +11016,20 @@ export declare class ComfyApp {
9997
11016
  }, "strip", z.ZodTypeAny, {
9998
11017
  route: string;
9999
11018
  refresh?: number | undefined;
10000
- timeout?: number | undefined;
10001
11019
  response_key?: string | undefined;
10002
11020
  query_params?: Record<string, string> | undefined;
10003
11021
  refresh_button?: boolean | undefined;
10004
11022
  control_after_refresh?: "first" | "last" | undefined;
11023
+ timeout?: number | undefined;
10005
11024
  max_retries?: number | undefined;
10006
11025
  }, {
10007
11026
  route: string;
10008
11027
  refresh?: number | undefined;
10009
- timeout?: number | undefined;
10010
11028
  response_key?: string | undefined;
10011
11029
  query_params?: Record<string, string> | undefined;
10012
11030
  refresh_button?: boolean | undefined;
10013
11031
  control_after_refresh?: "first" | "last" | undefined;
11032
+ timeout?: number | undefined;
10014
11033
  max_retries?: number | undefined;
10015
11034
  }>>;
10016
11035
  /** Whether the widget is a multi-select widget. */
@@ -10038,12 +11057,14 @@ export declare class ComfyApp {
10038
11057
  rawLink: z.ZodOptional<z.ZodBoolean>;
10039
11058
  lazy: z.ZodOptional<z.ZodBoolean>;
10040
11059
  }, {
10041
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
11060
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
10042
11061
  image_upload: z.ZodOptional<z.ZodBoolean>;
10043
11062
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
10044
11063
  allow_batch: z.ZodOptional<z.ZodBoolean>;
10045
11064
  video_upload: z.ZodOptional<z.ZodBoolean>;
10046
11065
  audio_upload: z.ZodOptional<z.ZodBoolean>;
11066
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
11067
+ upload_subfolder: z.ZodOptional<z.ZodString>;
10047
11068
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
10048
11069
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
10049
11070
  remote: z.ZodOptional<z.ZodObject<{
@@ -10058,20 +11079,20 @@ export declare class ComfyApp {
10058
11079
  }, "strip", z.ZodTypeAny, {
10059
11080
  route: string;
10060
11081
  refresh?: number | undefined;
10061
- timeout?: number | undefined;
10062
11082
  response_key?: string | undefined;
10063
11083
  query_params?: Record<string, string> | undefined;
10064
11084
  refresh_button?: boolean | undefined;
10065
11085
  control_after_refresh?: "first" | "last" | undefined;
11086
+ timeout?: number | undefined;
10066
11087
  max_retries?: number | undefined;
10067
11088
  }, {
10068
11089
  route: string;
10069
11090
  refresh?: number | undefined;
10070
- timeout?: number | undefined;
10071
11091
  response_key?: string | undefined;
10072
11092
  query_params?: Record<string, string> | undefined;
10073
11093
  refresh_button?: boolean | undefined;
10074
11094
  control_after_refresh?: "first" | "last" | undefined;
11095
+ timeout?: number | undefined;
10075
11096
  max_retries?: number | undefined;
10076
11097
  }>>;
10077
11098
  /** Whether the widget is a multi-select widget. */
@@ -10126,7 +11147,7 @@ export declare class ComfyApp {
10126
11147
  * If true, a linked widget will be added to the node to select the mode
10127
11148
  * of `control_after_generate`.
10128
11149
  */
10129
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
11150
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
10130
11151
  }>, z.ZodTypeAny, "passthrough"> | undefined] | ["FLOAT", z.objectInputType<z.objectUtil.extendShape<z.objectUtil.extendShape<{
10131
11152
  default: z.ZodOptional<z.ZodAny>;
10132
11153
  defaultInput: z.ZodOptional<z.ZodBoolean>;
@@ -10199,12 +11220,14 @@ export declare class ComfyApp {
10199
11220
  rawLink: z.ZodOptional<z.ZodBoolean>;
10200
11221
  lazy: z.ZodOptional<z.ZodBoolean>;
10201
11222
  }, {
10202
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
11223
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
10203
11224
  image_upload: z.ZodOptional<z.ZodBoolean>;
10204
11225
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
10205
11226
  allow_batch: z.ZodOptional<z.ZodBoolean>;
10206
11227
  video_upload: z.ZodOptional<z.ZodBoolean>;
10207
11228
  audio_upload: z.ZodOptional<z.ZodBoolean>;
11229
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
11230
+ upload_subfolder: z.ZodOptional<z.ZodString>;
10208
11231
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
10209
11232
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
10210
11233
  remote: z.ZodOptional<z.ZodObject<{
@@ -10219,20 +11242,20 @@ export declare class ComfyApp {
10219
11242
  }, "strip", z.ZodTypeAny, {
10220
11243
  route: string;
10221
11244
  refresh?: number | undefined;
10222
- timeout?: number | undefined;
10223
11245
  response_key?: string | undefined;
10224
11246
  query_params?: Record<string, string> | undefined;
10225
11247
  refresh_button?: boolean | undefined;
10226
11248
  control_after_refresh?: "first" | "last" | undefined;
11249
+ timeout?: number | undefined;
10227
11250
  max_retries?: number | undefined;
10228
11251
  }, {
10229
11252
  route: string;
10230
11253
  refresh?: number | undefined;
10231
- timeout?: number | undefined;
10232
11254
  response_key?: string | undefined;
10233
11255
  query_params?: Record<string, string> | undefined;
10234
11256
  refresh_button?: boolean | undefined;
10235
11257
  control_after_refresh?: "first" | "last" | undefined;
11258
+ timeout?: number | undefined;
10236
11259
  max_retries?: number | undefined;
10237
11260
  }>>;
10238
11261
  /** Whether the widget is a multi-select widget. */
@@ -10260,12 +11283,14 @@ export declare class ComfyApp {
10260
11283
  rawLink: z.ZodOptional<z.ZodBoolean>;
10261
11284
  lazy: z.ZodOptional<z.ZodBoolean>;
10262
11285
  }, {
10263
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
11286
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
10264
11287
  image_upload: z.ZodOptional<z.ZodBoolean>;
10265
11288
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
10266
11289
  allow_batch: z.ZodOptional<z.ZodBoolean>;
10267
11290
  video_upload: z.ZodOptional<z.ZodBoolean>;
10268
11291
  audio_upload: z.ZodOptional<z.ZodBoolean>;
11292
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
11293
+ upload_subfolder: z.ZodOptional<z.ZodString>;
10269
11294
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
10270
11295
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
10271
11296
  remote: z.ZodOptional<z.ZodObject<{
@@ -10280,20 +11305,20 @@ export declare class ComfyApp {
10280
11305
  }, "strip", z.ZodTypeAny, {
10281
11306
  route: string;
10282
11307
  refresh?: number | undefined;
10283
- timeout?: number | undefined;
10284
11308
  response_key?: string | undefined;
10285
11309
  query_params?: Record<string, string> | undefined;
10286
11310
  refresh_button?: boolean | undefined;
10287
11311
  control_after_refresh?: "first" | "last" | undefined;
11312
+ timeout?: number | undefined;
10288
11313
  max_retries?: number | undefined;
10289
11314
  }, {
10290
11315
  route: string;
10291
11316
  refresh?: number | undefined;
10292
- timeout?: number | undefined;
10293
11317
  response_key?: string | undefined;
10294
11318
  query_params?: Record<string, string> | undefined;
10295
11319
  refresh_button?: boolean | undefined;
10296
11320
  control_after_refresh?: "first" | "last" | undefined;
11321
+ timeout?: number | undefined;
10297
11322
  max_retries?: number | undefined;
10298
11323
  }>>;
10299
11324
  /** Whether the widget is a multi-select widget. */
@@ -10346,7 +11371,7 @@ export declare class ComfyApp {
10346
11371
  * If true, a linked widget will be added to the node to select the mode
10347
11372
  * of `control_after_generate`.
10348
11373
  */
10349
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
11374
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
10350
11375
  }>, z.ZodTypeAny, "passthrough"> | undefined] | ["FLOAT", z.objectInputType<z.objectUtil.extendShape<z.objectUtil.extendShape<{
10351
11376
  default: z.ZodOptional<z.ZodAny>;
10352
11377
  defaultInput: z.ZodOptional<z.ZodBoolean>;
@@ -10419,12 +11444,14 @@ export declare class ComfyApp {
10419
11444
  rawLink: z.ZodOptional<z.ZodBoolean>;
10420
11445
  lazy: z.ZodOptional<z.ZodBoolean>;
10421
11446
  }, {
10422
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
11447
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
10423
11448
  image_upload: z.ZodOptional<z.ZodBoolean>;
10424
11449
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
10425
11450
  allow_batch: z.ZodOptional<z.ZodBoolean>;
10426
11451
  video_upload: z.ZodOptional<z.ZodBoolean>;
10427
11452
  audio_upload: z.ZodOptional<z.ZodBoolean>;
11453
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
11454
+ upload_subfolder: z.ZodOptional<z.ZodString>;
10428
11455
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
10429
11456
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
10430
11457
  remote: z.ZodOptional<z.ZodObject<{
@@ -10439,20 +11466,20 @@ export declare class ComfyApp {
10439
11466
  }, "strip", z.ZodTypeAny, {
10440
11467
  route: string;
10441
11468
  refresh?: number | undefined;
10442
- timeout?: number | undefined;
10443
11469
  response_key?: string | undefined;
10444
11470
  query_params?: Record<string, string> | undefined;
10445
11471
  refresh_button?: boolean | undefined;
10446
11472
  control_after_refresh?: "first" | "last" | undefined;
11473
+ timeout?: number | undefined;
10447
11474
  max_retries?: number | undefined;
10448
11475
  }, {
10449
11476
  route: string;
10450
11477
  refresh?: number | undefined;
10451
- timeout?: number | undefined;
10452
11478
  response_key?: string | undefined;
10453
11479
  query_params?: Record<string, string> | undefined;
10454
11480
  refresh_button?: boolean | undefined;
10455
11481
  control_after_refresh?: "first" | "last" | undefined;
11482
+ timeout?: number | undefined;
10456
11483
  max_retries?: number | undefined;
10457
11484
  }>>;
10458
11485
  /** Whether the widget is a multi-select widget. */
@@ -10480,12 +11507,14 @@ export declare class ComfyApp {
10480
11507
  rawLink: z.ZodOptional<z.ZodBoolean>;
10481
11508
  lazy: z.ZodOptional<z.ZodBoolean>;
10482
11509
  }, {
10483
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
11510
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
10484
11511
  image_upload: z.ZodOptional<z.ZodBoolean>;
10485
11512
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
10486
11513
  allow_batch: z.ZodOptional<z.ZodBoolean>;
10487
11514
  video_upload: z.ZodOptional<z.ZodBoolean>;
10488
11515
  audio_upload: z.ZodOptional<z.ZodBoolean>;
11516
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
11517
+ upload_subfolder: z.ZodOptional<z.ZodString>;
10489
11518
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
10490
11519
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
10491
11520
  remote: z.ZodOptional<z.ZodObject<{
@@ -10500,20 +11529,20 @@ export declare class ComfyApp {
10500
11529
  }, "strip", z.ZodTypeAny, {
10501
11530
  route: string;
10502
11531
  refresh?: number | undefined;
10503
- timeout?: number | undefined;
10504
11532
  response_key?: string | undefined;
10505
11533
  query_params?: Record<string, string> | undefined;
10506
11534
  refresh_button?: boolean | undefined;
10507
11535
  control_after_refresh?: "first" | "last" | undefined;
11536
+ timeout?: number | undefined;
10508
11537
  max_retries?: number | undefined;
10509
11538
  }, {
10510
11539
  route: string;
10511
11540
  refresh?: number | undefined;
10512
- timeout?: number | undefined;
10513
11541
  response_key?: string | undefined;
10514
11542
  query_params?: Record<string, string> | undefined;
10515
11543
  refresh_button?: boolean | undefined;
10516
11544
  control_after_refresh?: "first" | "last" | undefined;
11545
+ timeout?: number | undefined;
10517
11546
  max_retries?: number | undefined;
10518
11547
  }>>;
10519
11548
  /** Whether the widget is a multi-select widget. */
@@ -10556,6 +11585,7 @@ export declare class ComfyApp {
10556
11585
  python_module: z.ZodString;
10557
11586
  deprecated: z.ZodOptional<z.ZodBoolean>;
10558
11587
  experimental: z.ZodOptional<z.ZodBoolean>;
11588
+ dev_only: z.ZodOptional<z.ZodBoolean>;
10559
11589
  /**
10560
11590
  * Whether the node is an API node. Running API nodes requires login to
10561
11591
  * Comfy Org account.
@@ -10568,10 +11598,81 @@ export declare class ComfyApp {
10568
11598
  * Keys are 'required', 'optional', etc., values are arrays of input names.
10569
11599
  */
10570
11600
  input_order: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
11601
+ /**
11602
+ * Alternative names for search. Useful for synonyms, abbreviations,
11603
+ * or old names after renaming a node.
11604
+ */
11605
+ search_aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
11606
+ /**
11607
+ * Price badge definition for API nodes.
11608
+ * Contains a JSONata expression to calculate pricing based on widget values
11609
+ * and input connectivity.
11610
+ */
11611
+ price_badge: z.ZodOptional<z.ZodObject<{
11612
+ engine: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"jsonata">>>;
11613
+ depends_on: z.ZodDefault<z.ZodOptional<z.ZodObject<{
11614
+ widgets: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
11615
+ name: z.ZodString;
11616
+ type: z.ZodString;
11617
+ }, "strip", z.ZodTypeAny, {
11618
+ type: string;
11619
+ name: string;
11620
+ }, {
11621
+ type: string;
11622
+ name: string;
11623
+ }>, "many">>>;
11624
+ inputs: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
11625
+ /**
11626
+ * Autogrow input group names to track.
11627
+ * For each group, the count of connected inputs will be available in the
11628
+ * JSONata context as `g.<groupName>`.
11629
+ * Example: `input_groups: ["reference_videos"]` makes `g.reference_videos`
11630
+ * available with the count of connected inputs like `reference_videos.character1`, etc.
11631
+ */
11632
+ input_groups: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
11633
+ }, "strip", z.ZodTypeAny, {
11634
+ inputs: string[];
11635
+ widgets: {
11636
+ type: string;
11637
+ name: string;
11638
+ }[];
11639
+ input_groups: string[];
11640
+ }, {
11641
+ inputs?: string[] | undefined;
11642
+ widgets?: {
11643
+ type: string;
11644
+ name: string;
11645
+ }[] | undefined;
11646
+ input_groups?: string[] | undefined;
11647
+ }>>>;
11648
+ expr: z.ZodString;
11649
+ }, "strip", z.ZodTypeAny, {
11650
+ engine: "jsonata";
11651
+ depends_on: {
11652
+ inputs: string[];
11653
+ widgets: {
11654
+ type: string;
11655
+ name: string;
11656
+ }[];
11657
+ input_groups: string[];
11658
+ };
11659
+ expr: string;
11660
+ }, {
11661
+ expr: string;
11662
+ engine?: "jsonata" | undefined;
11663
+ depends_on?: {
11664
+ inputs?: string[] | undefined;
11665
+ widgets?: {
11666
+ type: string;
11667
+ name: string;
11668
+ }[] | undefined;
11669
+ input_groups?: string[] | undefined;
11670
+ } | undefined;
11671
+ }>>;
10571
11672
  }, "strip", z.ZodTypeAny, {
10572
11673
  name: string;
10573
- description: string;
10574
11674
  category: string;
11675
+ description: string;
10575
11676
  display_name: string;
10576
11677
  output_node: boolean;
10577
11678
  python_module: string;
@@ -10602,7 +11703,7 @@ export declare class ComfyApp {
10602
11703
  * If true, a linked widget will be added to the node to select the mode
10603
11704
  * of `control_after_generate`.
10604
11705
  */
10605
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
11706
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
10606
11707
  }>, z.ZodTypeAny, "passthrough"> | undefined] | ["FLOAT", z.objectOutputType<z.objectUtil.extendShape<z.objectUtil.extendShape<{
10607
11708
  default: z.ZodOptional<z.ZodAny>;
10608
11709
  defaultInput: z.ZodOptional<z.ZodBoolean>;
@@ -10675,12 +11776,14 @@ export declare class ComfyApp {
10675
11776
  rawLink: z.ZodOptional<z.ZodBoolean>;
10676
11777
  lazy: z.ZodOptional<z.ZodBoolean>;
10677
11778
  }, {
10678
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
11779
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
10679
11780
  image_upload: z.ZodOptional<z.ZodBoolean>;
10680
11781
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
10681
11782
  allow_batch: z.ZodOptional<z.ZodBoolean>;
10682
11783
  video_upload: z.ZodOptional<z.ZodBoolean>;
10683
11784
  audio_upload: z.ZodOptional<z.ZodBoolean>;
11785
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
11786
+ upload_subfolder: z.ZodOptional<z.ZodString>;
10684
11787
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
10685
11788
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
10686
11789
  remote: z.ZodOptional<z.ZodObject<{
@@ -10695,20 +11798,20 @@ export declare class ComfyApp {
10695
11798
  }, "strip", z.ZodTypeAny, {
10696
11799
  route: string;
10697
11800
  refresh?: number | undefined;
10698
- timeout?: number | undefined;
10699
11801
  response_key?: string | undefined;
10700
11802
  query_params?: Record<string, string> | undefined;
10701
11803
  refresh_button?: boolean | undefined;
10702
11804
  control_after_refresh?: "first" | "last" | undefined;
11805
+ timeout?: number | undefined;
10703
11806
  max_retries?: number | undefined;
10704
11807
  }, {
10705
11808
  route: string;
10706
11809
  refresh?: number | undefined;
10707
- timeout?: number | undefined;
10708
11810
  response_key?: string | undefined;
10709
11811
  query_params?: Record<string, string> | undefined;
10710
11812
  refresh_button?: boolean | undefined;
10711
11813
  control_after_refresh?: "first" | "last" | undefined;
11814
+ timeout?: number | undefined;
10712
11815
  max_retries?: number | undefined;
10713
11816
  }>>;
10714
11817
  /** Whether the widget is a multi-select widget. */
@@ -10736,12 +11839,14 @@ export declare class ComfyApp {
10736
11839
  rawLink: z.ZodOptional<z.ZodBoolean>;
10737
11840
  lazy: z.ZodOptional<z.ZodBoolean>;
10738
11841
  }, {
10739
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
11842
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
10740
11843
  image_upload: z.ZodOptional<z.ZodBoolean>;
10741
11844
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
10742
11845
  allow_batch: z.ZodOptional<z.ZodBoolean>;
10743
11846
  video_upload: z.ZodOptional<z.ZodBoolean>;
10744
11847
  audio_upload: z.ZodOptional<z.ZodBoolean>;
11848
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
11849
+ upload_subfolder: z.ZodOptional<z.ZodString>;
10745
11850
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
10746
11851
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
10747
11852
  remote: z.ZodOptional<z.ZodObject<{
@@ -10756,20 +11861,20 @@ export declare class ComfyApp {
10756
11861
  }, "strip", z.ZodTypeAny, {
10757
11862
  route: string;
10758
11863
  refresh?: number | undefined;
10759
- timeout?: number | undefined;
10760
11864
  response_key?: string | undefined;
10761
11865
  query_params?: Record<string, string> | undefined;
10762
11866
  refresh_button?: boolean | undefined;
10763
11867
  control_after_refresh?: "first" | "last" | undefined;
11868
+ timeout?: number | undefined;
10764
11869
  max_retries?: number | undefined;
10765
11870
  }, {
10766
11871
  route: string;
10767
11872
  refresh?: number | undefined;
10768
- timeout?: number | undefined;
10769
11873
  response_key?: string | undefined;
10770
11874
  query_params?: Record<string, string> | undefined;
10771
11875
  refresh_button?: boolean | undefined;
10772
11876
  control_after_refresh?: "first" | "last" | undefined;
11877
+ timeout?: number | undefined;
10773
11878
  max_retries?: number | undefined;
10774
11879
  }>>;
10775
11880
  /** Whether the widget is a multi-select widget. */
@@ -10822,7 +11927,7 @@ export declare class ComfyApp {
10822
11927
  * If true, a linked widget will be added to the node to select the mode
10823
11928
  * of `control_after_generate`.
10824
11929
  */
10825
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
11930
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
10826
11931
  }>, z.ZodTypeAny, "passthrough"> | undefined] | ["FLOAT", z.objectOutputType<z.objectUtil.extendShape<z.objectUtil.extendShape<{
10827
11932
  default: z.ZodOptional<z.ZodAny>;
10828
11933
  defaultInput: z.ZodOptional<z.ZodBoolean>;
@@ -10895,12 +12000,14 @@ export declare class ComfyApp {
10895
12000
  rawLink: z.ZodOptional<z.ZodBoolean>;
10896
12001
  lazy: z.ZodOptional<z.ZodBoolean>;
10897
12002
  }, {
10898
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
12003
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
10899
12004
  image_upload: z.ZodOptional<z.ZodBoolean>;
10900
12005
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
10901
12006
  allow_batch: z.ZodOptional<z.ZodBoolean>;
10902
12007
  video_upload: z.ZodOptional<z.ZodBoolean>;
10903
12008
  audio_upload: z.ZodOptional<z.ZodBoolean>;
12009
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
12010
+ upload_subfolder: z.ZodOptional<z.ZodString>;
10904
12011
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
10905
12012
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
10906
12013
  remote: z.ZodOptional<z.ZodObject<{
@@ -10915,20 +12022,20 @@ export declare class ComfyApp {
10915
12022
  }, "strip", z.ZodTypeAny, {
10916
12023
  route: string;
10917
12024
  refresh?: number | undefined;
10918
- timeout?: number | undefined;
10919
12025
  response_key?: string | undefined;
10920
12026
  query_params?: Record<string, string> | undefined;
10921
12027
  refresh_button?: boolean | undefined;
10922
12028
  control_after_refresh?: "first" | "last" | undefined;
12029
+ timeout?: number | undefined;
10923
12030
  max_retries?: number | undefined;
10924
12031
  }, {
10925
12032
  route: string;
10926
12033
  refresh?: number | undefined;
10927
- timeout?: number | undefined;
10928
12034
  response_key?: string | undefined;
10929
12035
  query_params?: Record<string, string> | undefined;
10930
12036
  refresh_button?: boolean | undefined;
10931
12037
  control_after_refresh?: "first" | "last" | undefined;
12038
+ timeout?: number | undefined;
10932
12039
  max_retries?: number | undefined;
10933
12040
  }>>;
10934
12041
  /** Whether the widget is a multi-select widget. */
@@ -10956,12 +12063,14 @@ export declare class ComfyApp {
10956
12063
  rawLink: z.ZodOptional<z.ZodBoolean>;
10957
12064
  lazy: z.ZodOptional<z.ZodBoolean>;
10958
12065
  }, {
10959
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
12066
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
10960
12067
  image_upload: z.ZodOptional<z.ZodBoolean>;
10961
12068
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
10962
12069
  allow_batch: z.ZodOptional<z.ZodBoolean>;
10963
12070
  video_upload: z.ZodOptional<z.ZodBoolean>;
10964
12071
  audio_upload: z.ZodOptional<z.ZodBoolean>;
12072
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
12073
+ upload_subfolder: z.ZodOptional<z.ZodString>;
10965
12074
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
10966
12075
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
10967
12076
  remote: z.ZodOptional<z.ZodObject<{
@@ -10976,20 +12085,20 @@ export declare class ComfyApp {
10976
12085
  }, "strip", z.ZodTypeAny, {
10977
12086
  route: string;
10978
12087
  refresh?: number | undefined;
10979
- timeout?: number | undefined;
10980
12088
  response_key?: string | undefined;
10981
12089
  query_params?: Record<string, string> | undefined;
10982
12090
  refresh_button?: boolean | undefined;
10983
12091
  control_after_refresh?: "first" | "last" | undefined;
12092
+ timeout?: number | undefined;
10984
12093
  max_retries?: number | undefined;
10985
12094
  }, {
10986
12095
  route: string;
10987
12096
  refresh?: number | undefined;
10988
- timeout?: number | undefined;
10989
12097
  response_key?: string | undefined;
10990
12098
  query_params?: Record<string, string> | undefined;
10991
12099
  refresh_button?: boolean | undefined;
10992
12100
  control_after_refresh?: "first" | "last" | undefined;
12101
+ timeout?: number | undefined;
10993
12102
  max_retries?: number | undefined;
10994
12103
  }>>;
10995
12104
  /** Whether the widget is a multi-select widget. */
@@ -11026,12 +12135,26 @@ export declare class ComfyApp {
11026
12135
  output_name?: string[] | undefined;
11027
12136
  output_tooltips?: string[] | undefined;
11028
12137
  output_matchtypes?: (string | undefined)[] | undefined;
12138
+ dev_only?: boolean | undefined;
11029
12139
  api_node?: boolean | undefined;
11030
12140
  input_order?: Record<string, string[]> | undefined;
12141
+ search_aliases?: string[] | undefined;
12142
+ price_badge?: {
12143
+ engine: "jsonata";
12144
+ depends_on: {
12145
+ inputs: string[];
12146
+ widgets: {
12147
+ type: string;
12148
+ name: string;
12149
+ }[];
12150
+ input_groups: string[];
12151
+ };
12152
+ expr: string;
12153
+ } | undefined;
11031
12154
  }, {
11032
12155
  name: string;
11033
- description: string;
11034
12156
  category: string;
12157
+ description: string;
11035
12158
  display_name: string;
11036
12159
  output_node: boolean;
11037
12160
  python_module: string;
@@ -11062,7 +12185,7 @@ export declare class ComfyApp {
11062
12185
  * If true, a linked widget will be added to the node to select the mode
11063
12186
  * of `control_after_generate`.
11064
12187
  */
11065
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
12188
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
11066
12189
  }>, z.ZodTypeAny, "passthrough"> | undefined] | ["FLOAT", z.objectInputType<z.objectUtil.extendShape<z.objectUtil.extendShape<{
11067
12190
  default: z.ZodOptional<z.ZodAny>;
11068
12191
  defaultInput: z.ZodOptional<z.ZodBoolean>;
@@ -11135,12 +12258,14 @@ export declare class ComfyApp {
11135
12258
  rawLink: z.ZodOptional<z.ZodBoolean>;
11136
12259
  lazy: z.ZodOptional<z.ZodBoolean>;
11137
12260
  }, {
11138
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
12261
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
11139
12262
  image_upload: z.ZodOptional<z.ZodBoolean>;
11140
12263
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
11141
12264
  allow_batch: z.ZodOptional<z.ZodBoolean>;
11142
12265
  video_upload: z.ZodOptional<z.ZodBoolean>;
11143
12266
  audio_upload: z.ZodOptional<z.ZodBoolean>;
12267
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
12268
+ upload_subfolder: z.ZodOptional<z.ZodString>;
11144
12269
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
11145
12270
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
11146
12271
  remote: z.ZodOptional<z.ZodObject<{
@@ -11155,20 +12280,20 @@ export declare class ComfyApp {
11155
12280
  }, "strip", z.ZodTypeAny, {
11156
12281
  route: string;
11157
12282
  refresh?: number | undefined;
11158
- timeout?: number | undefined;
11159
12283
  response_key?: string | undefined;
11160
12284
  query_params?: Record<string, string> | undefined;
11161
12285
  refresh_button?: boolean | undefined;
11162
12286
  control_after_refresh?: "first" | "last" | undefined;
12287
+ timeout?: number | undefined;
11163
12288
  max_retries?: number | undefined;
11164
12289
  }, {
11165
12290
  route: string;
11166
12291
  refresh?: number | undefined;
11167
- timeout?: number | undefined;
11168
12292
  response_key?: string | undefined;
11169
12293
  query_params?: Record<string, string> | undefined;
11170
12294
  refresh_button?: boolean | undefined;
11171
12295
  control_after_refresh?: "first" | "last" | undefined;
12296
+ timeout?: number | undefined;
11172
12297
  max_retries?: number | undefined;
11173
12298
  }>>;
11174
12299
  /** Whether the widget is a multi-select widget. */
@@ -11196,12 +12321,14 @@ export declare class ComfyApp {
11196
12321
  rawLink: z.ZodOptional<z.ZodBoolean>;
11197
12322
  lazy: z.ZodOptional<z.ZodBoolean>;
11198
12323
  }, {
11199
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
12324
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
11200
12325
  image_upload: z.ZodOptional<z.ZodBoolean>;
11201
12326
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
11202
12327
  allow_batch: z.ZodOptional<z.ZodBoolean>;
11203
12328
  video_upload: z.ZodOptional<z.ZodBoolean>;
11204
12329
  audio_upload: z.ZodOptional<z.ZodBoolean>;
12330
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
12331
+ upload_subfolder: z.ZodOptional<z.ZodString>;
11205
12332
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
11206
12333
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
11207
12334
  remote: z.ZodOptional<z.ZodObject<{
@@ -11216,20 +12343,20 @@ export declare class ComfyApp {
11216
12343
  }, "strip", z.ZodTypeAny, {
11217
12344
  route: string;
11218
12345
  refresh?: number | undefined;
11219
- timeout?: number | undefined;
11220
12346
  response_key?: string | undefined;
11221
12347
  query_params?: Record<string, string> | undefined;
11222
12348
  refresh_button?: boolean | undefined;
11223
12349
  control_after_refresh?: "first" | "last" | undefined;
12350
+ timeout?: number | undefined;
11224
12351
  max_retries?: number | undefined;
11225
12352
  }, {
11226
12353
  route: string;
11227
12354
  refresh?: number | undefined;
11228
- timeout?: number | undefined;
11229
12355
  response_key?: string | undefined;
11230
12356
  query_params?: Record<string, string> | undefined;
11231
12357
  refresh_button?: boolean | undefined;
11232
12358
  control_after_refresh?: "first" | "last" | undefined;
12359
+ timeout?: number | undefined;
11233
12360
  max_retries?: number | undefined;
11234
12361
  }>>;
11235
12362
  /** Whether the widget is a multi-select widget. */
@@ -11282,7 +12409,7 @@ export declare class ComfyApp {
11282
12409
  * If true, a linked widget will be added to the node to select the mode
11283
12410
  * of `control_after_generate`.
11284
12411
  */
11285
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
12412
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
11286
12413
  }>, z.ZodTypeAny, "passthrough"> | undefined] | ["FLOAT", z.objectInputType<z.objectUtil.extendShape<z.objectUtil.extendShape<{
11287
12414
  default: z.ZodOptional<z.ZodAny>;
11288
12415
  defaultInput: z.ZodOptional<z.ZodBoolean>;
@@ -11355,12 +12482,14 @@ export declare class ComfyApp {
11355
12482
  rawLink: z.ZodOptional<z.ZodBoolean>;
11356
12483
  lazy: z.ZodOptional<z.ZodBoolean>;
11357
12484
  }, {
11358
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
12485
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
11359
12486
  image_upload: z.ZodOptional<z.ZodBoolean>;
11360
12487
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
11361
12488
  allow_batch: z.ZodOptional<z.ZodBoolean>;
11362
12489
  video_upload: z.ZodOptional<z.ZodBoolean>;
11363
12490
  audio_upload: z.ZodOptional<z.ZodBoolean>;
12491
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
12492
+ upload_subfolder: z.ZodOptional<z.ZodString>;
11364
12493
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
11365
12494
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
11366
12495
  remote: z.ZodOptional<z.ZodObject<{
@@ -11375,20 +12504,20 @@ export declare class ComfyApp {
11375
12504
  }, "strip", z.ZodTypeAny, {
11376
12505
  route: string;
11377
12506
  refresh?: number | undefined;
11378
- timeout?: number | undefined;
11379
12507
  response_key?: string | undefined;
11380
12508
  query_params?: Record<string, string> | undefined;
11381
12509
  refresh_button?: boolean | undefined;
11382
12510
  control_after_refresh?: "first" | "last" | undefined;
12511
+ timeout?: number | undefined;
11383
12512
  max_retries?: number | undefined;
11384
12513
  }, {
11385
12514
  route: string;
11386
12515
  refresh?: number | undefined;
11387
- timeout?: number | undefined;
11388
12516
  response_key?: string | undefined;
11389
12517
  query_params?: Record<string, string> | undefined;
11390
12518
  refresh_button?: boolean | undefined;
11391
12519
  control_after_refresh?: "first" | "last" | undefined;
12520
+ timeout?: number | undefined;
11392
12521
  max_retries?: number | undefined;
11393
12522
  }>>;
11394
12523
  /** Whether the widget is a multi-select widget. */
@@ -11416,12 +12545,14 @@ export declare class ComfyApp {
11416
12545
  rawLink: z.ZodOptional<z.ZodBoolean>;
11417
12546
  lazy: z.ZodOptional<z.ZodBoolean>;
11418
12547
  }, {
11419
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
12548
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
11420
12549
  image_upload: z.ZodOptional<z.ZodBoolean>;
11421
12550
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
11422
12551
  allow_batch: z.ZodOptional<z.ZodBoolean>;
11423
12552
  video_upload: z.ZodOptional<z.ZodBoolean>;
11424
12553
  audio_upload: z.ZodOptional<z.ZodBoolean>;
12554
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
12555
+ upload_subfolder: z.ZodOptional<z.ZodString>;
11425
12556
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
11426
12557
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
11427
12558
  remote: z.ZodOptional<z.ZodObject<{
@@ -11436,20 +12567,20 @@ export declare class ComfyApp {
11436
12567
  }, "strip", z.ZodTypeAny, {
11437
12568
  route: string;
11438
12569
  refresh?: number | undefined;
11439
- timeout?: number | undefined;
11440
12570
  response_key?: string | undefined;
11441
12571
  query_params?: Record<string, string> | undefined;
11442
12572
  refresh_button?: boolean | undefined;
11443
12573
  control_after_refresh?: "first" | "last" | undefined;
12574
+ timeout?: number | undefined;
11444
12575
  max_retries?: number | undefined;
11445
12576
  }, {
11446
12577
  route: string;
11447
12578
  refresh?: number | undefined;
11448
- timeout?: number | undefined;
11449
12579
  response_key?: string | undefined;
11450
12580
  query_params?: Record<string, string> | undefined;
11451
12581
  refresh_button?: boolean | undefined;
11452
12582
  control_after_refresh?: "first" | "last" | undefined;
12583
+ timeout?: number | undefined;
11453
12584
  max_retries?: number | undefined;
11454
12585
  }>>;
11455
12586
  /** Whether the widget is a multi-select widget. */
@@ -11486,10 +12617,26 @@ export declare class ComfyApp {
11486
12617
  output_name?: string[] | undefined;
11487
12618
  output_tooltips?: string[] | undefined;
11488
12619
  output_matchtypes?: (string | undefined)[] | undefined;
12620
+ dev_only?: boolean | undefined;
11489
12621
  api_node?: boolean | undefined;
11490
12622
  input_order?: Record<string, string[]> | undefined;
12623
+ search_aliases?: string[] | undefined;
12624
+ price_badge?: {
12625
+ expr: string;
12626
+ engine?: "jsonata" | undefined;
12627
+ depends_on?: {
12628
+ inputs?: string[] | undefined;
12629
+ widgets?: {
12630
+ type: string;
12631
+ name: string;
12632
+ }[] | undefined;
12633
+ input_groups?: string[] | undefined;
12634
+ } | undefined;
12635
+ } | undefined;
11491
12636
  }>;
11492
12637
 
12638
+ declare const zCustomNodesI18n: z.ZodRecord<z.ZodString, z.ZodUnknown>;
12639
+
11493
12640
  declare const zDeviceStats: z.ZodObject<{
11494
12641
  name: z.ZodString;
11495
12642
  type: z.ZodString;
@@ -11842,7 +12989,7 @@ export declare class ComfyApp {
11842
12989
  * If true, a linked widget will be added to the node to select the mode
11843
12990
  * of `control_after_generate`.
11844
12991
  */
11845
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
12992
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
11846
12993
  }>, "passthrough", z.ZodTypeAny, z.objectOutputType<z.objectUtil.extendShape<z.objectUtil.extendShape<{
11847
12994
  default: z.ZodOptional<z.ZodAny>;
11848
12995
  defaultInput: z.ZodOptional<z.ZodBoolean>;
@@ -11868,7 +13015,7 @@ export declare class ComfyApp {
11868
13015
  * If true, a linked widget will be added to the node to select the mode
11869
13016
  * of `control_after_generate`.
11870
13017
  */
11871
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
13018
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
11872
13019
  }>, z.ZodTypeAny, "passthrough">, z.objectInputType<z.objectUtil.extendShape<z.objectUtil.extendShape<{
11873
13020
  default: z.ZodOptional<z.ZodAny>;
11874
13021
  defaultInput: z.ZodOptional<z.ZodBoolean>;
@@ -11894,7 +13041,7 @@ export declare class ComfyApp {
11894
13041
  * If true, a linked widget will be added to the node to select the mode
11895
13042
  * of `control_after_generate`.
11896
13043
  */
11897
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
13044
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
11898
13045
  }>, z.ZodTypeAny, "passthrough">>>], null>, z.ZodTuple<[z.ZodLiteral<"FLOAT">, z.ZodOptional<z.ZodObject<z.objectUtil.extendShape<z.objectUtil.extendShape<{
11899
13046
  default: z.ZodOptional<z.ZodAny>;
11900
13047
  defaultInput: z.ZodOptional<z.ZodBoolean>;
@@ -12083,12 +13230,14 @@ export declare class ComfyApp {
12083
13230
  rawLink: z.ZodOptional<z.ZodBoolean>;
12084
13231
  lazy: z.ZodOptional<z.ZodBoolean>;
12085
13232
  }, {
12086
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
13233
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
12087
13234
  image_upload: z.ZodOptional<z.ZodBoolean>;
12088
13235
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
12089
13236
  allow_batch: z.ZodOptional<z.ZodBoolean>;
12090
13237
  video_upload: z.ZodOptional<z.ZodBoolean>;
12091
13238
  audio_upload: z.ZodOptional<z.ZodBoolean>;
13239
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
13240
+ upload_subfolder: z.ZodOptional<z.ZodString>;
12092
13241
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
12093
13242
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
12094
13243
  remote: z.ZodOptional<z.ZodObject<{
@@ -12103,20 +13252,20 @@ export declare class ComfyApp {
12103
13252
  }, "strip", z.ZodTypeAny, {
12104
13253
  route: string;
12105
13254
  refresh?: number | undefined;
12106
- timeout?: number | undefined;
12107
13255
  response_key?: string | undefined;
12108
13256
  query_params?: Record<string, string> | undefined;
12109
13257
  refresh_button?: boolean | undefined;
12110
13258
  control_after_refresh?: "first" | "last" | undefined;
13259
+ timeout?: number | undefined;
12111
13260
  max_retries?: number | undefined;
12112
13261
  }, {
12113
13262
  route: string;
12114
13263
  refresh?: number | undefined;
12115
- timeout?: number | undefined;
12116
13264
  response_key?: string | undefined;
12117
13265
  query_params?: Record<string, string> | undefined;
12118
13266
  refresh_button?: boolean | undefined;
12119
13267
  control_after_refresh?: "first" | "last" | undefined;
13268
+ timeout?: number | undefined;
12120
13269
  max_retries?: number | undefined;
12121
13270
  }>>;
12122
13271
  /** Whether the widget is a multi-select widget. */
@@ -12144,12 +13293,14 @@ export declare class ComfyApp {
12144
13293
  rawLink: z.ZodOptional<z.ZodBoolean>;
12145
13294
  lazy: z.ZodOptional<z.ZodBoolean>;
12146
13295
  }, {
12147
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
13296
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
12148
13297
  image_upload: z.ZodOptional<z.ZodBoolean>;
12149
13298
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
12150
13299
  allow_batch: z.ZodOptional<z.ZodBoolean>;
12151
13300
  video_upload: z.ZodOptional<z.ZodBoolean>;
12152
13301
  audio_upload: z.ZodOptional<z.ZodBoolean>;
13302
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
13303
+ upload_subfolder: z.ZodOptional<z.ZodString>;
12153
13304
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
12154
13305
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
12155
13306
  remote: z.ZodOptional<z.ZodObject<{
@@ -12164,20 +13315,20 @@ export declare class ComfyApp {
12164
13315
  }, "strip", z.ZodTypeAny, {
12165
13316
  route: string;
12166
13317
  refresh?: number | undefined;
12167
- timeout?: number | undefined;
12168
13318
  response_key?: string | undefined;
12169
13319
  query_params?: Record<string, string> | undefined;
12170
13320
  refresh_button?: boolean | undefined;
12171
13321
  control_after_refresh?: "first" | "last" | undefined;
13322
+ timeout?: number | undefined;
12172
13323
  max_retries?: number | undefined;
12173
13324
  }, {
12174
13325
  route: string;
12175
13326
  refresh?: number | undefined;
12176
- timeout?: number | undefined;
12177
13327
  response_key?: string | undefined;
12178
13328
  query_params?: Record<string, string> | undefined;
12179
13329
  refresh_button?: boolean | undefined;
12180
13330
  control_after_refresh?: "first" | "last" | undefined;
13331
+ timeout?: number | undefined;
12181
13332
  max_retries?: number | undefined;
12182
13333
  }>>;
12183
13334
  /** Whether the widget is a multi-select widget. */
@@ -12205,12 +13356,14 @@ export declare class ComfyApp {
12205
13356
  rawLink: z.ZodOptional<z.ZodBoolean>;
12206
13357
  lazy: z.ZodOptional<z.ZodBoolean>;
12207
13358
  }, {
12208
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
13359
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
12209
13360
  image_upload: z.ZodOptional<z.ZodBoolean>;
12210
13361
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
12211
13362
  allow_batch: z.ZodOptional<z.ZodBoolean>;
12212
13363
  video_upload: z.ZodOptional<z.ZodBoolean>;
12213
13364
  audio_upload: z.ZodOptional<z.ZodBoolean>;
13365
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
13366
+ upload_subfolder: z.ZodOptional<z.ZodString>;
12214
13367
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
12215
13368
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
12216
13369
  remote: z.ZodOptional<z.ZodObject<{
@@ -12225,20 +13378,20 @@ export declare class ComfyApp {
12225
13378
  }, "strip", z.ZodTypeAny, {
12226
13379
  route: string;
12227
13380
  refresh?: number | undefined;
12228
- timeout?: number | undefined;
12229
13381
  response_key?: string | undefined;
12230
13382
  query_params?: Record<string, string> | undefined;
12231
13383
  refresh_button?: boolean | undefined;
12232
13384
  control_after_refresh?: "first" | "last" | undefined;
13385
+ timeout?: number | undefined;
12233
13386
  max_retries?: number | undefined;
12234
13387
  }, {
12235
13388
  route: string;
12236
13389
  refresh?: number | undefined;
12237
- timeout?: number | undefined;
12238
13390
  response_key?: string | undefined;
12239
13391
  query_params?: Record<string, string> | undefined;
12240
13392
  refresh_button?: boolean | undefined;
12241
13393
  control_after_refresh?: "first" | "last" | undefined;
13394
+ timeout?: number | undefined;
12242
13395
  max_retries?: number | undefined;
12243
13396
  }>>;
12244
13397
  /** Whether the widget is a multi-select widget. */
@@ -12266,12 +13419,14 @@ export declare class ComfyApp {
12266
13419
  rawLink: z.ZodOptional<z.ZodBoolean>;
12267
13420
  lazy: z.ZodOptional<z.ZodBoolean>;
12268
13421
  }, {
12269
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
13422
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
12270
13423
  image_upload: z.ZodOptional<z.ZodBoolean>;
12271
13424
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
12272
13425
  allow_batch: z.ZodOptional<z.ZodBoolean>;
12273
13426
  video_upload: z.ZodOptional<z.ZodBoolean>;
12274
13427
  audio_upload: z.ZodOptional<z.ZodBoolean>;
13428
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
13429
+ upload_subfolder: z.ZodOptional<z.ZodString>;
12275
13430
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
12276
13431
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
12277
13432
  remote: z.ZodOptional<z.ZodObject<{
@@ -12286,20 +13441,20 @@ export declare class ComfyApp {
12286
13441
  }, "strip", z.ZodTypeAny, {
12287
13442
  route: string;
12288
13443
  refresh?: number | undefined;
12289
- timeout?: number | undefined;
12290
13444
  response_key?: string | undefined;
12291
13445
  query_params?: Record<string, string> | undefined;
12292
13446
  refresh_button?: boolean | undefined;
12293
13447
  control_after_refresh?: "first" | "last" | undefined;
13448
+ timeout?: number | undefined;
12294
13449
  max_retries?: number | undefined;
12295
13450
  }, {
12296
13451
  route: string;
12297
13452
  refresh?: number | undefined;
12298
- timeout?: number | undefined;
12299
13453
  response_key?: string | undefined;
12300
13454
  query_params?: Record<string, string> | undefined;
12301
13455
  refresh_button?: boolean | undefined;
12302
13456
  control_after_refresh?: "first" | "last" | undefined;
13457
+ timeout?: number | undefined;
12303
13458
  max_retries?: number | undefined;
12304
13459
  }>>;
12305
13460
  /** Whether the widget is a multi-select widget. */
@@ -12327,12 +13482,14 @@ export declare class ComfyApp {
12327
13482
  rawLink: z.ZodOptional<z.ZodBoolean>;
12328
13483
  lazy: z.ZodOptional<z.ZodBoolean>;
12329
13484
  }, {
12330
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
13485
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
12331
13486
  image_upload: z.ZodOptional<z.ZodBoolean>;
12332
13487
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
12333
13488
  allow_batch: z.ZodOptional<z.ZodBoolean>;
12334
13489
  video_upload: z.ZodOptional<z.ZodBoolean>;
12335
13490
  audio_upload: z.ZodOptional<z.ZodBoolean>;
13491
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
13492
+ upload_subfolder: z.ZodOptional<z.ZodString>;
12336
13493
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
12337
13494
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
12338
13495
  remote: z.ZodOptional<z.ZodObject<{
@@ -12347,20 +13504,20 @@ export declare class ComfyApp {
12347
13504
  }, "strip", z.ZodTypeAny, {
12348
13505
  route: string;
12349
13506
  refresh?: number | undefined;
12350
- timeout?: number | undefined;
12351
13507
  response_key?: string | undefined;
12352
13508
  query_params?: Record<string, string> | undefined;
12353
13509
  refresh_button?: boolean | undefined;
12354
13510
  control_after_refresh?: "first" | "last" | undefined;
13511
+ timeout?: number | undefined;
12355
13512
  max_retries?: number | undefined;
12356
13513
  }, {
12357
13514
  route: string;
12358
13515
  refresh?: number | undefined;
12359
- timeout?: number | undefined;
12360
13516
  response_key?: string | undefined;
12361
13517
  query_params?: Record<string, string> | undefined;
12362
13518
  refresh_button?: boolean | undefined;
12363
13519
  control_after_refresh?: "first" | "last" | undefined;
13520
+ timeout?: number | undefined;
12364
13521
  max_retries?: number | undefined;
12365
13522
  }>>;
12366
13523
  /** Whether the widget is a multi-select widget. */
@@ -12388,12 +13545,14 @@ export declare class ComfyApp {
12388
13545
  rawLink: z.ZodOptional<z.ZodBoolean>;
12389
13546
  lazy: z.ZodOptional<z.ZodBoolean>;
12390
13547
  }, {
12391
- control_after_generate: z.ZodOptional<z.ZodBoolean>;
13548
+ control_after_generate: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["fixed", "increment", "decrement", "randomize"]>]>>;
12392
13549
  image_upload: z.ZodOptional<z.ZodBoolean>;
12393
13550
  image_folder: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
12394
13551
  allow_batch: z.ZodOptional<z.ZodBoolean>;
12395
13552
  video_upload: z.ZodOptional<z.ZodBoolean>;
12396
13553
  audio_upload: z.ZodOptional<z.ZodBoolean>;
13554
+ mesh_upload: z.ZodOptional<z.ZodBoolean>;
13555
+ upload_subfolder: z.ZodOptional<z.ZodString>;
12397
13556
  animated_image_upload: z.ZodOptional<z.ZodBoolean>;
12398
13557
  options: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>;
12399
13558
  remote: z.ZodOptional<z.ZodObject<{
@@ -12408,20 +13567,20 @@ export declare class ComfyApp {
12408
13567
  }, "strip", z.ZodTypeAny, {
12409
13568
  route: string;
12410
13569
  refresh?: number | undefined;
12411
- timeout?: number | undefined;
12412
13570
  response_key?: string | undefined;
12413
13571
  query_params?: Record<string, string> | undefined;
12414
13572
  refresh_button?: boolean | undefined;
12415
13573
  control_after_refresh?: "first" | "last" | undefined;
13574
+ timeout?: number | undefined;
12416
13575
  max_retries?: number | undefined;
12417
13576
  }, {
12418
13577
  route: string;
12419
13578
  refresh?: number | undefined;
12420
- timeout?: number | undefined;
12421
13579
  response_key?: string | undefined;
12422
13580
  query_params?: Record<string, string> | undefined;
12423
13581
  refresh_button?: boolean | undefined;
12424
13582
  control_after_refresh?: "first" | "last" | undefined;
13583
+ timeout?: number | undefined;
12425
13584
  max_retries?: number | undefined;
12426
13585
  }>>;
12427
13586
  /** Whether the widget is a multi-select widget. */
@@ -13692,6 +14851,20 @@ export declare class ComfyApp {
13692
14851
  priority: z.ZodOptional<z.ZodNumber>;
13693
14852
  }, z.ZodTypeAny, "passthrough">>;
13694
14853
 
14854
+ declare const zResultItem: z.ZodObject<{
14855
+ filename: z.ZodOptional<z.ZodString>;
14856
+ subfolder: z.ZodOptional<z.ZodString>;
14857
+ type: z.ZodOptional<z.ZodEnum<["input", "output", "temp"]>>;
14858
+ }, "strip", z.ZodTypeAny, {
14859
+ type?: "input" | "output" | "temp" | undefined;
14860
+ filename?: string | undefined;
14861
+ subfolder?: string | undefined;
14862
+ }, {
14863
+ type?: "input" | "output" | "temp" | undefined;
14864
+ filename?: string | undefined;
14865
+ subfolder?: string | undefined;
14866
+ }>;
14867
+
13695
14868
  declare const zSettings: z.ZodObject<{
13696
14869
  'Comfy.ColorPalette': z.ZodString;
13697
14870
  'Comfy.CustomColorPalettes': z.ZodRecord<z.ZodString, z.ZodObject<{
@@ -14843,6 +16016,7 @@ export declare class ComfyApp {
14843
16016
  'Comfy.Graph.CanvasInfo': z.ZodBoolean;
14844
16017
  'Comfy.Graph.CanvasMenu': z.ZodBoolean;
14845
16018
  'Comfy.Graph.CtrlShiftZoom': z.ZodBoolean;
16019
+ 'Comfy.Graph.DeduplicateSubgraphNodeIds': z.ZodBoolean;
14846
16020
  'Comfy.Graph.LiveSelection': z.ZodBoolean;
14847
16021
  'Comfy.Graph.LinkMarkers': z.ZodNativeEnum<typeof LinkMarkerShape>;
14848
16022
  'Comfy.Graph.ZoomSpeed': z.ZodNumber;
@@ -14876,6 +16050,7 @@ export declare class ComfyApp {
14876
16050
  'Comfy.Node.MiddleClickRerouteNode': z.ZodBoolean;
14877
16051
  'Comfy.Node.ShowDeprecated': z.ZodBoolean;
14878
16052
  'Comfy.Node.ShowExperimental': z.ZodBoolean;
16053
+ 'Comfy.NodeReplacement.Enabled': z.ZodBoolean;
14879
16054
  'Comfy.Pointer.ClickBufferTime': z.ZodNumber;
14880
16055
  'Comfy.Pointer.ClickDrift': z.ZodNumber;
14881
16056
  'Comfy.Pointer.DoubleClickTime': z.ZodNumber;
@@ -15064,6 +16239,7 @@ export declare class ComfyApp {
15064
16239
  'LiteGraph.Pointer.TrackpadGestures': z.ZodBoolean;
15065
16240
  'Comfy.VersionCompatibility.DisableWarnings': z.ZodBoolean;
15066
16241
  'Comfy.RightSidePanel.IsOpen': z.ZodBoolean;
16242
+ 'Comfy.Node.AlwaysShowAdvancedWidgets': z.ZodBoolean;
15067
16243
  }, "strip", z.ZodTypeAny, {
15068
16244
  'Comfy.ColorPalette': string;
15069
16245
  'Comfy.CustomColorPalettes': Record<string, z.objectOutputType<{
@@ -15460,6 +16636,7 @@ export declare class ComfyApp {
15460
16636
  'Comfy.Graph.CanvasInfo': boolean;
15461
16637
  'Comfy.Graph.CanvasMenu': boolean;
15462
16638
  'Comfy.Graph.CtrlShiftZoom': boolean;
16639
+ 'Comfy.Graph.DeduplicateSubgraphNodeIds': boolean;
15463
16640
  'Comfy.Graph.LiveSelection': boolean;
15464
16641
  'Comfy.Graph.LinkMarkers': LinkMarkerShape;
15465
16642
  'Comfy.Graph.ZoomSpeed': number;
@@ -15487,6 +16664,7 @@ export declare class ComfyApp {
15487
16664
  'Comfy.Node.MiddleClickRerouteNode': boolean;
15488
16665
  'Comfy.Node.ShowDeprecated': boolean;
15489
16666
  'Comfy.Node.ShowExperimental': boolean;
16667
+ 'Comfy.NodeReplacement.Enabled': boolean;
15490
16668
  'Comfy.Pointer.ClickBufferTime': number;
15491
16669
  'Comfy.Pointer.ClickDrift': number;
15492
16670
  'Comfy.Pointer.DoubleClickTime': number;
@@ -15604,6 +16782,7 @@ export declare class ComfyApp {
15604
16782
  'LiteGraph.Pointer.TrackpadGestures': boolean;
15605
16783
  'Comfy.VersionCompatibility.DisableWarnings': boolean;
15606
16784
  'Comfy.RightSidePanel.IsOpen': boolean;
16785
+ 'Comfy.Node.AlwaysShowAdvancedWidgets': boolean;
15607
16786
  'Comfy.Canvas.BackgroundImage'?: string | undefined;
15608
16787
  'test.setting'?: any;
15609
16788
  'main.sub.setting.name'?: any;
@@ -16004,6 +17183,7 @@ export declare class ComfyApp {
16004
17183
  'Comfy.Graph.CanvasInfo': boolean;
16005
17184
  'Comfy.Graph.CanvasMenu': boolean;
16006
17185
  'Comfy.Graph.CtrlShiftZoom': boolean;
17186
+ 'Comfy.Graph.DeduplicateSubgraphNodeIds': boolean;
16007
17187
  'Comfy.Graph.LiveSelection': boolean;
16008
17188
  'Comfy.Graph.LinkMarkers': LinkMarkerShape;
16009
17189
  'Comfy.Graph.ZoomSpeed': number;
@@ -16031,6 +17211,7 @@ export declare class ComfyApp {
16031
17211
  'Comfy.Node.MiddleClickRerouteNode': boolean;
16032
17212
  'Comfy.Node.ShowDeprecated': boolean;
16033
17213
  'Comfy.Node.ShowExperimental': boolean;
17214
+ 'Comfy.NodeReplacement.Enabled': boolean;
16034
17215
  'Comfy.Pointer.ClickBufferTime': number;
16035
17216
  'Comfy.Pointer.ClickDrift': number;
16036
17217
  'Comfy.Pointer.DoubleClickTime': number;
@@ -16148,6 +17329,7 @@ export declare class ComfyApp {
16148
17329
  'LiteGraph.Pointer.TrackpadGestures': boolean;
16149
17330
  'Comfy.VersionCompatibility.DisableWarnings': boolean;
16150
17331
  'Comfy.RightSidePanel.IsOpen': boolean;
17332
+ 'Comfy.Node.AlwaysShowAdvancedWidgets': boolean;
16151
17333
  'Comfy.Canvas.BackgroundImage'?: string | undefined;
16152
17334
  'test.setting'?: any;
16153
17335
  'main.sub.setting.name'?: any;