UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

60 lines (59 loc) 2.81 kB
import { nt as isConfigSetJsonParseOnly } from "./argv-DNjh_yaF.js"; import { t as resolveCliArgvInvocation } from "./argv-invocation-C1WhAkJL.js"; import { n as loggingState } from "./state-UxwJeH7V.js"; //#region src/cli/json-output-mode.ts let resolvedJsonOutputMode = null; /** Detects CLI JSON mode before Commander parses options, stopping at the argv sentinel. */ function hasJsonOutputFlag(argv) { for (const arg of argv) { if (arg === "--") return false; if (arg === "--json" || arg.startsWith("--json=")) return true; } return false; } /** Uses Commander-resolved output ownership when available, then falls back to argv. */ function isJsonOutputModeActive(argv) { const commandPath = resolveCliArgvInvocation([...argv]).commandPath; const parseOnlyJson = commandPath[0] === "config" && commandPath[1] === "set" && isConfigSetJsonParseOnly(argv); return resolvedJsonOutputMode ?? (hasJsonOutputFlag(argv) && !parseOnlyJson); } /** Keeps structured JSON stdout clean by routing incidental console logs to stderr. */ async function withConsoleLogsRoutedToStderrForJson(argv, run, options = {}) { const forceStderr = hasJsonOutputFlag(argv) || options.machineOutput; if (!forceStderr && !options.restoreChanges) return run(); const previousForceStderr = loggingState.forceConsoleToStderr; const previousEarlyRestore = loggingState.earlyConsoleRoutingRestore; const previousJsonOutputMode = resolvedJsonOutputMode; resolvedJsonOutputMode = null; if (forceStderr) { loggingState.earlyConsoleRoutingRestore = previousForceStderr; loggingState.forceConsoleToStderr = true; } try { return await run(); } finally { if (!options.retainRoutingUntilProcessExit) { loggingState.forceConsoleToStderr = previousForceStderr; loggingState.earlyConsoleRoutingRestore = previousEarlyRestore; resolvedJsonOutputMode = previousJsonOutputMode; } } } /** Let resolved command metadata override conservative early literal-flag routing. */ function applyResolvedCommandOutputMode(jsonOutputMode, machineOutputMode = jsonOutputMode) { resolvedJsonOutputMode = jsonOutputMode; const restore = loggingState.earlyConsoleRoutingRestore; if (!machineOutputMode && restore !== null) loggingState.forceConsoleToStderr = restore; } /** Route startup diagnostics to stderr while a command's output mode is still being discovered. */ async function withConsoleLogsRoutedToStderr(run) { const previousForceStderr = loggingState.forceConsoleToStderr; loggingState.forceConsoleToStderr = true; try { return await run(); } finally { loggingState.forceConsoleToStderr = previousForceStderr; } } //#endregion export { withConsoleLogsRoutedToStderrForJson as a, withConsoleLogsRoutedToStderr as i, hasJsonOutputFlag as n, isJsonOutputModeActive as r, applyResolvedCommandOutputMode as t };