54 lines
2.3 KiB
TypeScript
54 lines
2.3 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");
|
|
export const DIRECT_SSH_TIMEOUT_MS = Number(process.env.DIRECT_SSH_TIMEOUT_MS || "30000");
|
|
export const DIRECT_SSH_KEY_PATH = process.env.DIRECT_SSH_KEY_PATH || "/root/.ssh/id_ed25519";
|
|
|
|
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: [],
|
|
directAgents: [],
|
|
});
|
|
|
|
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,
|
|
};
|