rowboat/apps/cli/src/application/config/config.ts

29 lines
961 B
TypeScript
Raw Normal View History

2025-10-28 13:17:06 +05:30
import path from "path";
import fs from "fs";
import { McpServerConfig } from "../entities/mcp.js";
import { z } from "zod";
2025-11-05 13:28:38 +05:30
import { homedir } from "os";
2025-10-28 13:17:06 +05:30
// Resolve app root relative to compiled file location (dist/...)
2025-11-05 13:28:38 +05:30
export const WorkDir = path.join(homedir(), ".rowboat");
2025-10-28 13:17:06 +05:30
function ensureDirs() {
const ensure = (p: string) => { if (!fs.existsSync(p)) fs.mkdirSync(p, { recursive: true }); };
ensure(WorkDir);
ensure(path.join(WorkDir, "workflows"));
ensure(path.join(WorkDir, "agents"));
ensure(path.join(WorkDir, "mcp"));
}
2025-10-28 13:17:06 +05:30
2025-11-05 13:28:38 +05:30
ensureDirs();
2025-10-28 13:17:06 +05:30
function loadMcpServerConfig(): z.infer<typeof McpServerConfig> {
const configPath = path.join(WorkDir, "mcp", "servers.json");
if (!fs.existsSync(configPath)) return { mcpServers: [] };
2025-10-28 13:17:06 +05:30
const config = fs.readFileSync(configPath, "utf8");
return McpServerConfig.parse(JSON.parse(config));
}
const { mcpServers } = loadMcpServerConfig();
export const McpServers = mcpServers;