1package agent
2
3import (
4 "github.com/charmbracelet/crush/internal/config"
5 "github.com/charmbracelet/crush/internal/event"
6 "github.com/charmbracelet/crush/internal/llm/provider"
7)
8
9func (a *agent) eventPromptSent(sessionID string) {
10 event.PromptSent(
11 a.eventCommon(sessionID)...,
12 )
13}
14
15func (a *agent) eventTokensUsed(sessionID string, usage provider.TokenUsage, cost float64) {
16 event.TokensUsed(
17 append(
18 a.eventCommon(sessionID),
19 "input tokens", usage.InputTokens,
20 "output tokens", usage.OutputTokens,
21 "cache read tokens", usage.CacheReadTokens,
22 "cache creation tokens", usage.CacheCreationTokens,
23 "total tokens", usage.InputTokens+usage.OutputTokens+usage.CacheReadTokens+usage.CacheCreationTokens,
24 "cost", cost,
25 )...,
26 )
27}
28
29func (a *agent) eventCommon(sessionID string) []any {
30 cfg := config.Get()
31 currentModel := cfg.Models[cfg.Agents["coder"].Model]
32
33 return []any{
34 "session id", sessionID,
35 "provider", currentModel.Provider,
36 "model", currentModel.Model,
37 "reasoning effort", currentModel.ReasoningEffort,
38 "thinking mode", currentModel.Think,
39 "yolo mode", a.permissions.SkipRequests(),
40 }
41}