import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";

const SLACK_THREAD_TS_PATTERN = /^\d+\.\d+$/;

export function normalizeSlackThreadTsCandidate(
  value?: string | number | null,
): string | undefined {
  if (typeof value !== "string") {
    return undefined;
  }
  const normalized = normalizeOptionalString(value);
  return normalized && SLACK_THREAD_TS_PATTERN.test(normalized) ? normalized : undefined;
}

export function resolveSlackThreadTsValue(params: {
  replyToId?: string | number | null;
  threadId?: string | number | null;
}): string | undefined {
  return (
    normalizeSlackThreadTsCandidate(params.replyToId) ??
    normalizeSlackThreadTsCandidate(params.threadId)
  );
}
