File size: 734 Bytes
d197cf3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/** Resolves the one effective launchd label shared by lifecycle and diagnostics. */
import { sanitizeForLog } from "../../packages/terminal-core/src/ansi.js";
import { resolveGatewayLaunchAgentLabel } from "./constants.js";

export function assertValidLaunchAgentLabel(label: string): string {
  const trimmed = label.trim();
  if (!/^[A-Za-z0-9._-]+$/.test(trimmed)) {
    throw new Error(`Invalid launchd label: ${sanitizeForLog(trimmed)}`);
  }
  return trimmed;
}

export function resolveLaunchAgentLabel(env?: Record<string, string | undefined>): string {
  const override = env?.OPENCLAW_LAUNCHD_LABEL?.trim();
  return assertValidLaunchAgentLabel(
    override || resolveGatewayLaunchAgentLabel(env?.OPENCLAW_PROFILE),
  );
}