Forked from bakit/terminal
Forked from bakit/terminal
src / config.ts
import * as os from "os";
import * as path from "path";
import * as fs from "fs";
// ── Configuration ──
export interface TerminalConfig {
defaultShell: "powershell" | "cmd";
defaultTimeoutMs: number;
maxOutputBytes: number;
maxConcurrentExecutions: number;
logLevel: "debug" | "info" | "warn" | "error";
logDirectory: string;
workspaceDirectory: string;
enableSecurityChecks: boolean;
enableProcessTracking: boolean;
maxRetries: number;
retryDelayMs: number;
}
export const DEFAULT_CONFIG: TerminalConfig = {
defaultShell: "powershell",
defaultTimeoutMs: 30000,
maxOutputBytes: 10 * 1024 * 1024,
maxConcurrentExecutions: 4,
logLevel: "info",
logDirectory: path.join(os.homedir(), ".lmstudio-terminal", "logs"),
workspaceDirectory: path.join(os.homedir(), ".lmstudio-terminal", "workspace"),
enableSecurityChecks: true,
enableProcessTracking: true,
maxRetries: 2,
retryDelayMs: 500,
};
export function resolveConfigPath(): string {
return path.join(os.homedir(), ".lmstudio-terminal", "config.json");
}
export function ensureConfigDirectory(): void {
const dir = path.dirname(resolveConfigPath());
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, { recursive: true });
}
}
export function loadConfig(): TerminalConfig {
ensureConfigDirectory();
const configPath = resolveConfigPath();
try {
const raw = fs.readFileSync(configPath, "utf8");
return { ...DEFAULT_CONFIG, ...JSON.parse(raw) };
} catch {
return DEFAULT_CONFIG;
}
}
export function saveConfig(config: TerminalConfig): void {
ensureConfigDirectory();
const configPath = resolveConfigPath();
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), "utf8");
}
src / config.ts
import * as os from "os";
import * as path from "path";
import * as fs from "fs";
// ── Configuration ──
export interface TerminalConfig {
defaultShell: "powershell" | "cmd";
defaultTimeoutMs: number;
maxOutputBytes: number;
maxConcurrentExecutions: number;
logLevel: "debug" | "info" | "warn" | "error";
logDirectory: string;
workspaceDirectory: string;
enableSecurityChecks: boolean;
enableProcessTracking: boolean;
maxRetries: number;
retryDelayMs: number;
}
export const DEFAULT_CONFIG: TerminalConfig = {
defaultShell: "powershell",
defaultTimeoutMs: 30000,
maxOutputBytes: 10 * 1024 * 1024,
maxConcurrentExecutions: 4,
logLevel: "info",
logDirectory: path.join(os.homedir(), ".lmstudio-terminal", "logs"),
workspaceDirectory: path.join(os.homedir(), ".lmstudio-terminal", "workspace"),
enableSecurityChecks: true,
enableProcessTracking: true,
maxRetries: 2,
retryDelayMs: 500,
};
export function resolveConfigPath(): string {
return path.join(os.homedir(), ".lmstudio-terminal", "config.json");
}
export function ensureConfigDirectory(): void {
const dir = path.dirname(resolveConfigPath());
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, { recursive: true });
}
}
export function loadConfig(): TerminalConfig {
ensureConfigDirectory();
const configPath = resolveConfigPath();
try {
const raw = fs.readFileSync(configPath, "utf8");
return { ...DEFAULT_CONFIG, ...JSON.parse(raw) };
} catch {
return DEFAULT_CONFIG;
}
}
export function saveConfig(config: TerminalConfig): void {
ensureConfigDirectory();
const configPath = resolveConfigPath();
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), "utf8");
}