Summary
The look command builds room descriptions from static room.description and templates (commands/handlers/look.ts:51-122) and never touches NarrationService. Route the full-room-description path through generateNarration('room_description', …) so players see LLM prose (with graceful template fallback).
Scope / Tasks
Acceptance Criteria
Dependencies
#513 (real context), Milestone A (to actually see LLM output). #511 for Azure callability.
Size
M
Derived from the LLM narration gap analysis (Volo) and decomposition (Elminster).
Summary
The
lookcommand builds room descriptions from staticroom.descriptionand templates (commands/handlers/look.ts:51-122) and never touchesNarrationService. Route the full-room-description path throughgenerateNarration('room_description', …)so players see LLM prose (with graceful template fallback).Scope / Tasks
commands/handlers/look.ts(the no-targetlook,:21-68).ZoneRoom.generateNarration('room_description', playerId, roomId, fallbackText)for that path; keep the current static text as thefallbackTextargument.ZoneRoom.ts:598-605).look.ts:32) and feature-target look (:122) unless explicitly in scope.narration-wiring.test.ts) assertingroom_descriptionreachesnarrate().Acceptance Criteria
lookwith a configured LLM returns LLM prose; with no LLM, returns the existing template text.room_descriptionis passed toNarrationService.narrate()from the look path.Dependencies
#513 (real context), Milestone A (to actually see LLM output). #511 for Azure callability.
Size
M
Derived from the LLM narration gap analysis (Volo) and decomposition (Elminster).