UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

35 lines (34 loc) 1.13 kB
import { t as writeSiblingTempFile } from "./sibling-temp-file-BxATtN66.js"; import path from "node:path"; import fs from "node:fs/promises"; //#region src/cli/output-file.runtime.ts const DEFAULT_CLI_OUTPUT_TEMP_PREFIX = ".openclaw-media-output"; async function resolveExistingOutputMode(filePath) { try { return (await fs.stat(filePath)).mode & 4095; } catch (error) { if (error.code === "ENOENT") return; throw error; } } /** Publish a CLI-owned file only after its sibling temp write completes. */ async function publishOutputFileAtomically(params) { const dir = path.dirname(params.filePath); await fs.mkdir(dir, { recursive: true }); const mode = await resolveExistingOutputMode(params.filePath); const { result } = await writeSiblingTempFile({ dir, chmodDir: false, tempPrefix: params.tempPrefix ?? DEFAULT_CLI_OUTPUT_TEMP_PREFIX, ...mode === void 0 ? {} : { mode }, ...params.durable ? { syncTempFile: true, syncParentDir: true } : {}, writeTemp: params.writeTemp, resolveFinalPath: () => params.filePath }); return result; } //#endregion export { publishOutputFileAtomically as t };