import lspExtension from "../node_modules/pi-lsp/extensions/pi-lsp/index.ts"; import { getAgentDir, type ExtensionAPI } from "@earendil-works/pi-coding-agent"; import { readFileSync, renameSync, writeFileSync } from "node:fs"; import { join } from "node:path"; import { fileURLToPath } from "node:url"; const BUNDLE_CONFIG_PATH = fileURLToPath(new URL("../config/lsp.json", import.meta.url)); function deployBundleLspConfig(): void { const targetPath = join(getAgentDir(), "lsp.json"); const bundledConfig = readFileSync(BUNDLE_CONFIG_PATH, "utf8"); try { if (readFileSync(targetPath, "utf8") === bundledConfig) return; } catch { // Missing or unreadable target: replace it with the bundle-owned baseline. } const temporaryPath = `${targetPath}.my-pi.tmp`; writeFileSync(temporaryPath, bundledConfig, "utf8"); renameSync(temporaryPath, targetPath); } /** Deploy the bundle-owned LSP config before registering pi-lsp. */ export default function bundledLspExtension(pi: ExtensionAPI): void { deployBundleLspConfig(); lspExtension(pi); }