fix: Publish session_info event so session ID is stored in task metadata

The lifecycle manager now publishes a session_info event after creating
an ACP session. This event is handled in main.go to store the session ID
in the task metadata, enabling session resumption for follow-up tasks.
This commit is contained in:
jcfs
2026-01-11 00:23:23 +00:00
parent 0120b7b6d7
commit 1a56148ea7
@@ -305,6 +305,9 @@ func (m *Manager) initializeACPSession(ctx context.Context, instance *AgentInsta
}
m.mu.Unlock()
// Publish session_info event so the orchestrator can store it in task metadata
m.publishSessionInfo(instance, sessionID)
// 3. Set up updates stream to receive session notifications
go m.handleUpdatesStream(instance)
@@ -446,6 +449,37 @@ func (m *Manager) publishSessionNotification(instance *AgentInstance, notificati
}
}
// publishSessionInfo publishes a session_info event with the session ID
// This allows the orchestrator to store the session ID in task metadata for resumption
func (m *Manager) publishSessionInfo(instance *AgentInstance, sessionID string) {
if m.eventBus == nil {
return
}
data := map[string]interface{}{
"type": "session_info",
"timestamp": time.Now(),
"agent_id": instance.ID,
"task_id": instance.TaskID,
"session_id": sessionID,
}
event := bus.NewEvent(events.ACPMessage, "agent-manager", data)
subject := events.BuildACPSubject(instance.TaskID)
if err := m.eventBus.Publish(context.Background(), subject, event); err != nil {
m.logger.Error("failed to publish session_info event",
zap.String("instance_id", instance.ID),
zap.String("task_id", instance.TaskID),
zap.String("session_id", sessionID),
zap.Error(err))
} else {
m.logger.Info("published session_info event",
zap.String("task_id", instance.TaskID),
zap.String("session_id", sessionID))
}
}
// updateInstanceProgress updates an instance's progress
func (m *Manager) updateInstanceProgress(instanceID string, progress int) {
m.mu.Lock()