From d04af601ef22d1dec00f41edd6ac126227a8b1dc Mon Sep 17 00:00:00 2001 From: Sean Sube Date: Thu, 13 Jun 2024 22:37:41 -0500 Subject: [PATCH] fix some todos --- taleweave/actions/base.py | 2 ++ taleweave/bot/discord.py | 2 +- taleweave/models/effect.py | 4 ---- taleweave/server/websocket.py | 3 +++ taleweave/systems/action.py | 5 +++-- taleweave/systems/logic.py | 4 ++-- taleweave/systems/planning.py | 2 +- taleweave/utils/search.py | 1 - taleweave/utils/template.py | 6 +++++- 9 files changed, 17 insertions(+), 12 deletions(-) diff --git a/taleweave/actions/base.py b/taleweave/actions/base.py index 9105942..6bef3c8 100644 --- a/taleweave/actions/base.py +++ b/taleweave/actions/base.py @@ -42,6 +42,7 @@ def action_examine(target: str) -> str: ) ) + # TODO: allow "the room" as a target if normalize_name(target) == normalize_name(action_room.name): broadcast( format_prompt( @@ -52,6 +53,7 @@ def action_examine(target: str) -> str: ) return format_prompt("action_examine_result_room", target_room=action_room) + # TODO: allow "self" and "myself" as a target target_character = find_character_in_room(action_room, target) if target_character: broadcast( diff --git a/taleweave/bot/discord.py b/taleweave/bot/discord.py index 5a6a9cf..26d4764 100644 --- a/taleweave/bot/discord.py +++ b/taleweave/bot/discord.py @@ -453,7 +453,7 @@ def embed_from_prompt(event: PromptEvent): ) if user: - # TODO: use Discord user.mention to ping the user + # use Discord user.mention to ping the user if user in player_mentions: user = player_mentions[user] diff --git a/taleweave/models/effect.py b/taleweave/models/effect.py index 8177a95..5833c1f 100644 --- a/taleweave/models/effect.py +++ b/taleweave/models/effect.py @@ -43,10 +43,6 @@ AttributeEffectPattern = ( @dataclass class EffectPattern: - """ - TODO: should this be an EffectTemplate? - """ - name: str description: str application: Literal["permanent", "temporary"] diff --git a/taleweave/server/websocket.py b/taleweave/server/websocket.py index fc69088..f3ba162 100644 --- a/taleweave/server/websocket.py +++ b/taleweave/server/websocket.py @@ -346,6 +346,9 @@ async def server_main(): def server_system(world: World, turn: int, data: Any | None = None): + """ + TODO: this should be replaced with a snapshot event listener + """ global last_snapshot id = uuid4().hex # TODO: should a server be allowed to generate event IDs? json_state = { diff --git a/taleweave/systems/action.py b/taleweave/systems/action.py index 0f0e60b..e023cdf 100644 --- a/taleweave/systems/action.py +++ b/taleweave/systems/action.py @@ -101,12 +101,13 @@ def prompt_character_action( pass try: - result = world_result_parser(value, **kwargs) - # TODO: try to avoid parsing the JSON twice event = ActionEvent.from_json(value, room, character) + # TODO: decide if invalid actions should be broadcast broadcast(event) + result = world_result_parser(value, **kwargs) + return result except ToolError as e: e_str = str(e) diff --git a/taleweave/systems/logic.py b/taleweave/systems/logic.py index 27e388b..80826e3 100644 --- a/taleweave/systems/logic.py +++ b/taleweave/systems/logic.py @@ -170,9 +170,9 @@ def format_logic( return " ".join(labels) -def load_logic(filename: str): +def load_logic(filename: str, name_prefix: str = "logic") -> GameSystem: basename = path.splitext(path.basename(filename))[0] - system_name = f"logic_{basename}" + system_name = f"{name_prefix}_{basename}" logger.info("loading logic from file %s as system %s", filename, system_name) with open(filename) as file: diff --git a/taleweave/systems/planning.py b/taleweave/systems/planning.py index c453ba2..24b342b 100644 --- a/taleweave/systems/planning.py +++ b/taleweave/systems/planning.py @@ -183,7 +183,7 @@ def simulate_planning(world: World, turn: int, data: Any | None = None): set_current_character(character) # decrement effects on the character and remove any that have expired - expire_events(character, turn) # TODO: move to planning + expire_events(character, turn) # give the character a chance to think and check their planner if agent.memory and len(agent.memory) > 0: diff --git a/taleweave/utils/search.py b/taleweave/utils/search.py index 66b734c..33530bd 100644 --- a/taleweave/utils/search.py +++ b/taleweave/utils/search.py @@ -62,7 +62,6 @@ def find_portal_in_room(room: Room, portal_name: str) -> Portal | None: return None -# TODO: allow item or str def find_item( world: World, item: Item | str, diff --git a/taleweave/utils/template.py b/taleweave/utils/template.py index 1640ddd..5930385 100644 --- a/taleweave/utils/template.py +++ b/taleweave/utils/template.py @@ -59,6 +59,10 @@ def format_prompt(prompt_key: str, **kwargs) -> str: def format_str(template_str: str, **kwargs) -> str: - # TODO: cache templates + """ + Render a template string with the given keyword arguments. + + Jinja will cache the template for future use. + """ template = jinja_env.from_string(template_str) return template.render(**kwargs)