feat: added proper settings handling

This commit is contained in:
2026-01-01 03:55:23 +01:00
parent 8b406370f1
commit c50091f6bf
23 changed files with 440 additions and 328 deletions
+25 -24
View File
@@ -2,6 +2,7 @@
from alfred.agent.prompts import PromptBuilder
from alfred.agent.registry import make_tools
from alfred.settings import settings
class TestPromptBuilder:
@@ -9,14 +10,14 @@ class TestPromptBuilder:
def test_init(self, memory):
"""Should initialize with tools."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
assert builder.tools is tools
def test_build_system_prompt(self, memory):
"""Should build a complete system prompt."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -27,7 +28,7 @@ class TestPromptBuilder:
def test_includes_tools(self, memory):
"""Should include all tool descriptions."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -38,7 +39,7 @@ class TestPromptBuilder:
def test_includes_config(self, memory):
"""Should include current configuration."""
memory.ltm.set_config("download_folder", "/path/to/downloads")
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -47,7 +48,7 @@ class TestPromptBuilder:
def test_includes_search_results(self, memory_with_search_results):
"""Should include search results summary."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -58,7 +59,7 @@ class TestPromptBuilder:
def test_includes_search_result_names(self, memory_with_search_results):
"""Should include search result names."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -74,7 +75,7 @@ class TestPromptBuilder:
"progress": 50,
}
)
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -89,7 +90,7 @@ class TestPromptBuilder:
[{"index": 1, "label": "Option 1"}, {"index": 2, "label": "Option 2"}],
{},
)
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -100,7 +101,7 @@ class TestPromptBuilder:
def test_includes_last_error(self, memory):
"""Should include last error."""
memory.episodic.add_error("find_torrent", "API timeout")
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -111,7 +112,7 @@ class TestPromptBuilder:
def test_includes_workflow(self, memory):
"""Should include current workflow."""
memory.stm.start_workflow("download", {"title": "Inception"})
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -122,7 +123,7 @@ class TestPromptBuilder:
def test_includes_topic(self, memory):
"""Should include current topic."""
memory.stm.set_topic("selecting_torrent")
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -134,7 +135,7 @@ class TestPromptBuilder:
"""Should include extracted entities."""
memory.stm.set_entity("movie_title", "Inception")
memory.stm.set_entity("year", 2010)
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -144,7 +145,7 @@ class TestPromptBuilder:
def test_includes_rules(self, memory):
"""Should include important rules."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -154,7 +155,7 @@ class TestPromptBuilder:
def test_includes_examples(self, memory):
"""Should include usage examples."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -164,7 +165,7 @@ class TestPromptBuilder:
def test_empty_context(self, memory):
"""Should handle empty context gracefully."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -179,7 +180,7 @@ class TestPromptBuilder:
results = [{"name": f"Torrent {i}", "seeders": i} for i in range(20)]
memory.episodic.store_search_results("test", results)
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -198,7 +199,7 @@ class TestFormatToolsDescription:
def test_format_all_tools(self, memory):
"""Should format all tools."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
desc = builder._format_tools_description()
@@ -209,7 +210,7 @@ class TestFormatToolsDescription:
def test_includes_parameters(self, memory):
"""Should include parameter schemas."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
desc = builder._format_tools_description()
@@ -223,7 +224,7 @@ class TestFormatEpisodicContext:
def test_empty_episodic(self, memory):
"""Should return empty string for empty episodic."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
context = builder._format_episodic_context(memory)
@@ -232,7 +233,7 @@ class TestFormatEpisodicContext:
def test_with_search_results(self, memory_with_search_results):
"""Should format search results."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
context = builder._format_episodic_context(memory_with_search_results)
@@ -246,7 +247,7 @@ class TestFormatEpisodicContext:
memory.episodic.add_active_download({"task_id": "1", "name": "Download"})
memory.episodic.add_error("action", "error")
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
context = builder._format_episodic_context(memory)
@@ -261,7 +262,7 @@ class TestFormatStmContext:
def test_empty_stm(self, memory):
"""Should return language info even for empty STM."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
context = builder._format_stm_context(memory)
@@ -273,7 +274,7 @@ class TestFormatStmContext:
"""Should format workflow."""
memory.stm.start_workflow("download", {"title": "Test"})
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
context = builder._format_stm_context(memory)
@@ -287,7 +288,7 @@ class TestFormatStmContext:
memory.stm.set_topic("searching")
memory.stm.set_entity("key", "value")
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
context = builder._format_stm_context(memory)