Files
openclaw-taskboard/lib/fleet-config.ts

51 lines
2.1 KiB
TypeScript

import fs from "node:fs";
import path from "node:path";
import type { FleetConfig, TaskTemplate } from "@/lib/types";
export const OPENCLAW_RUNTIME_ROOT = process.env.OPENCLAW_RUNTIME_ROOT || "/home/bear/.openclaw";
export const OPENCLAW_AGENTS_DIR = process.env.AGENTS_DIR || "/home/bear/.openclaw/agents";
export const OPENCLAW_CONFIG_PATH = process.env.OPENCLAW_CONFIG || "/home/bear/.openclaw/openclaw.json";
export const SWARM_TASKS_FILE = process.env.SWARM_TASKS_FILE || "/app/swarm/active-tasks.json";
export const SWARM_REPO_MAP_FILE = process.env.SWARM_REPO_MAP_FILE || "/app/swarm/repo-map.json";
export const SWARM_WORKTREES_DIR = process.env.SWARM_WORKTREES_DIR || "/app/swarm/worktrees";
export const SWARM_HOST_WORKTREES_DIR =
process.env.SWARM_HOST_WORKTREES_DIR || SWARM_WORKTREES_DIR;
export const REPO_ACCESS_ROOTS = (process.env.REPO_ACCESS_ROOTS || "/srv/apps,/home/bear")
.split(",")
.map((entry) => entry.trim())
.filter(Boolean);
export const ZEROCLAW_PRIMARY_DIR = process.env.ZEROCLAW_PRIMARY_DIR || "/app/zeroclaw/grizzley";
export const ZEROCLAW_CONTROL_DIR = process.env.ZEROCLAW_CONTROL_DIR || "/app/zeroclaw/ice";
export const ZEROCLAW_WEBHOOK_TIMEOUT_MS = Number(process.env.ZEROCLAW_WEBHOOK_TIMEOUT_MS || "15000");
const CONFIG_DIR = path.join(process.cwd(), "config");
const FLEET_CONFIG_PATH = path.join(CONFIG_DIR, "fleet.json");
const TASK_TEMPLATE_PATH = path.join(CONFIG_DIR, "task-templates.json");
function readJsonFile<T>(filePath: string, fallback: T): T {
try {
return JSON.parse(fs.readFileSync(filePath, "utf8")) as T;
} catch {
return fallback;
}
}
export const FLEET_CONFIG = readJsonFile<FleetConfig>(FLEET_CONFIG_PATH, {
title: "Claw Fleet Architecture",
overview: [],
topologyDiagram: "",
sections: [],
zeroclawAgents: [],
});
export const TASK_TEMPLATES = readJsonFile<TaskTemplate[]>(TASK_TEMPLATE_PATH, []);
export const ARCHITECTURE_DOCUMENT = {
generatedAt: new Date().toISOString(),
title: FLEET_CONFIG.title,
overview: FLEET_CONFIG.overview,
sections: FLEET_CONFIG.sections,
topologyDiagram: FLEET_CONFIG.topologyDiagram,
};