src / config.ts
import { createConfigSchematics } from "@lmstudio/sdk";
export const configSchematics = createConfigSchematics()
.field(
"autoStart",
"boolean",
{
displayName: "Start projects automatically",
subtitle: "Start a project in a chat after two turns in a row that each use several tools. /tl off stops it.",
},
true,
)
.field(
"heavyTurnCalls",
"numeric",
{
displayName: "Tool calls for a heavy turn",
subtitle: "Tool calls after one message (not counting memory and clock lookups) that make it count toward an automatic start.",
min: 1,
max: 20,
int: true,
},
3,
)
.field(
"staleAfterTurns",
"numeric",
{
displayName: "Remind after turns",
subtitle: "Turns that used tools without a ledger update before the model is reminded to record its work.",
min: 1,
max: 10,
int: true,
},
2,
)
.field(
"recall",
"boolean",
{
displayName: "Recall",
subtitle: "In long chats, keep a searchable copy of the chat so the model can look up what compression summarized away.",
},
true,
)
.field(
"recallThresholdTokens",
"numeric",
{
displayName: "Recall starts at (tokens of chat)",
subtitle: "Chat length at which the searchable copy is made and the recall tool is offered.",
min: 2000,
max: 200000,
int: true,
},
24000,
)
.field(
"fullDigestTokens",
"numeric",
{
displayName: "Full state cap (tokens)",
subtitle: "Largest size of the full project state shown to the model.",
min: 200,
max: 3000,
int: true,
},
600,
)
.field(
"verbatimWindowTokens",
"numeric",
{
displayName: "Verbatim window (tokens)",
subtitle:
"Match context-compressor's 'Recent context kept verbatim'. The full state is shown again once the last one is further back than this.",
min: 1000,
max: 64000,
int: true,
},
6000,
)
.field(
"showStatus",
"boolean",
{
displayName: "Status line",
subtitle: "Show the project and its progress above each reply. Visible to you only; costs no tokens.",
},
true,
)
.build();
src / config.ts
import { createConfigSchematics } from "@lmstudio/sdk";
export const configSchematics = createConfigSchematics()
.field(
"autoStart",
"boolean",
{
displayName: "Start projects automatically",
subtitle: "Start a project in a chat after two turns in a row that each use several tools. /tl off stops it.",
},
true,
)
.field(
"heavyTurnCalls",
"numeric",
{
displayName: "Tool calls for a heavy turn",
subtitle: "Tool calls after one message (not counting memory and clock lookups) that make it count toward an automatic start.",
min: 1,
max: 20,
int: true,
},
3,
)
.field(
"staleAfterTurns",
"numeric",
{
displayName: "Remind after turns",
subtitle: "Turns that used tools without a ledger update before the model is reminded to record its work.",
min: 1,
max: 10,
int: true,
},
2,
)
.field(
"recall",
"boolean",
{
displayName: "Recall",
subtitle: "In long chats, keep a searchable copy of the chat so the model can look up what compression summarized away.",
},
true,
)
.field(
"recallThresholdTokens",
"numeric",
{
displayName: "Recall starts at (tokens of chat)",
subtitle: "Chat length at which the searchable copy is made and the recall tool is offered.",
min: 2000,
max: 200000,
int: true,
},
24000,
)
.field(
"fullDigestTokens",
"numeric",
{
displayName: "Full state cap (tokens)",
subtitle: "Largest size of the full project state shown to the model.",
min: 200,
max: 3000,
int: true,
},
600,
)
.field(
"verbatimWindowTokens",
"numeric",
{
displayName: "Verbatim window (tokens)",
subtitle:
"Match context-compressor's 'Recent context kept verbatim'. The full state is shown again once the last one is further back than this.",
min: 1000,
max: 64000,
int: true,
},
6000,
)
.field(
"showStatus",
"boolean",
{
displayName: "Status line",
subtitle: "Show the project and its progress above each reply. Visible to you only; costs no tokens.",
},
true,
)
.build();