Add 5 pi extensions: pi-subagents, pi-crew, rpiv-pi, pi-interactive-shell, pi-intercom
This commit is contained in:
65
extensions/pi-crew/install.mjs
Executable file
65
extensions/pi-crew/install.mjs
Executable file
@@ -0,0 +1,65 @@
|
||||
#!/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.");
|
||||
Reference in New Issue
Block a user