fix(orchestrator): le lancement d'une cible structurée froide lie la session au fil A-B résolu par ask_agent — #238
ensure_structured_session reçoit désormais le conversation_id déjà résolu et le transmet au plan de spawn au lieu de retomber sur le fallback User-B. WorkState et la session lancée pointent ainsi sur le même fil. Test de régression ask_cold_structured_agent_requester_launches_on_resolved_pair_thread.
This commit is contained in:
@ -1862,7 +1862,13 @@ impl OrchestratorService {
|
||||
)
|
||||
})?;
|
||||
let session = self
|
||||
.ensure_structured_session(project, agent_id, &agent.profile_id, structured)
|
||||
.ensure_structured_session(
|
||||
project,
|
||||
agent_id,
|
||||
&agent.profile_id,
|
||||
structured,
|
||||
conversation_id,
|
||||
)
|
||||
.await?
|
||||
.ok_or_else(|| {
|
||||
AppError::Invalid(format!(
|
||||
@ -2558,6 +2564,7 @@ impl OrchestratorService {
|
||||
agent_id: AgentId,
|
||||
profile_id: &ProfileId,
|
||||
structured: &Arc<StructuredSessions>,
|
||||
conversation_id: domain::conversation::ConversationId,
|
||||
) -> Result<Option<Arc<dyn domain::ports::AgentSession>>, AppError> {
|
||||
// Cible déjà chaude : route directe (aucun lancement).
|
||||
if let Some(session) = structured.session_for_agent_in_project(project.id, &agent_id) {
|
||||
@ -2589,7 +2596,7 @@ impl OrchestratorService {
|
||||
rows: DEFAULT_ROWS,
|
||||
cols: DEFAULT_COLS,
|
||||
node_id: None,
|
||||
conversation_id: None,
|
||||
conversation_id: Some(conversation_id.to_string()),
|
||||
mcp_runtime: self
|
||||
.mcp_runtime_provider
|
||||
.as_ref()
|
||||
|
||||
Reference in New Issue
Block a user