Skip to content

Commit af69d5b

Browse files
committed
include player name and actions in discord prompt, include room count in generator prompt
1 parent 5a32bd9 commit af69d5b

File tree

4 files changed

+43
-9
lines changed

4 files changed

+43
-9
lines changed

taleweave/bot/discord.py

+25-1
Original file line numberDiff line numberDiff line change
@@ -427,9 +427,33 @@ def embed_from_player(event: PlayerEvent):
427427

428428

429429
def embed_from_prompt(event: PromptEvent):
430-
# TODO: ping the player
431430
prompt_embed = Embed(title=event.room.name, description=event.character.name)
432431
prompt_embed.add_field(name="Prompt", value=truncate(event.prompt))
432+
433+
if has_player(event.character.name):
434+
players = list_players()
435+
user = next(
436+
(
437+
player
438+
for player, character in players.items()
439+
if character == event.character.name
440+
),
441+
None,
442+
)
443+
444+
if user:
445+
# TODO: use Discord user.mention to ping the user
446+
prompt_embed.add_field(
447+
name="Player",
448+
value=user,
449+
)
450+
451+
for action in event.actions:
452+
# TODO: use a prompt template to summarize actions
453+
action_name = action["function"]["name"]
454+
action_description = action["function"]["description"]
455+
prompt_embed.add_field(name=action_name, value=action_description)
456+
433457
return prompt_embed
434458

435459

taleweave/context.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,15 @@
3434
dungeon_master: Agent | None = None
3535

3636
# game context
37+
# TODO: wrap this into a class that can be passed around
38+
character_agents: Dict[str, Tuple[Character, Agent]] = {}
3739
event_emitter = EventEmitter()
3840
game_config: Config = DEFAULT_CONFIG
3941
game_systems: List[GameSystem] = []
4042
prompt_library: PromptLibrary = PromptLibrary(prompts={})
4143
system_data: Dict[str, Any] = {}
4244

4345

44-
# TODO: where should this one go?
45-
character_agents: Dict[str, Tuple[Character, Agent]] = {}
46-
4746
STRING_EVENT_TYPE = "message"
4847

4948

taleweave/generate.py

+13-4
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@
3838

3939
logger = getLogger(__name__)
4040

41+
MAX_NAME_LENGTH = 50
42+
DISALLOWED_PUNCTUATION = ['"', ":"]
43+
4144

4245
def get_world_config():
4346
config = get_game_config()
@@ -58,12 +61,12 @@ def name_parser(value: str, **kwargs):
5861
format_prompt("world_generate_error_name_json", name=value)
5962
)
6063

61-
if '"' in value or ":" in value:
64+
if any(p in value for p in DISALLOWED_PUNCTUATION):
6265
raise ValueError(
6366
format_prompt("world_generate_error_name_punctuation", name=value)
6467
)
6568

66-
if len(value) > 50:
69+
if len(value) > MAX_NAME_LENGTH:
6770
raise ValueError(
6871
format_prompt("world_generate_error_name_length", name=value)
6972
)
@@ -99,6 +102,8 @@ def generate_room(
99102
agent: Agent,
100103
world: World,
101104
systems: List[GameSystem],
105+
current_room: int | None = None,
106+
total_rooms: int | None = None,
102107
) -> Room:
103108
existing_rooms = [room.name for room in list_rooms(world)]
104109

@@ -108,6 +113,8 @@ def generate_room(
108113
context={
109114
"world_theme": world.theme,
110115
"existing_rooms": existing_rooms,
116+
"current_room": current_room,
117+
"total_rooms": total_rooms,
111118
},
112119
result_parser=duplicate_name_parser(existing_rooms),
113120
toolbox=None,
@@ -575,9 +582,11 @@ def generate_world(
575582
set_system_data(system.name, data)
576583

577584
# generate the rooms
578-
for _ in range(room_count):
585+
for i in range(room_count):
579586
try:
580-
room = generate_room(agent, world, systems)
587+
room = generate_room(
588+
agent, world, systems, current_room=i, total_rooms=room_count
589+
)
581590
generate_system_attributes(agent, world, room, systems)
582591
broadcast_generated(entity=room)
583592
world.rooms.append(room)

taleweave/main.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,9 @@ def load_or_generate_world(
299299
new_rooms = []
300300
for i in range(add_rooms):
301301
logger.info(f"generating room {i + 1} of {add_rooms}")
302-
room = generate_room(world_builder, world, systems)
302+
room = generate_room(
303+
world_builder, world, systems, current_room=i, total_rooms=add_rooms
304+
)
303305
new_rooms.append(room)
304306
world.rooms.append(room)
305307

0 commit comments

Comments
 (0)