diff --git a/navi/core/agent.py b/navi/core/agent.py index 2005517..af5915e 100644 --- a/navi/core/agent.py +++ b/navi/core/agent.py @@ -239,7 +239,7 @@ self, user_message: str, profile_id: str, - max_iterations: int = 20, + max_iterations: int = 40, exclude_tools: list[str] | None = None, briefing: str | None = None, custom_system_prompt: str | None = None, @@ -332,7 +332,10 @@ # ── Optional planning phase ──────────────────────────────────────────── if profile.subagent_planning_enabled: - async for _ev in self._run_planning(context, profile, llm, mem, tool_schemas): + async for _ev in self._run_planning( + context, profile, llm, mem, tool_schemas, + system_prompt_override=subagent_sys_msg.content, + ): if isinstance(_ev, AIHelperTokensUsed): pass # token accounting only, not forwarded elif sink is not None: @@ -746,6 +749,7 @@ mem: "Message | None", tool_schemas: list | None = None, messages: "list[Message] | None" = None, + system_prompt_override: str | None = None, ): """ Three-phase planning (async generator): @@ -789,10 +793,11 @@ # ── Phase 1: Task analysis (with reasoning) ──────────────────────────── yield PlanningStatus(phase=1, label="Analysing task...") + _base_sys = system_prompt_override if system_prompt_override is not None else self._build_system_prompt(profile) phase1_system = Message( role="system", content=( - self._build_system_prompt(profile) + _base_sys + "\n\n---\n\n" "[PLANNING — PHASE 1: ANALYSIS]\n\n" "Read the user's latest request.\n\n" @@ -846,7 +851,7 @@ phase2_system = Message( role="system", content=( - self._build_system_prompt(profile) + _base_sys + "\n\n---\n\n" "[PLANNING — PHASE 2: EXECUTION PLAN]\n\n" "Task analysis:\n\n"