Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
40 lines
1.3 KiB
Go
40 lines
1.3 KiB
Go
package agentruntime
|
|
|
|
import (
|
|
"log/slog"
|
|
"strings"
|
|
|
|
activityshared "github.com/tutti-os/tutti/packages/agent/daemon/activity/events"
|
|
)
|
|
|
|
func (c *Controller) publish(session Session, events []activityshared.Event) {
|
|
if len(events) == 0 {
|
|
return
|
|
}
|
|
projectedBatches := projectActivityEventsByOwner(session, events)
|
|
projected := make([]StreamEvent, 0)
|
|
for _, batch := range projectedBatches {
|
|
projected = append(projected, batch.events...)
|
|
}
|
|
slog.Debug(
|
|
"agent session publish events",
|
|
"event", "agent_session.publish",
|
|
"room_id", session.RoomID,
|
|
"agent_session_id", session.AgentSessionID,
|
|
"provider", session.Provider,
|
|
"provider_session_id", session.ProviderSessionID,
|
|
"activity_event_count", len(events),
|
|
"projected_event_count", len(projected),
|
|
"projected_event_type_counts", streamEventTypeCounts(projected),
|
|
)
|
|
for _, batch := range projectedBatches {
|
|
// Runtime snapshots belong to the Controller's registered root session.
|
|
// Child sessions are provider-created projections and must not inherit
|
|
// root-only state while their event stream is being routed.
|
|
if batch.session.AgentSessionID == strings.TrimSpace(session.AgentSessionID) {
|
|
c.enrichStreamStateEventsWithSessionSnapshot(batch.session, batch.events)
|
|
}
|
|
c.publishStreamEvents(batch.session.RoomID, batch.session.AgentSessionID, batch.events)
|
|
}
|
|
}
|