Skip to content

Add hotel receptionist scenario example#1877

Open
rosetta-livekit-bot[bot] wants to merge 1 commit into
mainfrom
smoker-sobs-excite
Open

Add hotel receptionist scenario example#1877
rosetta-livekit-bot[bot] wants to merge 1 commit into
mainfrom
smoker-sobs-excite

Conversation

@rosetta-livekit-bot

@rosetta-livekit-bot rosetta-livekit-bot Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • port the expanded hotel receptionist scenario assets from Hotel Receptionist Scenario Expansion agents#6186
  • add a TypeScript hotel receptionist example with in-memory seed data and scenario-facing room, restaurant, concierge, privacy, emergency, and follow-up tools
  • annotate copied YAML/markdown assets for REUSE and declare HOTEL_TODAY for deterministic scenario runs

Testing

  • pnpm build
  • pnpm --filter livekit-agents-examples build
  • pnpm format:check
  • pnpm --filter livekit-agents-examples lint (passes with existing TSDoc warnings in examples/src/testing/survey_agent.test.ts)

Ported from livekit/agents#6186

Original PR description

This PR:

  • Extends the simulation set to 100 scenarios
    • This also adds policies and tools to accomplish the tasks set out in these scenarios
  • Splits tools and instructions out into their own files so they're easier to grok
  • Optimizes the agent persona to answer as many of the scenarios correctly as possible

Next:

  • Comprehensive README explaining the architecture and design choices of the Hotel Receptionist
  • Performance tuning

@changeset-bot

changeset-bot Bot commented Jun 24, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 317317b

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

Open in Devin Review

Comment on lines +647 to +650
const room =
ctx.userData.db
.availableRooms(checkIn, checkOut, guests)
.find((candidate) => candidate.type === wantedType) ?? currentRoom;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 start_booking_modification fallback bypasses conflict check, silently creating double-bookings

The availableRooms call at line 649 does not exclude the booking being modified from its overlap check (examples/src/hotel_receptionist/hotel_receptionist.ts:437-449). Since the booking is still confirmed with its original dates, the booking's own room always appears unavailable due to self-conflict. The ?? currentRoom fallback on line 650 then assigns the current room without verifying the new dates don't conflict with other bookings on that room.

For example, with the seed data, room 301 has both Holt (day -2 to +1) and Tanaka (day 0 to +3). If Holt's booking is modified to extend through day +4, availableRooms won't find room 301 (both self-conflict and Tanaka's booking conflict), but ?? currentRoom assigns it anyway — creating/worsening a double-booking that lookup_booking (line 592-599) would flag as a conflict.

Prompt for agents
The start_booking_modification tool at line 647-650 uses `availableRooms(checkIn, checkOut, guests).find(...) ?? currentRoom` to pick a room. The availableRooms method (line 437-449) checks ALL confirmed bookings for overlap, including the booking being modified itself. This means the booking's own room is always excluded due to self-conflict, and the ?? currentRoom fallback silently assigns the current room even when the new dates conflict with OTHER confirmed bookings on that room.

To fix this, the availableRooms method should accept an optional bookingCodeToExclude parameter (or the booking's code/reference) so the booking being modified is excluded from the overlap check. This way, the current room would appear available when appropriate, AND if other bookings conflict with the new dates, the room would correctly appear unavailable. The ?? currentRoom fallback should either be removed or replaced with an explicit error when no room is available.

Relevant code: HotelDb.availableRooms (line 437-449), start_booking_modification execute (line 636-658).
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants