import * as fs from "node:fs"; import * as os from "node:os"; import * as path from "node:path"; import type { ExtensionConfig } from "./types.js"; import { getSubagentConfigPath } from "./paths.js"; export function getSubagentSessionRoot(parentSessionFile: string | null): string { if (parentSessionFile) { const baseName = path.basename(parentSessionFile, ".jsonl"); const sessionsDir = path.dirname(parentSessionFile); return path.join(sessionsDir, baseName); } return fs.mkdtempSync(path.join(os.tmpdir(), "pi-subagent-session-")); } export function loadSubagentConfig(): ExtensionConfig { const configPath = getSubagentConfigPath(); try { if (fs.existsSync(configPath)) { return JSON.parse(fs.readFileSync(configPath, "utf8")) as ExtensionConfig; } } catch {} return {}; } export function expandTildePath(p: string): string { return p.startsWith("~/") ? path.join(os.homedir(), p.slice(2)) : p; } export function ensureAccessibleDir(dirPath: string): void { fs.mkdirSync(dirPath, { recursive: true }); try { fs.accessSync(dirPath, fs.constants.R_OK | fs.constants.W_OK); } catch { try { fs.rmSync(dirPath, { force: true, recursive: true }); } catch {} fs.mkdirSync(dirPath, { recursive: true }); fs.accessSync(dirPath, fs.constants.R_OK | fs.constants.W_OK); } }