Skip to content

Commit 03326c9

Browse files
fix: preserve memory config fields and add actions mode test coverage
- Fix memory config being completely replaced in main.py, now preserves existing fields like user_id - Add test coverage for actions mode session continuity to prevent TypeError regression Co-authored-by: Mervin Praison <MervinPraison@users.noreply.github.com>
1 parent 59b3ed4 commit 03326c9

2 files changed

Lines changed: 73 additions & 5 deletions

File tree

src/praisonai/praisonai/cli/main.py

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4518,11 +4518,27 @@ def handle_direct_prompt(self, prompt):
45184518
if resume_session_id:
45194519
from praisonaiagents import MemoryConfig
45204520
save_name = getattr(self.args, 'auto_save', None) or resume_session_id
4521-
agent_config["memory"] = MemoryConfig(
4522-
session_id=resume_session_id,
4523-
auto_save=save_name,
4524-
history=True,
4525-
)
4521+
4522+
# Preserve existing memory configuration fields
4523+
existing_memory = agent_config.get("memory")
4524+
if isinstance(existing_memory, MemoryConfig):
4525+
existing_memory.session_id = resume_session_id
4526+
existing_memory.auto_save = save_name
4527+
existing_memory.history = True
4528+
elif isinstance(existing_memory, dict):
4529+
# Convert dict to MemoryConfig while preserving fields
4530+
existing_memory.update({
4531+
"session_id": resume_session_id,
4532+
"auto_save": save_name,
4533+
"history": True,
4534+
})
4535+
agent_config["memory"] = MemoryConfig(**existing_memory)
4536+
else:
4537+
agent_config["memory"] = MemoryConfig(
4538+
session_id=resume_session_id,
4539+
auto_save=save_name,
4540+
history=True,
4541+
)
45264542
print(f"[bold cyan]Resuming session '{resume_session_id}'[/bold cyan]")
45274543

45284544
if getattr(self.args, 'history', None):

src/praisonai/tests/unit/cli/test_run_session_continuity.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,3 +131,55 @@ def start(self, prompt):
131131
assert memory.session_id == "saved-session"
132132
assert memory.history is True
133133
assert captured["continuity"] == "saved-session"
134+
135+
136+
def test_run_prompt_actions_mode_wires_session_continuity(monkeypatch):
137+
"""Actions mode must wire resume_session to project session continuity."""
138+
from praisonai.cli.commands.run import _run_prompt
139+
140+
captured = {}
141+
142+
class FakeAgent:
143+
def __init__(self, **kwargs):
144+
self.chat_history = []
145+
self._session_store = None
146+
self._session_id = None
147+
self.auto_save = None
148+
self._auto_save_last_index = 0
149+
captured["agent_config"] = kwargs
150+
151+
def start(self, prompt):
152+
captured["prompt"] = prompt
153+
return "actions complete"
154+
155+
monkeypatch.setattr("praisonaiagents.Agent", FakeAgent)
156+
monkeypatch.setattr(
157+
"praisonai.cli.state.project_sessions.apply_cli_session_continuity",
158+
lambda agent, session_id, project_path=None: captured.setdefault("continuity", session_id),
159+
)
160+
161+
# Mock output controller
162+
class MockOutput:
163+
def emit_result(self, result, status="success", metadata=None):
164+
captured["output_result"] = result
165+
166+
def print_info(self, msg):
167+
pass
168+
169+
def print_warning(self, msg):
170+
pass
171+
172+
monkeypatch.setattr("praisonai.cli.commands.run.get_output_controller", lambda: MockOutput())
173+
174+
result = _run_prompt(
175+
"follow up question",
176+
output_mode="actions",
177+
session="saved-session",
178+
)
179+
180+
memory = captured["agent_config"]["memory"]
181+
assert isinstance(memory, MemoryConfig)
182+
assert memory.session_id == "saved-session"
183+
assert memory.history is True
184+
assert captured["continuity"] == "saved-session"
185+
assert captured["prompt"] == "follow up question"

0 commit comments

Comments
 (0)