Skip to content

Commit 687d726

Browse files
fix: resolve session continuity issues from CodeRabbit review
- Fix cli_project_sessions logic to check both session_id and auto_save_name - Add hasattr(self, 'args') guard in main.py session continuity hook - Remove auto-save re-enabling fallback in project_sessions.py - Add session continuity support to profiled execution paths Fixes issues identified in PR review to ensure --no-save and --continue work correctly together without silently re-enabling persistence. Co-authored-by: Mervin Praison <MervinPraison@users.noreply.github.com>
1 parent e671898 commit 687d726

3 files changed

Lines changed: 40 additions & 10 deletions

File tree

src/praisonai/praisonai/cli/commands/run.py

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ class Args:
256256
args = Args()
257257
args.auto_save = auto_save_name
258258
args.resume_session = session_id
259-
args.cli_project_sessions = bool(auto_save_name)
259+
args.cli_project_sessions = bool(session_id or auto_save_name)
260260

261261
praison.args = args
262262

@@ -376,7 +376,7 @@ def _run_prompt(
376376

377377
agent = Agent(**agent_config)
378378
if session_id or auto_save_name:
379-
apply_cli_session_continuity(agent, session_id or auto_save_name)
379+
apply_cli_session_continuity(agent, session_id or auto_save_name, auto_save=auto_save_name)
380380
result = agent.start(prompt)
381381

382382
output.emit_result(
@@ -413,7 +413,7 @@ class Args:
413413
args.auto_save = auto_save_name
414414
args.history = None
415415
args.resume_session = session_id
416-
args.cli_project_sessions = bool(auto_save_name)
416+
args.cli_project_sessions = bool(session_id or auto_save_name)
417417
args.include_rules = None if no_rules else "auto"
418418
args.no_rules = no_rules
419419
args.workflow = None
@@ -499,6 +499,22 @@ def _run_from_file_profiled(
499499
)
500500
if model:
501501
praison.config_list[0]['model'] = model
502+
503+
# Apply session continuity if requested
504+
session_id, auto_save_name = resolve_session_params(
505+
continue_session, session, fork, no_save
506+
)
507+
if session_id or auto_save_name:
508+
class Args:
509+
pass
510+
511+
args = Args()
512+
args.auto_save = auto_save_name
513+
args.resume_session = session_id
514+
args.cli_project_sessions = bool(session_id or auto_save_name)
515+
516+
praison.args = args
517+
502518
profiler.mark_init_end()
503519

504520
# Execution phase
@@ -560,7 +576,21 @@ def _run_prompt_profiled(
560576
if model:
561577
agent_config["llm"] = model
562578

579+
# Apply session continuity if requested
580+
session_id, auto_save_name = resolve_session_params(
581+
continue_session, session, fork, no_save
582+
)
583+
if session_id or auto_save_name:
584+
from ..state.project_sessions import build_cli_memory_config, apply_cli_session_continuity
585+
586+
memory_cfg = build_cli_memory_config(session_id, auto_save_name)
587+
if memory_cfg is not None:
588+
agent_config["memory"] = memory_cfg
589+
563590
agent = Agent(**agent_config)
591+
if session_id or auto_save_name:
592+
apply_cli_session_continuity(agent, session_id or auto_save_name, auto_save=auto_save_name)
593+
564594
profiler.mark_init_end()
565595

566596
# Execution phase

src/praisonai/praisonai/cli/main.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4818,11 +4818,12 @@ def level_based_approve(function_name, arguments, risk_level):
48184818

48194819
agent = PraisonAgent(**agent_config)
48204820

4821-
if getattr(self.args, 'cli_project_sessions', False):
4821+
if hasattr(self, 'args') and getattr(self.args, 'cli_project_sessions', False):
48224822
session_id = getattr(self.args, 'resume_session', None) or getattr(self.args, 'auto_save', None)
4823+
auto_save = getattr(self.args, 'auto_save', None)
48234824
if session_id:
48244825
from .state.project_sessions import apply_cli_session_continuity
4825-
apply_cli_session_continuity(agent, session_id)
4826+
apply_cli_session_continuity(agent, session_id, auto_save=auto_save)
48264827

48274828
# AutoRag - Automatic RAG retrieval decision
48284829
if hasattr(self, 'args') and getattr(self.args, 'auto_rag', False):

src/praisonai/praisonai/cli/state/project_sessions.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,19 +112,18 @@ def build_cli_memory_config(
112112
from praisonaiagents import MemoryConfig
113113

114114
sid = session_id or auto_save
115-
save_name = auto_save or sid
116-
return MemoryConfig(session_id=sid, auto_save=save_name, history=True)
115+
return MemoryConfig(session_id=sid, auto_save=auto_save, history=True)
117116

118117

119-
def apply_cli_session_continuity(agent, session_id: str, project_path: Optional[str] = None) -> None:
118+
def apply_cli_session_continuity(agent, session_id: str, project_path: Optional[str] = None, auto_save: Optional[str] = None) -> None:
120119
"""Wire an agent to the project session store and restore prior history."""
121120
store = get_project_session_store(project_path)
122121
agent._session_store = store
123122
agent._session_id = session_id
124123
agent._history_enabled = True
125124
agent._history_session_id = session_id
126-
if not getattr(agent, "auto_save", None):
127-
agent.auto_save = session_id
125+
if auto_save is not None:
126+
agent.auto_save = auto_save
128127

129128
history = store.get_chat_history(session_id)
130129
if history and not agent.chat_history:

0 commit comments

Comments
 (0)