MCPcopy Create free account
hub / github.com/astercloud/aster / forwardAgentEvents

Method forwardAgentEvents

pkg/desktop/desktop.go:522–599  ·  view source on GitHub ↗

forwardAgentEvents subscribes to agent events and forwards them to the frontend

(ag *agent.Agent, agentID string)

Source from the content-addressed store, hash-verified

520
521// forwardAgentEvents subscribes to agent events and forwards them to the frontend
522func (a *App) forwardAgentEvents(ag *agent.Agent, agentID string) {
523 eventCh := ag.Subscribe([]types.AgentChannel{
524 types.ChannelProgress,
525 types.ChannelControl,
526 }, nil)
527
528 for envelope := range eventCh {
529 var event *FrontendEvent
530
531 switch e := envelope.Event.(type) {
532 case *types.ProgressTextChunkEvent:
533 event = &FrontendEvent{
534 Type: EventTypeTextChunk,
535 AgentID: agentID,
536 Data: map[string]string{"delta": e.Delta},
537 }
538
539 case *types.ProgressToolStartEvent:
540 event = &FrontendEvent{
541 Type: EventTypeToolStart,
542 AgentID: agentID,
543 Data: map[string]any{
544 "call_id": e.Call.ID,
545 "name": e.Call.Name,
546 "arguments": e.Call.Arguments,
547 },
548 }
549
550 case *types.ProgressToolEndEvent:
551 event = &FrontendEvent{
552 Type: EventTypeToolEnd,
553 AgentID: agentID,
554 Data: map[string]any{
555 "call_id": e.Call.ID,
556 "name": e.Call.Name,
557 "result": e.Call.Result,
558 "error": e.Call.Error,
559 },
560 }
561
562 case *types.ProgressToolProgressEvent:
563 event = &FrontendEvent{
564 Type: EventTypeToolProgress,
565 AgentID: agentID,
566 Data: map[string]any{
567 "call_id": e.Call.ID,
568 "progress": e.Progress,
569 "message": e.Message,
570 },
571 }
572
573 case *types.ControlPermissionRequiredEvent:
574 event = &FrontendEvent{
575 Type: EventTypeApprovalRequired,
576 AgentID: agentID,
577 Data: map[string]any{
578 "call_id": e.Call.ID,
579 "name": e.Call.Name,

Callers 1

handleChatMethod · 0.95

Calls 2

SubscribeMethod · 0.65
SendEventMethod · 0.65

Tested by

no test coverage detected