QueryEvents returns cross-session event summaries ordered for CLI/API consumption.
(ctx context.Context, query store.EventSummaryQuery)
| 15 | |
| 16 | // QueryEvents returns cross-session event summaries ordered for CLI/API consumption. |
| 17 | func (o *Observer) QueryEvents(ctx context.Context, query store.EventSummaryQuery) ([]store.EventSummary, error) { |
| 18 | if ctx == nil { |
| 19 | return nil, errors.New("observe: query events context is required") |
| 20 | } |
| 21 | events, err := o.registry.ListEventSummaries(ctx, query) |
| 22 | if err != nil { |
| 23 | return nil, err |
| 24 | } |
| 25 | |
| 26 | o.mu.RLock() |
| 27 | memorySource := o.memoryEventSource |
| 28 | o.mu.RUnlock() |
| 29 | if memorySource == nil || strings.TrimSpace(query.SessionID) != "" { |
| 30 | return events, nil |
| 31 | } |
| 32 | |
| 33 | workspaces, err := o.memoryEventWorkspaces(ctx, query.WorkspaceID) |
| 34 | if err != nil { |
| 35 | return nil, err |
| 36 | } |
| 37 | memoryQuery, err := memoryEventQueryForWorkspaces(ctx, query, workspaces) |
| 38 | if err != nil { |
| 39 | return nil, err |
| 40 | } |
| 41 | memoryEvents, err := memorySource.ListMemoryEventSummaries(ctx, workspaces, memoryQuery) |
| 42 | if err != nil { |
| 43 | return nil, fmt.Errorf("observe: query memory events: %w", err) |
| 44 | } |
| 45 | |
| 46 | events = append(filterRegistryMemoryEvents(events), memoryEvents...) |
| 47 | sortEventSummaries(events) |
| 48 | return clampEventSummaries(events, query.Limit), nil |
| 49 | } |
| 50 | |
| 51 | // QueryTokenStats returns aggregated per-session token usage rows. |
| 52 | func (o *Observer) QueryTokenStats(ctx context.Context, query store.TokenStatsQuery) ([]store.TokenStats, error) { |
nothing calls this directly
no test coverage detected