Project Files
src / config.ts
import { createConfigSchematics } from "@lmstudio/sdk";
// This file contains the definition of configuration schematics for your plugin.
export const configSchematics = createConfigSchematics()
// 1) Model
.field(
"model",
"select",
{
displayName: "Model",
subtitle: "Select the agent model to use for generation.",
options: [
{ value: "gemini-3-pro-image-preview", displayName: "Gemini 3 Pro Image (Nano Banana Pro)" },
{ value: "gemini-3.1-pro-preview", displayName: "Gemini 3.1 Pro" },
],
},
"gemini-3-pro-image-preview",
)
// 1b) Thinking Level
.field(
"thinkingLevel",
"select",
{
displayName: "Thinking Level",
subtitle: "Controls the reasoning depth for Gemini 3 Pro Preview. Currently defaults to 'low'.",
options: [
{ value: "low", displayName: "Low" },
{ value: "medium", displayName: "Medium" },
{ value: "high", displayName: "High" },
],
},
"low",
)
// 1c) Show Only Last Image Variant
.field(
"showOnlyLastImageVariant",
"boolean",
{
displayName: "Show Only Last Image Variant",
subtitle: "For Gemini 3 Pro Image: Hides intermediate reasoning images in chat and promotion, showing/using only the final variant.",
},
true,
)
// 4) Use Files for Vision
.field(
"useFilesApiForVision",
"boolean",
{
displayName: "Use Files for Vision",
subtitle: "Use the Files API for vision tasks (more efficient).",
},
true,
)
// 5) Debug: Log Chunks
.field(
"debugChunks",
"boolean",
{
displayName: "Debug: Log Chunks",
subtitle: "Prints chunk processing and tool-call events to the console.",
engineDoesNotSupport: true,
},
false,
)
// 6) Debug: Log requests/response
.field(
"logRequests",
"boolean",
{
displayName: "Debug: Log requests/response",
subtitle: "Logs full request/response JSON; may include sensitive data.",
engineDoesNotSupport: true,
},
false,
)
.build();
export const globalConfigSchematics = createConfigSchematics()
// 7) Vision Promotion Mode
.field(
"visionPromotionPersistent",
"boolean",
{
displayName: "Vision Promotion: Persistent",
subtitle:
"ON: promote attachments and variants every turn. OFF: promote only when new (default).",
},
false,
)
// 8) API Key
.field("apiKey", "string", {
displayName: "Google AI Studio API Key",
isProtected: true,
placeholder: "AIzaSy...",
}, "")
.build();