feat: added proper settings handling
This commit is contained in:
+25
-24
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user