```ts
export function slideSessions(
  sessions: any[],
  opensAt: number,
  closesAt: number,
): string[] {
  if (!Number.isInteger(opensAt) || !Number.isInteger(closesAt)) {
    throw new Error("the day's bounds must be integers");
  }
  if (opensAt >= closesAt) {
    throw new Error("the studio must close after it opens");
  }
  const seen = new Set<string>();
  for (const row of sessions) {
    if (row === null || typeof row !== "object" || Array.isArray(row)) {
      throw new Error("each request must be a record");
    }
    if (typeof row.id !== "string" || row.id === "") {
      throw new Error("id must be a non-empty string");
    }
    if (!Number.isInteger(row.want)) {
      throw new Error("want must be an integer");
    }
    if (!Number.isInteger(row.span) || row.span < 1) {
      throw new Error("span must be a positive integer");
    }
    if (seen.has(row.id)) {
      throw new Error("repeated request id: " + row.id);
    }
    seen.add(row.id);
  }

  const placed: number[][] = [];
  const booked: string[] = [];
  for (const row of sessions) {
    let moment = Math.max(row.want, opensAt);
    while (placed.length > 0 && moment < placed[placed.length - 1][1]) {
      moment = placed[placed.length - 1][1];
    }
    if (moment + row.span <= closesAt) {
      placed.push([moment, moment + row.span]);
      booked.push(row.id + " " + moment);
    } else {
      booked.push(row.id + " away");
    }
  }
  return booked;
}
```