event.go

 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}