41 lines · 1.2 KB · TypeScript
RawDownload
import { sha256 } from "@noble/hashes/sha2"; export interface DesktopAppControlAddress {  readonly address: string;  readonly directory: string | null;} function shortHash(value: string): string {  return Array.from(sha256(new TextEncoder().encode(value)).slice(0, 12), (byte) =>    byte.toString(16).padStart(2, "0"),  ).join("");} /** * Returns the local-only socket address shared by the desktop shell and CLI. * The state directory is hashed so custom T3 homes cannot exceed Unix socket * path limits. */export function resolveDesktopAppControlAddress(input: {  readonly stateDir: string;  readonly platform: NodeJS.Platform;  readonly tempDir: string;  readonly userId: number | undefined;  readonly joinPath: (...segments: readonly string[]) => string;}): DesktopAppControlAddress {  const stateHash = shortHash(input.stateDir);  if (input.platform === "win32") {    return {      address: `\\\\.\\pipe\\t3code-app-${stateHash}`,      directory: null,    };  }   const userKey =    input.userId === undefined ? shortHash(input.stateDir).slice(0, 12) : input.userId;  const directory = input.joinPath(input.tempDir, `t3code-${userKey}`);  return {    address: input.joinPath(directory, `${stateHash}.sock`),    directory,  };}