@@ -111,6 +111,10 @@ def run_main(
111111 framework = framework ,
112112 verbose = verbose ,
113113 profile_deep = profile_deep ,
114+ continue_session = continue_session ,
115+ session = session ,
116+ fork = fork ,
117+ no_save = no_save ,
114118 )
115119 else :
116120 # Profiling for direct prompt
@@ -119,6 +123,10 @@ def run_main(
119123 model = model ,
120124 verbose = verbose ,
121125 profile_deep = profile_deep ,
126+ continue_session = continue_session ,
127+ session = session ,
128+ fork = fork ,
129+ no_save = no_save ,
122130 )
123131 return
124132
@@ -197,6 +205,58 @@ def _run_from_file(
197205 if model :
198206 praison .config_list [0 ]['model' ] = model
199207
208+ # Handle session continuity for YAML files
209+ session_id = None
210+ auto_save_name = None
211+
212+ if continue_session or session or fork :
213+ from ..state .project_sessions import get_project_session_store , find_last_session
214+
215+ if continue_session :
216+ # Find last session for this project
217+ session_id = find_last_session ()
218+ if session_id :
219+ output .print_info (f"Continuing session: { session_id } " )
220+ else :
221+ output .print_warning ("No previous sessions found. Starting new session." )
222+
223+ elif session :
224+ # Use specific session
225+ project_store = get_project_session_store ()
226+ if project_store .session_exists (session ):
227+ session_id = session
228+ output .print_info (f"Resuming session: { session_id } " )
229+ else :
230+ output .print_error (f"Session not found: { session } " )
231+ raise typer .Exit (1 )
232+
233+ # Handle forking
234+ if fork :
235+ from praisonaiagents .session .hierarchy import HierarchicalSessionStore
236+ from ..utils .project import get_project_sessions_dir
237+
238+ # Create hierarchical store for forking
239+ hierarchical_store = HierarchicalSessionStore (str (get_project_sessions_dir ()))
240+ forked_session_id = hierarchical_store .fork_session (session_id )
241+ session_id = forked_session_id
242+ output .print_info (f"Forked session { session } -> { forked_session_id } " )
243+
244+ # Enable auto-save if not disabled
245+ if not no_save :
246+ import uuid
247+ auto_save_name = session_id or "session-" + str (uuid .uuid4 ())[:8 ]
248+
249+ # Create args-like object for session configuration
250+ if session_id or auto_save_name :
251+ class Args :
252+ pass
253+
254+ args = Args ()
255+ args .auto_save = auto_save_name
256+ args .resume_session = session_id
257+
258+ praison .args = args
259+
200260 # Run
201261 result = praison .run ()
202262
@@ -238,38 +298,7 @@ def _run_prompt(
238298 output = get_output_controller ()
239299
240300 try :
241- # If output_mode is "actions", use direct Agent with actions preset
242- if output_mode == "actions" :
243- from praisonaiagents import Agent
244-
245- agent_config = {
246- "name" : "RunAgent" ,
247- "role" : "Assistant" ,
248- "goal" : "Complete the task" ,
249- "output" : "actions" , # Use actions preset
250- }
251- if model :
252- agent_config ["llm" ] = model
253-
254- # Resolve approval backend if specified
255- if approval :
256- from praisonai .cli .features .approval import resolve_approval_config
257- agent_config ["approval" ] = resolve_approval_config (
258- approval , all_tools = approve_all_tools , timeout = approval_timeout ,
259- )
260-
261- agent = Agent (** agent_config )
262- result = agent .start (prompt )
263-
264- output .emit_result (
265- message = "Prompt completed" ,
266- data = {"result" : str (result ) if result else None }
267- )
268-
269- # Don't print result again - actions mode already shows output
270- return
271-
272- # Use existing handle_direct_prompt for other modes
301+ # Handle session continuity first (before any execution mode)
273302 from praisonai .cli .main import PraisonAI
274303
275304 praison = PraisonAI ()
@@ -312,11 +341,11 @@ def _run_prompt(
312341 forked_session_id = hierarchical_store .fork_session (session_id )
313342 session_id = forked_session_id
314343 output .print_info (f"Forked session { session } -> { forked_session_id } " )
315-
316- # Enable auto-save if not disabled
317- if not no_save :
318- import uuid
319- auto_save_name = session_id or "session-" + str (uuid .uuid4 ())[:8 ]
344+
345+ # Enable auto-save if not disabled (for all runs, not just session continuity)
346+ if not no_save :
347+ import uuid
348+ auto_save_name = session_id or "session-" + str (uuid .uuid4 ())[:8 ]
320349
321350 # Create args-like object for handle_direct_prompt
322351 class Args :
@@ -367,6 +396,45 @@ class Args:
367396 args .approval = approval
368397
369398 praison .args = args
399+
400+ # If output_mode is "actions", use direct Agent with actions preset
401+ if output_mode == "actions" :
402+ from praisonaiagents import Agent
403+
404+ agent_config = {
405+ "name" : "RunAgent" ,
406+ "role" : "Assistant" ,
407+ "goal" : "Complete the task" ,
408+ "output" : "actions" , # Use actions preset
409+ }
410+ if model :
411+ agent_config ["llm" ] = model
412+
413+ # Resolve approval backend if specified
414+ if approval :
415+ from praisonai .cli .features .approval import resolve_approval_config
416+ agent_config ["approval" ] = resolve_approval_config (
417+ approval , all_tools = approve_all_tools , timeout = approval_timeout ,
418+ )
419+
420+ # Add session support to Agent if needed
421+ if session_id :
422+ agent_config ["resume_session" ] = session_id
423+ if auto_save_name :
424+ agent_config ["auto_save" ] = auto_save_name
425+
426+ agent = Agent (** agent_config )
427+ result = agent .start (prompt )
428+
429+ output .emit_result (
430+ message = "Prompt completed" ,
431+ data = {"result" : str (result ) if result else None }
432+ )
433+
434+ # Don't print result again - actions mode already shows output
435+ return
436+
437+ # Use handle_direct_prompt for other modes
370438 result = praison .handle_direct_prompt (prompt )
371439
372440 output .emit_result (
@@ -389,6 +457,10 @@ def _run_from_file_profiled(
389457 framework : Optional [str ] = None ,
390458 verbose : bool = False ,
391459 profile_deep : bool = False ,
460+ continue_session : bool = False ,
461+ session : Optional [str ] = None ,
462+ fork : bool = False ,
463+ no_save : bool = False ,
392464):
393465 """Run agents from a YAML file with profiling enabled."""
394466 from praisonai .cli .features .cli_profiler import (
@@ -443,6 +515,10 @@ def _run_prompt_profiled(
443515 model : Optional [str ] = None ,
444516 verbose : bool = False ,
445517 profile_deep : bool = False ,
518+ continue_session : bool = False ,
519+ session : Optional [str ] = None ,
520+ fork : bool = False ,
521+ no_save : bool = False ,
446522):
447523 """Run a direct prompt with profiling enabled."""
448524 from praisonai .cli .features .cli_profiler import (
0 commit comments