From ce7803231bb5b68022f8decf4b6c41f69d6238c0 Mon Sep 17 00:00:00 2001
From: blessedcoolant <54517381+blessedcoolant@users.noreply.github.com>
Date: Fri, 7 Jul 2023 05:57:39 +1200
Subject: [PATCH] feat: Add Clip Skip To Linear UI
---
invokeai/frontend/web/public/locales/en.json | 6 +-
.../buildCanvasImageToImageGraph.ts | 19 ++++-
.../graphBuilders/buildCanvasInpaintGraph.ts | 77 +++++++++++--------
.../buildCanvasTextToImageGraph.ts | 19 ++++-
.../buildLinearImageToImageGraph.ts | 50 ++++++++----
.../buildLinearTextToImageGraph.ts | 77 +++++++++++--------
.../nodes/util/graphBuilders/constants.ts | 1 +
.../Advanced/ParamAdvancedCollapse.tsx | 20 +++++
.../Parameters/Advanced/ParamClipSkip.tsx | 34 ++++++++
.../parameters/store/generationSlice.ts | 6 ++
.../SettingsModal/SettingsModal.tsx | 11 +++
.../ImageToImageTabParameters.tsx | 2 +
.../TextToImage/TextToImageTabParameters.tsx | 2 +
.../UnifiedCanvas/UnifiedCanvasParameters.tsx | 2 +
.../web/src/features/ui/store/uiSlice.ts | 5 ++
.../web/src/features/ui/store/uiTypes.ts | 1 +
.../frontend/web/src/services/api/schema.d.ts | 64 ++++++++++++++-
17 files changed, 311 insertions(+), 85 deletions(-)
create mode 100644 invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse.tsx
create mode 100644 invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamClipSkip.tsx
diff --git a/invokeai/frontend/web/public/locales/en.json b/invokeai/frontend/web/public/locales/en.json
index 9cf1e0bc48..b403fde2c6 100644
--- a/invokeai/frontend/web/public/locales/en.json
+++ b/invokeai/frontend/web/public/locales/en.json
@@ -527,7 +527,8 @@
"showOptionsPanel": "Show Options Panel",
"hidePreview": "Hide Preview",
"showPreview": "Show Preview",
- "controlNetControlMode": "Control Mode"
+ "controlNetControlMode": "Control Mode",
+ "clipSkip": "Clip Skip"
},
"settings": {
"models": "Models",
@@ -551,7 +552,8 @@
"generation": "Generation",
"ui": "User Interface",
"favoriteSchedulers": "Favorite Schedulers",
- "favoriteSchedulersPlaceholder": "No schedulers favorited"
+ "favoriteSchedulersPlaceholder": "No schedulers favorited",
+ "showAdvancedOptions": "Show Advanced Options"
},
"toast": {
"serverError": "Server Error",
diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts
index 1843efef84..7d7b9cf4c9 100644
--- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts
+++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts
@@ -12,6 +12,7 @@ import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph';
import { addLoRAsToGraph } from './addLoRAsToGraph';
import { addVAEToGraph } from './addVAEToGraph';
import {
+ CLIP_SKIP,
IMAGE_TO_IMAGE_GRAPH,
IMAGE_TO_LATENTS,
LATENTS_TO_IMAGE,
@@ -40,6 +41,7 @@ export const buildCanvasImageToImageGraph = (
scheduler,
steps,
img2imgStrength: strength,
+ clipSkip,
iterations,
seed,
shouldRandomizeSeed,
@@ -82,6 +84,11 @@ export const buildCanvasImageToImageGraph = (
id: MAIN_MODEL_LOADER,
model,
},
+ [CLIP_SKIP]: {
+ type: 'clip_skip',
+ id: CLIP_SKIP,
+ skipped_layers: clipSkip,
+ },
[LATENTS_TO_IMAGE]: {
type: 'l2i',
id: LATENTS_TO_IMAGE,
@@ -109,6 +116,16 @@ export const buildCanvasImageToImageGraph = (
node_id: MAIN_MODEL_LOADER,
field: 'clip',
},
+ destination: {
+ node_id: CLIP_SKIP,
+ field: 'clip',
+ },
+ },
+ {
+ source: {
+ node_id: CLIP_SKIP,
+ field: 'clip',
+ },
destination: {
node_id: POSITIVE_CONDITIONING,
field: 'clip',
@@ -116,7 +133,7 @@ export const buildCanvasImageToImageGraph = (
},
{
source: {
- node_id: MAIN_MODEL_LOADER,
+ node_id: CLIP_SKIP,
field: 'clip',
},
destination: {
diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts
index c4f9415067..8425b1dac5 100644
--- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts
+++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts
@@ -11,6 +11,7 @@ import { modelIdToMainModelField } from '../modelIdToMainModelField';
import { addLoRAsToGraph } from './addLoRAsToGraph';
import { addVAEToGraph } from './addVAEToGraph';
import {
+ CLIP_SKIP,
INPAINT,
INPAINT_GRAPH,
ITERATE,
@@ -49,6 +50,7 @@ export const buildCanvasInpaintGraph = (
seamStrength,
tileSize,
infillMethod,
+ clipSkip,
} = state.generation;
// The bounding box determines width and height, not the width and height params
@@ -108,6 +110,11 @@ export const buildCanvasInpaintGraph = (
id: MAIN_MODEL_LOADER,
model,
},
+ [CLIP_SKIP]: {
+ type: 'clip_skip',
+ id: CLIP_SKIP,
+ skipped_layers: clipSkip,
+ },
[RANGE_OF_SIZE]: {
type: 'range_of_size',
id: RANGE_OF_SIZE,
@@ -122,6 +129,46 @@ export const buildCanvasInpaintGraph = (
},
},
edges: [
+ {
+ source: {
+ node_id: MAIN_MODEL_LOADER,
+ field: 'unet',
+ },
+ destination: {
+ node_id: INPAINT,
+ field: 'unet',
+ },
+ },
+ {
+ source: {
+ node_id: MAIN_MODEL_LOADER,
+ field: 'clip',
+ },
+ destination: {
+ node_id: CLIP_SKIP,
+ field: 'clip',
+ },
+ },
+ {
+ source: {
+ node_id: CLIP_SKIP,
+ field: 'clip',
+ },
+ destination: {
+ node_id: POSITIVE_CONDITIONING,
+ field: 'clip',
+ },
+ },
+ {
+ source: {
+ node_id: CLIP_SKIP,
+ field: 'clip',
+ },
+ destination: {
+ node_id: NEGATIVE_CONDITIONING,
+ field: 'clip',
+ },
+ },
{
source: {
node_id: NEGATIVE_CONDITIONING,
@@ -142,36 +189,6 @@ export const buildCanvasInpaintGraph = (
field: 'positive_conditioning',
},
},
- {
- source: {
- node_id: MAIN_MODEL_LOADER,
- field: 'clip',
- },
- destination: {
- node_id: POSITIVE_CONDITIONING,
- field: 'clip',
- },
- },
- {
- source: {
- node_id: MAIN_MODEL_LOADER,
- field: 'clip',
- },
- destination: {
- node_id: NEGATIVE_CONDITIONING,
- field: 'clip',
- },
- },
- {
- source: {
- node_id: MAIN_MODEL_LOADER,
- field: 'unet',
- },
- destination: {
- node_id: INPAINT,
- field: 'unet',
- },
- },
{
source: {
node_id: RANGE_OF_SIZE,
diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts
index 976ea4fd01..25d7b13d7e 100644
--- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts
+++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts
@@ -6,6 +6,7 @@ import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph';
import { addLoRAsToGraph } from './addLoRAsToGraph';
import { addVAEToGraph } from './addVAEToGraph';
import {
+ CLIP_SKIP,
LATENTS_TO_IMAGE,
MAIN_MODEL_LOADER,
NEGATIVE_CONDITIONING,
@@ -28,6 +29,7 @@ export const buildCanvasTextToImageGraph = (
cfgScale: cfg_scale,
scheduler,
steps,
+ clipSkip,
iterations,
seed,
shouldRandomizeSeed,
@@ -79,6 +81,11 @@ export const buildCanvasTextToImageGraph = (
id: MAIN_MODEL_LOADER,
model,
},
+ [CLIP_SKIP]: {
+ type: 'clip_skip',
+ id: CLIP_SKIP,
+ skipped_layers: clipSkip,
+ },
[LATENTS_TO_IMAGE]: {
type: 'l2i',
id: LATENTS_TO_IMAGE,
@@ -110,6 +117,16 @@ export const buildCanvasTextToImageGraph = (
node_id: MAIN_MODEL_LOADER,
field: 'clip',
},
+ destination: {
+ node_id: CLIP_SKIP,
+ field: 'clip',
+ },
+ },
+ {
+ source: {
+ node_id: CLIP_SKIP,
+ field: 'clip',
+ },
destination: {
node_id: POSITIVE_CONDITIONING,
field: 'clip',
@@ -117,7 +134,7 @@ export const buildCanvasTextToImageGraph = (
},
{
source: {
- node_id: MAIN_MODEL_LOADER,
+ node_id: CLIP_SKIP,
field: 'clip',
},
destination: {
diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts
index fe6d1292e4..b845d2d54f 100644
--- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts
+++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts
@@ -13,6 +13,7 @@ import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph';
import { addLoRAsToGraph } from './addLoRAsToGraph';
import { addVAEToGraph } from './addVAEToGraph';
import {
+ CLIP_SKIP,
IMAGE_COLLECTION,
IMAGE_COLLECTION_ITERATE,
IMAGE_TO_IMAGE_GRAPH,
@@ -46,6 +47,7 @@ export const buildLinearImageToImageGraph = (
shouldFitToWidthHeight,
width,
height,
+ clipSkip,
} = state.generation;
const {
@@ -77,6 +79,16 @@ export const buildLinearImageToImageGraph = (
const graph: NonNullableGraph = {
id: IMAGE_TO_IMAGE_GRAPH,
nodes: {
+ [MAIN_MODEL_LOADER]: {
+ type: 'main_model_loader',
+ id: MAIN_MODEL_LOADER,
+ model,
+ },
+ [CLIP_SKIP]: {
+ type: 'clip_skip',
+ id: CLIP_SKIP,
+ skipped_layers: clipSkip,
+ },
[POSITIVE_CONDITIONING]: {
type: 'compel',
id: POSITIVE_CONDITIONING,
@@ -91,11 +103,6 @@ export const buildLinearImageToImageGraph = (
type: 'noise',
id: NOISE,
},
- [MAIN_MODEL_LOADER]: {
- type: 'main_model_loader',
- id: MAIN_MODEL_LOADER,
- model,
- },
[LATENTS_TO_IMAGE]: {
type: 'l2i',
id: LATENTS_TO_IMAGE,
@@ -121,6 +128,26 @@ export const buildLinearImageToImageGraph = (
{
source: {
node_id: MAIN_MODEL_LOADER,
+ field: 'unet',
+ },
+ destination: {
+ node_id: LATENTS_TO_LATENTS,
+ field: 'unet',
+ },
+ },
+ {
+ source: {
+ node_id: MAIN_MODEL_LOADER,
+ field: 'clip',
+ },
+ destination: {
+ node_id: CLIP_SKIP,
+ field: 'clip',
+ },
+ },
+ {
+ source: {
+ node_id: CLIP_SKIP,
field: 'clip',
},
destination: {
@@ -130,7 +157,7 @@ export const buildLinearImageToImageGraph = (
},
{
source: {
- node_id: MAIN_MODEL_LOADER,
+ node_id: CLIP_SKIP,
field: 'clip',
},
destination: {
@@ -168,17 +195,6 @@ export const buildLinearImageToImageGraph = (
field: 'noise',
},
},
-
- {
- source: {
- node_id: MAIN_MODEL_LOADER,
- field: 'unet',
- },
- destination: {
- node_id: LATENTS_TO_LATENTS,
- field: 'unet',
- },
- },
{
source: {
node_id: NEGATIVE_CONDITIONING,
diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts
index 04dccf4983..b743a7221a 100644
--- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts
+++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts
@@ -6,6 +6,7 @@ import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph';
import { addLoRAsToGraph } from './addLoRAsToGraph';
import { addVAEToGraph } from './addVAEToGraph';
import {
+ CLIP_SKIP,
LATENTS_TO_IMAGE,
MAIN_MODEL_LOADER,
NEGATIVE_CONDITIONING,
@@ -27,6 +28,7 @@ export const buildLinearTextToImageGraph = (
steps,
width,
height,
+ clipSkip,
} = state.generation;
const model = modelIdToMainModelField(modelId);
@@ -44,6 +46,16 @@ export const buildLinearTextToImageGraph = (
const graph: NonNullableGraph = {
id: TEXT_TO_IMAGE_GRAPH,
nodes: {
+ [MAIN_MODEL_LOADER]: {
+ type: 'main_model_loader',
+ id: MAIN_MODEL_LOADER,
+ model,
+ },
+ [CLIP_SKIP]: {
+ type: 'clip_skip',
+ id: CLIP_SKIP,
+ skipped_layers: clipSkip,
+ },
[POSITIVE_CONDITIONING]: {
type: 'compel',
id: POSITIVE_CONDITIONING,
@@ -67,11 +79,6 @@ export const buildLinearTextToImageGraph = (
scheduler,
steps,
},
- [MAIN_MODEL_LOADER]: {
- type: 'main_model_loader',
- id: MAIN_MODEL_LOADER,
- model,
- },
[LATENTS_TO_IMAGE]: {
type: 'l2i',
id: LATENTS_TO_IMAGE,
@@ -80,12 +87,42 @@ export const buildLinearTextToImageGraph = (
edges: [
{
source: {
- node_id: NEGATIVE_CONDITIONING,
- field: 'conditioning',
+ node_id: MAIN_MODEL_LOADER,
+ field: 'clip',
+ },
+ destination: {
+ node_id: CLIP_SKIP,
+ field: 'clip',
+ },
+ },
+ {
+ source: {
+ node_id: MAIN_MODEL_LOADER,
+ field: 'unet',
},
destination: {
node_id: TEXT_TO_LATENTS,
- field: 'negative_conditioning',
+ field: 'unet',
+ },
+ },
+ {
+ source: {
+ node_id: CLIP_SKIP,
+ field: 'clip',
+ },
+ destination: {
+ node_id: POSITIVE_CONDITIONING,
+ field: 'clip',
+ },
+ },
+ {
+ source: {
+ node_id: CLIP_SKIP,
+ field: 'clip',
+ },
+ destination: {
+ node_id: NEGATIVE_CONDITIONING,
+ field: 'clip',
},
},
{
@@ -100,32 +137,12 @@ export const buildLinearTextToImageGraph = (
},
{
source: {
- node_id: MAIN_MODEL_LOADER,
- field: 'clip',
- },
- destination: {
- node_id: POSITIVE_CONDITIONING,
- field: 'clip',
- },
- },
- {
- source: {
- node_id: MAIN_MODEL_LOADER,
- field: 'clip',
- },
- destination: {
node_id: NEGATIVE_CONDITIONING,
- field: 'clip',
- },
- },
- {
- source: {
- node_id: MAIN_MODEL_LOADER,
- field: 'unet',
+ field: 'conditioning',
},
destination: {
node_id: TEXT_TO_LATENTS,
- field: 'unet',
+ field: 'negative_conditioning',
},
},
{
diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/constants.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/constants.ts
index 7aace48def..256a623bba 100644
--- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/constants.ts
+++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/constants.ts
@@ -10,6 +10,7 @@ export const ITERATE = 'iterate';
export const MAIN_MODEL_LOADER = 'main_model_loader';
export const VAE_LOADER = 'vae_loader';
export const LORA_LOADER = 'lora_loader';
+export const CLIP_SKIP = 'clip_skip';
export const IMAGE_TO_LATENTS = 'image_to_latents';
export const LATENTS_TO_LATENTS = 'latents_to_latents';
export const RESIZE = 'resize_image';
diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse.tsx
new file mode 100644
index 0000000000..3ca2afb5cb
--- /dev/null
+++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse.tsx
@@ -0,0 +1,20 @@
+import { Flex } from '@chakra-ui/react';
+import { RootState } from 'app/store/store';
+import { useAppSelector } from 'app/store/storeHooks';
+import IAICollapse from 'common/components/IAICollapse';
+import ParamClipSkip from './ParamClipSkip';
+
+export default function ParamAdvancedCollapse() {
+ const shouldShowAdvancedOptions = useAppSelector(
+ (state: RootState) => state.ui.shouldShowAdvancedOptions
+ );
+ return (
+ shouldShowAdvancedOptions && (
+
+
+
+
+
+ )
+ );
+}
diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamClipSkip.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamClipSkip.tsx
new file mode 100644
index 0000000000..dcbde1b8dd
--- /dev/null
+++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamClipSkip.tsx
@@ -0,0 +1,34 @@
+import { RootState } from 'app/store/store';
+import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
+import IAINumberInput from 'common/components/IAINumberInput';
+import { setClipSkip } from 'features/parameters/store/generationSlice';
+import { useCallback } from 'react';
+import { useTranslation } from 'react-i18next';
+
+export default function ParamClipSkip() {
+ const clipSkip = useAppSelector(
+ (state: RootState) => state.generation.clipSkip
+ );
+
+ const dispatch = useAppDispatch();
+ const { t } = useTranslation();
+
+ const handleClipSkipChange = useCallback(
+ (v: number) => {
+ dispatch(setClipSkip(v));
+ },
+ [dispatch]
+ );
+
+ return (
+
+ );
+}
diff --git a/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts b/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts
index 960a41bb45..40bb8e91d4 100644
--- a/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts
+++ b/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts
@@ -51,6 +51,7 @@ export interface GenerationState {
vae: VAEParam;
seamlessXAxis: boolean;
seamlessYAxis: boolean;
+ clipSkip: number;
}
export const initialGenerationState: GenerationState = {
@@ -85,6 +86,7 @@ export const initialGenerationState: GenerationState = {
vae: '',
seamlessXAxis: false,
seamlessYAxis: false,
+ clipSkip: 0,
};
const initialState: GenerationState = initialGenerationState;
@@ -217,6 +219,9 @@ export const generationSlice = createSlice({
vaeSelected: (state, action: PayloadAction) => {
state.vae = action.payload;
},
+ setClipSkip: (state, action: PayloadAction) => {
+ state.clipSkip = action.payload;
+ },
},
extraReducers: (builder) => {
builder.addCase(configChanged, (state, action) => {
@@ -265,6 +270,7 @@ export const {
setShouldUseNoiseSettings,
setSeamlessXAxis,
setSeamlessYAxis,
+ setClipSkip,
} = generationSlice.actions;
export default generationSlice.reducer;
diff --git a/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsModal.tsx b/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsModal.tsx
index c9508bb5fe..c8eb9cc34a 100644
--- a/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsModal.tsx
+++ b/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsModal.tsx
@@ -30,6 +30,7 @@ import {
} from 'features/system/store/systemSlice';
import { uiSelector } from 'features/ui/store/uiSelectors';
import {
+ setShouldShowAdvancedOptions,
setShouldShowProgressInViewer,
setShouldUseCanvasBetaLayout,
setShouldUseSliders,
@@ -64,6 +65,7 @@ const selector = createSelector(
shouldUseCanvasBetaLayout,
shouldUseSliders,
shouldShowProgressInViewer,
+ shouldShowAdvancedOptions,
} = ui;
return {
@@ -76,6 +78,7 @@ const selector = createSelector(
consoleLogLevel,
shouldLogToConsole,
shouldAntialiasProgressImage,
+ shouldShowAdvancedOptions,
};
},
{
@@ -132,6 +135,7 @@ const SettingsModal = ({ children, config }: SettingsModalProps) => {
consoleLogLevel,
shouldLogToConsole,
shouldAntialiasProgressImage,
+ shouldShowAdvancedOptions,
} = useAppSelector(selector);
const handleClickResetWebUI = useCallback(() => {
@@ -189,6 +193,13 @@ const SettingsModal = ({ children, config }: SettingsModalProps) => {
dispatch(setShouldConfirmOnDelete(e.target.checked))
}
/>
+ ) =>
+ dispatch(setShouldShowAdvancedOptions(e.target.checked))
+ }
+ />
diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ImageToImage/ImageToImageTabParameters.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ImageToImage/ImageToImageTabParameters.tsx
index 32b71d6187..16c0f44158 100644
--- a/invokeai/frontend/web/src/features/ui/components/tabs/ImageToImage/ImageToImageTabParameters.tsx
+++ b/invokeai/frontend/web/src/features/ui/components/tabs/ImageToImage/ImageToImageTabParameters.tsx
@@ -1,5 +1,6 @@
import ParamDynamicPromptsCollapse from 'features/dynamicPrompts/components/ParamDynamicPromptsCollapse';
import ParamLoraCollapse from 'features/lora/components/ParamLoraCollapse';
+import ParamAdvancedCollapse from 'features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse';
import ParamControlNetCollapse from 'features/parameters/components/Parameters/ControlNet/ParamControlNetCollapse';
import ParamNegativeConditioning from 'features/parameters/components/Parameters/Core/ParamNegativeConditioning';
import ParamPositiveConditioning from 'features/parameters/components/Parameters/Core/ParamPositiveConditioning';
@@ -25,6 +26,7 @@ const ImageToImageTabParameters = () => {
+
>
);
};
diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTabParameters.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTabParameters.tsx
index 6291b69a8e..987f4ff0bc 100644
--- a/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTabParameters.tsx
+++ b/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTabParameters.tsx
@@ -1,5 +1,6 @@
import ParamDynamicPromptsCollapse from 'features/dynamicPrompts/components/ParamDynamicPromptsCollapse';
import ParamLoraCollapse from 'features/lora/components/ParamLoraCollapse';
+import ParamAdvancedCollapse from 'features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse';
import ParamControlNetCollapse from 'features/parameters/components/Parameters/ControlNet/ParamControlNetCollapse';
import ParamNegativeConditioning from 'features/parameters/components/Parameters/Core/ParamNegativeConditioning';
import ParamPositiveConditioning from 'features/parameters/components/Parameters/Core/ParamPositiveConditioning';
@@ -27,6 +28,7 @@ const TextToImageTabParameters = () => {
+
>
);
};
diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasParameters.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasParameters.tsx
index 63ed4cc1cf..6c19a61372 100644
--- a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasParameters.tsx
+++ b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasParameters.tsx
@@ -1,5 +1,6 @@
import ParamDynamicPromptsCollapse from 'features/dynamicPrompts/components/ParamDynamicPromptsCollapse';
import ParamLoraCollapse from 'features/lora/components/ParamLoraCollapse';
+import ParamAdvancedCollapse from 'features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse';
import ParamInfillAndScalingCollapse from 'features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamInfillAndScalingCollapse';
import ParamSeamCorrectionCollapse from 'features/parameters/components/Parameters/Canvas/SeamCorrection/ParamSeamCorrectionCollapse';
import ParamControlNetCollapse from 'features/parameters/components/Parameters/ControlNet/ParamControlNetCollapse';
@@ -25,6 +26,7 @@ const UnifiedCanvasParameters = () => {
+
>
);
};
diff --git a/invokeai/frontend/web/src/features/ui/store/uiSlice.ts b/invokeai/frontend/web/src/features/ui/store/uiSlice.ts
index 861bf49405..04fee42126 100644
--- a/invokeai/frontend/web/src/features/ui/store/uiSlice.ts
+++ b/invokeai/frontend/web/src/features/ui/store/uiSlice.ts
@@ -20,6 +20,7 @@ export const initialUIState: UIState = {
shouldHidePreview: false,
shouldShowProgressInViewer: true,
shouldShowEmbeddingPicker: false,
+ shouldShowAdvancedOptions: false,
favoriteSchedulers: [],
};
@@ -100,6 +101,9 @@ export const uiSlice = createSlice({
toggleEmbeddingPicker: (state) => {
state.shouldShowEmbeddingPicker = !state.shouldShowEmbeddingPicker;
},
+ setShouldShowAdvancedOptions: (state, action: PayloadAction) => {
+ state.shouldShowAdvancedOptions = action.payload;
+ },
},
extraReducers(builder) {
builder.addCase(initialImageChanged, (state) => {
@@ -127,6 +131,7 @@ export const {
setShouldShowProgressInViewer,
favoriteSchedulersChanged,
toggleEmbeddingPicker,
+ setShouldShowAdvancedOptions,
} = uiSlice.actions;
export default uiSlice.reducer;
diff --git a/invokeai/frontend/web/src/features/ui/store/uiTypes.ts b/invokeai/frontend/web/src/features/ui/store/uiTypes.ts
index ad0250e56d..2356446030 100644
--- a/invokeai/frontend/web/src/features/ui/store/uiTypes.ts
+++ b/invokeai/frontend/web/src/features/ui/store/uiTypes.ts
@@ -28,5 +28,6 @@ export interface UIState {
shouldShowGallery: boolean;
shouldShowProgressInViewer: boolean;
shouldShowEmbeddingPicker: boolean;
+ shouldShowAdvancedOptions: boolean;
favoriteSchedulers: SchedulerParam[];
}
diff --git a/invokeai/frontend/web/src/services/api/schema.d.ts b/invokeai/frontend/web/src/services/api/schema.d.ts
index d7e50d004e..0854af4c3b 100644
--- a/invokeai/frontend/web/src/services/api/schema.d.ts
+++ b/invokeai/frontend/web/src/services/api/schema.d.ts
@@ -446,12 +446,68 @@ export type components = {
* @description Info to load text_encoder submodel
*/
text_encoder: components["schemas"]["ModelInfo"];
+ /**
+ * Skipped Layers
+ * @description Number of skipped layers in text_encoder
+ */
+ skipped_layers: number;
/**
* Loras
* @description Loras to apply on model loading
*/
loras: (components["schemas"]["LoraInfo"])[];
};
+ /**
+ * ClipSkipInvocation
+ * @description Skip layers in clip text_encoder model.
+ */
+ ClipSkipInvocation: {
+ /**
+ * Id
+ * @description The id of this node. Must be unique among all nodes.
+ */
+ id: string;
+ /**
+ * Is Intermediate
+ * @description Whether or not this node is an intermediate node.
+ * @default false
+ */
+ is_intermediate?: boolean;
+ /**
+ * Type
+ * @default clip_skip
+ * @enum {string}
+ */
+ type?: "clip_skip";
+ /**
+ * Clip
+ * @description Clip to use
+ */
+ clip?: components["schemas"]["ClipField"];
+ /**
+ * Skipped Layers
+ * @description Number of layers to skip in text_encoder
+ * @default 0
+ */
+ skipped_layers?: number;
+ };
+ /**
+ * ClipSkipInvocationOutput
+ * @description Clip skip node output
+ */
+ ClipSkipInvocationOutput: {
+ /**
+ * Type
+ * @default clip_skip_output
+ * @enum {string}
+ */
+ type?: "clip_skip_output";
+ /**
+ * Clip
+ * @description Clip with skipped layers
+ */
+ clip?: components["schemas"]["ClipField"];
+ };
/**
* CollectInvocation
* @description Collects values into a collection
@@ -1054,7 +1110,7 @@ export type components = {
* @description The nodes in this graph
*/
nodes?: {
- [key: string]: (components["schemas"]["LoadImageInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["ParamIntInvocation"] | components["schemas"]["ParamFloatInvocation"] | components["schemas"]["TextToLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["UpscaleInvocation"] | components["schemas"]["RestoreFaceInvocation"] | components["schemas"]["InpaintInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"] | components["schemas"]["LatentsToLatentsInvocation"]) | undefined;
+ [key: string]: (components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["LoadImageInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["TextToLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["InpaintInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["ParamIntInvocation"] | components["schemas"]["ParamFloatInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["RestoreFaceInvocation"] | components["schemas"]["UpscaleInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"] | components["schemas"]["LatentsToLatentsInvocation"]) | undefined;
};
/**
* Edges
@@ -1097,7 +1153,7 @@ export type components = {
* @description The results of node executions
*/
results: {
- [key: string]: (components["schemas"]["ImageOutput"] | components["schemas"]["MaskOutput"] | components["schemas"]["ControlOutput"] | components["schemas"]["ModelLoaderOutput"] | components["schemas"]["LoraLoaderOutput"] | components["schemas"]["VaeLoaderOutput"] | components["schemas"]["PromptOutput"] | components["schemas"]["PromptCollectionOutput"] | components["schemas"]["CompelOutput"] | components["schemas"]["IntOutput"] | components["schemas"]["FloatOutput"] | components["schemas"]["LatentsOutput"] | components["schemas"]["IntCollectionOutput"] | components["schemas"]["FloatCollectionOutput"] | components["schemas"]["ImageCollectionOutput"] | components["schemas"]["NoiseOutput"] | components["schemas"]["GraphInvocationOutput"] | components["schemas"]["IterateInvocationOutput"] | components["schemas"]["CollectInvocationOutput"]) | undefined;
+ [key: string]: (components["schemas"]["IntCollectionOutput"] | components["schemas"]["FloatCollectionOutput"] | components["schemas"]["ImageCollectionOutput"] | components["schemas"]["ModelLoaderOutput"] | components["schemas"]["LoraLoaderOutput"] | components["schemas"]["VaeLoaderOutput"] | components["schemas"]["CompelOutput"] | components["schemas"]["ClipSkipInvocationOutput"] | components["schemas"]["ImageOutput"] | components["schemas"]["MaskOutput"] | components["schemas"]["ControlOutput"] | components["schemas"]["LatentsOutput"] | components["schemas"]["IntOutput"] | components["schemas"]["FloatOutput"] | components["schemas"]["NoiseOutput"] | components["schemas"]["PromptOutput"] | components["schemas"]["PromptCollectionOutput"] | components["schemas"]["GraphInvocationOutput"] | components["schemas"]["IterateInvocationOutput"] | components["schemas"]["CollectInvocationOutput"]) | undefined;
};
/**
* Errors
@@ -4583,7 +4639,7 @@ export type operations = {
};
requestBody: {
content: {
- "application/json": components["schemas"]["LoadImageInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["ParamIntInvocation"] | components["schemas"]["ParamFloatInvocation"] | components["schemas"]["TextToLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["UpscaleInvocation"] | components["schemas"]["RestoreFaceInvocation"] | components["schemas"]["InpaintInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"] | components["schemas"]["LatentsToLatentsInvocation"];
+ "application/json": components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["LoadImageInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["TextToLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["InpaintInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["ParamIntInvocation"] | components["schemas"]["ParamFloatInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["RestoreFaceInvocation"] | components["schemas"]["UpscaleInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"] | components["schemas"]["LatentsToLatentsInvocation"];
};
};
responses: {
@@ -4620,7 +4676,7 @@ export type operations = {
};
requestBody: {
content: {
- "application/json": components["schemas"]["LoadImageInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["ParamIntInvocation"] | components["schemas"]["ParamFloatInvocation"] | components["schemas"]["TextToLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["UpscaleInvocation"] | components["schemas"]["RestoreFaceInvocation"] | components["schemas"]["InpaintInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"] | components["schemas"]["LatentsToLatentsInvocation"];
+ "application/json": components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["LoadImageInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["TextToLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["InpaintInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["ParamIntInvocation"] | components["schemas"]["ParamFloatInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["RestoreFaceInvocation"] | components["schemas"]["UpscaleInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"] | components["schemas"]["LatentsToLatentsInvocation"];
};
};
responses: {