ragEventForwarder returns a callback that converts RAG manager events to runtime events.
(ragName string, r *LocalRuntime, sendEvent func(Event))
| 9 | |
| 10 | // ragEventForwarder returns a callback that converts RAG manager events to runtime events. |
| 11 | func ragEventForwarder(ragName string, r *LocalRuntime, sendEvent func(Event)) ragtypes.EventCallback { |
| 12 | return func(ragEvent ragtypes.Event) { |
| 13 | agentName := r.currentAgentName() |
| 14 | slog.Debug("Forwarding RAG event", "type", ragEvent.Type, "rag", ragName, "agent", agentName) |
| 15 | |
| 16 | switch ragEvent.Type { |
| 17 | case ragtypes.EventTypeIndexingStarted: |
| 18 | sendEvent(RAGIndexingStarted(ragName, ragEvent.StrategyName)) |
| 19 | case ragtypes.EventTypeIndexingProgress: |
| 20 | if ragEvent.Progress != nil { |
| 21 | sendEvent(RAGIndexingProgress(ragName, ragEvent.StrategyName, ragEvent.Progress.Current, ragEvent.Progress.Total, agentName)) |
| 22 | } |
| 23 | case ragtypes.EventTypeIndexingComplete: |
| 24 | sendEvent(RAGIndexingCompleted(ragName, ragEvent.StrategyName)) |
| 25 | case ragtypes.EventTypeUsage: |
| 26 | sendEvent(NewTokenUsageEvent("", agentName, &Usage{ |
| 27 | InputTokens: ragEvent.TotalTokens, |
| 28 | ContextLength: ragEvent.TotalTokens, |
| 29 | Cost: ragEvent.Cost, |
| 30 | })) |
| 31 | case ragtypes.EventTypeError: |
| 32 | if ragEvent.Error != nil { |
| 33 | sendEvent(Error(fmt.Sprintf("RAG %s error: %v", ragName, ragEvent.Error))) |
| 34 | } |
| 35 | default: |
| 36 | slog.Debug("Unhandled RAG event type", "type", ragEvent.Type, "rag", ragName) |
| 37 | } |
| 38 | } |
| 39 | } |
no test coverage detected