```ts
export function firstDeadlineMiss(jobs: Array<Record<string, unknown>>): string {
  if (!Array.isArray(jobs)) {
    throw new Error("Input must be an array of jobs");
  }

  const validatedJobs = jobs.map((job, index) => {
    const name = job.name as string;
    const work = job.work as number;
    const due = job.due as number;

    if (typeof name !== "string" || name.trim() === "") {
      throw new Error(`Invalid job name at index ${index}`);
    }
    if (!Number.isInteger(work) || work <= 0) {
      throw new Error(`Invalid work value at index ${index}`);
    }
    if (!Number.isInteger(due) || due <= 0) {
      throw new Error(`Invalid due value at index ${index}`);
    }

    return { name, work, due };
  });

  const jobNames = validatedJobs.map(job => job.name);
  const uniqueJobNames = new Set(jobNames);

  if (jobNames.length !== uniqueJobNames.size) {
    throw new Error("Duplicate job names found");
  }

  validatedJobs.sort((a, b) => a.due - b.due || jobs.indexOf(a) - jobs.indexOf(b));

  let currentTime = 0;
  for (const job of validatedJobs) {
    currentTime += job.work;
    if (currentTime > job.due) {
      return job.name;
    }
  }

  return "";
}
```