feat: added proper settings handling

This commit is contained in:
2026-01-01 03:55:23 +01:00
parent b1507db4d0
commit 6a7f9c6521
23 changed files with 440 additions and 328 deletions
+23 -23
View File
@@ -2,14 +2,14 @@
from alfred.agent.prompts import PromptBuilder
from alfred.agent.registry import make_tools
from alfred.settings import settings
class TestPromptBuilderEdgeCases:
"""Edge case tests for PromptBuilder."""
def test_prompt_with_empty_memory(self, memory):
"""Should build prompt with completely empty memory."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -22,7 +22,7 @@ class TestPromptBuilderEdgeCases:
memory.ltm.set_config("folder_日本語", "/path/to/日本語")
memory.ltm.set_config("emoji_folder", "/path/🎬")
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -35,7 +35,7 @@ class TestPromptBuilderEdgeCases:
long_path = "/very/long/path/" + "x" * 1000
memory.ltm.set_config("download_folder", long_path)
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -47,7 +47,7 @@ class TestPromptBuilderEdgeCases:
"""Should escape special characters in config."""
memory.ltm.set_config("path", '/path/with "quotes" and \\backslash')
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -60,7 +60,7 @@ class TestPromptBuilderEdgeCases:
results = [{"name": f"Torrent {i}", "seeders": i} for i in range(50)]
memory.episodic.store_search_results("test query", results)
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -79,7 +79,7 @@ class TestPromptBuilderEdgeCases:
]
memory.episodic.store_search_results("test", results)
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -98,7 +98,7 @@ class TestPromptBuilderEdgeCases:
}
)
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -112,7 +112,7 @@ class TestPromptBuilderEdgeCases:
for i in range(10):
memory.episodic.add_error(f"action_{i}", f"Error {i}")
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -125,7 +125,7 @@ class TestPromptBuilderEdgeCases:
options = [{"index": i, "label": f"Option {i}"} for i in range(20)]
memory.episodic.set_pending_question("Choose one:", options, {})
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -146,7 +146,7 @@ class TestPromptBuilderEdgeCases:
)
memory.stm.update_workflow_stage("searching_torrents")
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -160,7 +160,7 @@ class TestPromptBuilderEdgeCases:
for i in range(50):
memory.stm.set_entity(f"entity_{i}", f"value_{i}")
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -174,7 +174,7 @@ class TestPromptBuilderEdgeCases:
memory.stm.set_entity("zero", 0)
memory.stm.set_entity("false", False)
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -187,7 +187,7 @@ class TestPromptBuilderEdgeCases:
memory.episodic.add_background_event("download_complete", {"name": "Movie.mkv"})
memory.episodic.add_background_event("new_files", {"count": 5})
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -223,7 +223,7 @@ class TestPromptBuilderEdgeCases:
# Events
memory.episodic.add_background_event("event", {})
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -244,7 +244,7 @@ class TestPromptBuilderEdgeCases:
memory.ltm.set_config("key", {"nested": [1, 2, 3]})
memory.stm.set_entity("complex", {"a": {"b": {"c": "d"}}})
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -306,7 +306,7 @@ class TestFormatEpisodicContextEdgeCases:
"""Should handle empty search query."""
memory.episodic.store_search_results("", [{"name": "Result"}])
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
context = builder._format_episodic_context(memory)
@@ -324,7 +324,7 @@ class TestFormatEpisodicContextEdgeCases:
],
)
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
context = builder._format_episodic_context(memory)
@@ -336,7 +336,7 @@ class TestFormatEpisodicContextEdgeCases:
"""Should handle download without progress."""
memory.episodic.add_active_download({"task_id": "1", "name": "Test"})
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
context = builder._format_episodic_context(memory)
@@ -355,7 +355,7 @@ class TestFormatStmContextEdgeCases:
"stage": "started",
}
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
context = builder._format_stm_context(memory)
@@ -366,7 +366,7 @@ class TestFormatStmContextEdgeCases:
"""Should handle workflow with None target."""
memory.stm.start_workflow("download", None)
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
try:
@@ -380,7 +380,7 @@ class TestFormatStmContextEdgeCases:
"""Should handle empty topic."""
memory.stm.set_topic("")
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
context = builder._format_stm_context(memory)
@@ -392,7 +392,7 @@ class TestFormatStmContextEdgeCases:
"""Should handle entities containing JSON strings."""
memory.stm.set_entity("json_string", '{"key": "value"}')
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
context = builder._format_stm_context(memory)