```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 booked: string[] = [];
  for (const row of sessions) {
    let moment = Math.max(row.want, opensAt);
    let found = false;
    while (!found && moment <= closesAt - row.span) {
      let conflict = false;
      for (const [start, end] of booked.map(item => item.split(" ").slice(1).map(Number))) {
        if (!(moment >= end || moment + row.span <= start)) {
          conflict = true;
          break;
        }
      }
      if (!conflict) {
        found = true;
        booked.push(row.id + " " + moment);
      } else {
        moment++;
      }
    }
    if (!found) {
      booked.push(row.id + " away");
    }
  }
  return booked;
}
```