src / config.ts
import { createConfigSchematics } from "@lmstudio/sdk";
export const configSchematics = createConfigSchematics()
.field(
"cliPath",
"string",
{
displayName: "Path to draw-things-cli",
description: "Absolute path to the draw-things-cli binary.",
},
"/opt/homebrew/bin/draw-things-cli"
)
.field(
"defaultModel",
"string",
{
displayName: "Default Model",
description: "Model filename to use when not specified in the prompt (e.g. ernie_image_turbo_q8p.ckpt). Use the 'list_dt_models' tool to see available models.",
},
""
)
.field(
"outputDir",
"string",
{
displayName: "Output Directory (optional)",
description: "Directory where generated PNG files are saved. If empty, files are saved to the current session working directory and displayed inline automatically.",
},
""
)
.field(
"defaultWidth",
"numeric",
{
displayName: "Default Width (px)",
description: "Image width in pixels.",
},
1024
)
.field(
"defaultHeight",
"numeric",
{
displayName: "Default Height (px)",
description: "Image height in pixels.",
},
1024
)
.field(
"defaultSteps",
"numeric",
{
displayName: "Default Steps",
description: "Number of diffusion steps.",
},
8
)
.field(
"defaultCfg",
"numeric",
{
displayName: "Default CFG Scale",
description: "Classifier-free guidance scale.",
},
1
)
.field(
"defaultSeed",
"numeric",
{
displayName: "Default Seed",
description: "Generation seed. Use -1 for random.",
},
-1
)
.field(
"generationTimeout",
"numeric",
{
displayName: "Generation Timeout (seconds)",
description: "Maximum time to wait for image generation. Large models may need 3–5 minutes.",
},
300
)
.field(
"convertToJpeg",
"boolean",
{
displayName: "Convert chat images to JPEG",
description: "Convert generated images to JPEG before displaying in chat. Reduces file size significantly. Images in the optional output folder are never compressed.",
},
false
)
.field(
"jpegQuality",
"numeric",
{
displayName: "JPEG Quality (0–100)",
subtitle: "JPEG compression quality. 100 = highest quality, largest file. 0 = lowest quality, smallest file. Images in optional output folder are never compressed.",
int: true,
min: 0,
max: 100,
slider: { min: 0, max: 100, step: 1 },
},
85
)
.build();