Files
pi-config/extensions/pi-crew/install.mjs

66 lines
2.4 KiB
JavaScript
Executable File

#!/usr/bin/env node
import * as fs from "node:fs";
import * as os from "node:os";
import * as path from "node:path";
const home = process.env.PI_TEAMS_HOME?.trim() || os.homedir();
const agentDir = path.join(home, ".pi", "agent");
const configPath = path.join(agentDir, "pi-crew.json");
const legacyConfigPath = path.join(agentDir, "extensions", "pi-crew", "config.json");
const defaultConfig = {
// Keep generated config non-invasive: runtime/limits use pi-crew internal defaults.
autonomous: {
enabled: true,
injectPolicy: true,
preferAsyncForLongTasks: false,
allowWorktreeSuggestion: true
},
agents: {
overrides: {
explorer: { model: false, thinking: "off" },
writer: { model: false, thinking: "off" },
planner: { model: false, thinking: "medium" },
analyst: { model: false, thinking: "off" },
critic: { model: false, thinking: "low" },
executor: { model: false, thinking: "medium" },
reviewer: { model: false, thinking: "off" },
"security-reviewer": { model: false, thinking: "medium" },
"test-engineer": { model: false, thinking: "low" },
verifier: { model: false, thinking: "off" }
}
},
ui: {
widgetPlacement: "aboveEditor",
widgetMaxLines: 8,
powerbar: true,
dashboardPlacement: "center",
dashboardWidth: 72,
dashboardLiveRefreshMs: 1000,
autoOpenDashboard: false,
autoOpenDashboardForForegroundRuns: false,
showModel: true,
showTokens: true,
showTools: true
}
};
fs.mkdirSync(agentDir, { recursive: true });
if (!fs.existsSync(configPath)) {
if (fs.existsSync(legacyConfigPath)) {
fs.copyFileSync(legacyConfigPath, configPath);
console.log(`Migrated pi-crew global config to: ${configPath}`);
} else {
fs.writeFileSync(configPath, `${JSON.stringify(defaultConfig, null, 2)}\n`, "utf-8");
console.log(`Created default pi-crew global config: ${configPath}`);
}
} else {
console.log(`pi-crew global config already exists: ${configPath}`);
}
console.log("\nInstall the published package in Pi with:");
console.log(" pi install npm:pi-crew");
console.log("\nFor local development from a cloned repo:");
console.log(" pi install .");
console.log("\nChild workers are enabled by default. For dry runs, set runtime.mode=scaffold or executeWorkers=false.");
console.log("To force-disable or force-enable workers in a shell, use PI_TEAMS_EXECUTE_WORKERS=0/1.");