1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
from personal_agent.context import ContextBuilder
from personal_agent.identity import AgentIdentity, UserProfile
from personal_agent.memory.models import TaskStatus, WorkingMemory
def create_agent_identity() -> AgentIdentity:
return AgentIdentity(
name="Test Agent",
personality={"style": "direct"},
values={"honesty": True, "directness": True},
quirks={"favorite_color": "blue"},
behavior={
"task_management": "TASK MANAGEMENT POLICY",
"working_memory": "WORKING MEMORY POLICY",
"long_term_memory": "LONG TERM MEMORY POLICY",
},
)
def create_user_profile() -> UserProfile:
return UserProfile(
name="Test User",
preferences={},
)
def create_context_builder() -> ContextBuilder:
return ContextBuilder(
agent_identity=create_agent_identity(),
user_profile=create_user_profile(),
)
def test_system_prompt_contains_agent_identity():
builder = create_context_builder()
prompt = builder.build_system_prompt(WorkingMemory())
assert "You are Test Agent, a personal AI assistant." in prompt
assert "Personality: direct." in prompt
assert "Honesty: True." in prompt
assert "Directness: True." in prompt
assert "Favorite color: blue." in prompt
assert "The user's name is Test User" in prompt
def test_system_prompt_contains_all_behavior_policies():
builder = create_context_builder()
prompt = builder.build_system_prompt(WorkingMemory())
behavior = builder.agent_identity.behavior
assert behavior["task_management"] in prompt
assert behavior["working_memory"] in prompt
assert behavior["long_term_memory"] in prompt
def test_system_prompt_contains_behavior_sections():
builder = create_context_builder()
prompt = builder.build_system_prompt(WorkingMemory())
assert "===BEHAVIOR===" in prompt
assert "Task management:" in prompt
assert "Working memory:" in prompt
assert "Long term memory:" in prompt
def test_system_prompt_contains_working_memory():
builder = create_context_builder()
memory = WorkingMemory()
memory.set_objective("Implement authentication")
memory.set_status(TaskStatus.ACTIVE)
memory.add_fact("The project uses SQLite.")
memory.add_note("Need to add logout support.")
prompt = builder.build_system_prompt(memory)
assert "Current working memory:" in prompt
assert "Objective: Implement authentication" in prompt
assert "Status: active" in prompt
assert "The project uses SQLite." in prompt
assert "Need to add logout support." in prompt
def test_empty_working_memory_is_explicitly_shown():
builder = create_context_builder()
prompt = builder.build_system_prompt(WorkingMemory())
assert "Current working memory:" in prompt
assert "(empty)" in prompt
def test_build_messages_puts_system_prompt_first():
builder = create_context_builder()
history: list[dict[str, object]] = [
{
"role": "user",
"content": "Hello",
},
{
"role": "assistant",
"content": "Hi!",
},
]
messages = builder.build_messages(history, WorkingMemory())
assert messages[0]["role"] == "system"
assert messages[1:] == history
def test_build_messages_uses_current_working_memory():
builder = create_context_builder()
memory = WorkingMemory()
memory.set_objective("Build the memory system")
messages = builder.build_messages([], memory)
system_prompt = messages[0]["content"]
assert isinstance(system_prompt, str)
assert "Objective: Build the memory system" in system_prompt
|