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

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 TestPromptBuilderToolsInjection:
@@ -9,7 +10,7 @@ class TestPromptBuilderToolsInjection:
def test_system_prompt_includes_all_tools(self, memory):
"""CRITICAL: Verify all tools are mentioned in system prompt."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -21,7 +22,7 @@ class TestPromptBuilderToolsInjection:
def test_tools_spec_contains_all_registered_tools(self, memory):
"""CRITICAL: Verify build_tools_spec() returns all tools."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
specs = builder.build_tools_spec()
@@ -32,7 +33,7 @@ class TestPromptBuilderToolsInjection:
def test_tools_spec_is_not_empty(self, memory):
"""CRITICAL: Verify tools spec is never empty."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
specs = builder.build_tools_spec()
@@ -40,7 +41,7 @@ class TestPromptBuilderToolsInjection:
def test_tools_spec_format_matches_openai(self, memory):
"""CRITICAL: Verify tools spec format is OpenAI-compatible."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
specs = builder.build_tools_spec()
@@ -58,7 +59,7 @@ class TestPromptBuilderMemoryContext:
def test_prompt_includes_current_topic(self, memory):
"""Verify current topic is included in prompt."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
memory.stm.set_topic("test_topic")
@@ -68,7 +69,7 @@ class TestPromptBuilderMemoryContext:
def test_prompt_includes_extracted_entities(self, memory):
"""Verify extracted entities are included in prompt."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
memory.stm.set_entity("test_key", "test_value")
@@ -78,7 +79,7 @@ class TestPromptBuilderMemoryContext:
def test_prompt_includes_search_results(self, memory_with_search_results):
"""Verify search results are included in prompt."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -88,7 +89,7 @@ class TestPromptBuilderMemoryContext:
def test_prompt_includes_active_downloads(self, memory):
"""Verify active downloads are included in prompt."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
memory.episodic.add_active_download(
@@ -102,7 +103,7 @@ class TestPromptBuilderMemoryContext:
def test_prompt_includes_recent_errors(self, memory):
"""Verify recent errors are included in prompt."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
memory.episodic.add_error("test_action", "test error message")
@@ -113,7 +114,7 @@ class TestPromptBuilderMemoryContext:
def test_prompt_includes_configuration(self, memory):
"""Verify configuration is included in prompt."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
memory.ltm.set_config("download_folder", "/test/downloads")
@@ -124,7 +125,7 @@ class TestPromptBuilderMemoryContext:
def test_prompt_includes_language(self, memory):
"""Verify language is included in prompt."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
memory.stm.set_language("fr")
@@ -139,7 +140,7 @@ class TestPromptBuilderStructure:
def test_system_prompt_is_not_empty(self, memory):
"""Verify system prompt is never empty."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -148,7 +149,7 @@ class TestPromptBuilderStructure:
def test_system_prompt_includes_base_instruction(self, memory):
"""Verify system prompt includes base instruction."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -156,7 +157,7 @@ class TestPromptBuilderStructure:
def test_system_prompt_includes_rules(self, memory):
"""Verify system prompt includes important rules."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -164,7 +165,7 @@ class TestPromptBuilderStructure:
def test_system_prompt_includes_examples(self, memory):
"""Verify system prompt includes examples."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
prompt = builder.build_system_prompt()
@@ -172,7 +173,7 @@ class TestPromptBuilderStructure:
def test_tools_description_format(self, memory):
"""Verify tools are properly formatted in description."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
description = builder._format_tools_description()
@@ -185,7 +186,7 @@ class TestPromptBuilderStructure:
def test_episodic_context_format(self, memory_with_search_results):
"""Verify episodic context is properly formatted."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
context = builder._format_episodic_context(memory_with_search_results)
@@ -195,7 +196,7 @@ class TestPromptBuilderStructure:
def test_stm_context_format(self, memory):
"""Verify STM context is properly formatted."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
memory.stm.set_topic("test_topic")
@@ -208,7 +209,7 @@ class TestPromptBuilderStructure:
def test_config_context_format(self, memory):
"""Verify config context is properly formatted."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
memory.ltm.set_config("test_key", "test_value")
@@ -224,7 +225,7 @@ class TestPromptBuilderEdgeCases:
def test_prompt_with_no_memory_context(self, memory):
"""Verify prompt works with empty memory."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
# Memory is empty
@@ -254,7 +255,7 @@ class TestPromptBuilderEdgeCases:
def test_prompt_with_unicode_in_memory(self, memory):
"""Verify prompt handles unicode in memory."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
memory.stm.set_entity("movie", "Amélie 🎬")
@@ -266,7 +267,7 @@ class TestPromptBuilderEdgeCases:
def test_prompt_with_long_search_results(self, memory):
"""Verify prompt handles many search results."""
tools = make_tools()
tools = make_tools(settings)
builder = PromptBuilder(tools)
# Add many results