/**
 * Offload Session Utilities — unified sessionId sanitization.
 *
 * sessionId: opaque identifier from client (free format, e.g. "main:main", "coding:session-001")
 * sanitizedSessionId: filesystem-safe version used for:
 *   - File/directory paths (offload/{sanitizedSessionId}/)
 *   - Distributed lock keys
 *   - Task queue session identifiers
 *
 * Conversion: replace all non-alphanumeric/dot/hyphen/underscore chars with "_"
 */

/**
 * Convert a raw sessionId to a filesystem-safe string.
 * Replaces colons and other unsafe characters with underscores.
 */
export function sanitizeSessionId(sessionId: string): string {
  return sessionId.replace(/[^a-zA-Z0-9._\-]/g, "_");
}

/**
 * Build the offload storage base path for a session.
 */
export function buildOffloadBasePath(sessionId: string): string {
  return `offload/${sanitizeSessionId(sessionId)}`;
}

// Legacy compat: keep old name as alias (will remove after all callers migrated)
export const toSessionId = sanitizeSessionId;
