Versions in this module Expand all Collapse all v0 v0.2.0 May 15, 2026 Changes in this version + type BudgetViolation struct + Actual float64 + Duration time.Duration + Expected float64 + SLO string + Timestamp time.Time + type DashModelStats struct + AvgLatencyMs int + CostUSD float64 + ErrorRate float64 + Requests int + Tokens int + type Dashboard struct + ActiveDays int + DailyStats []DayStat + ModelUsage map[string]DashModelStats + Sessions []SessionSummary + ToolUsage map[string]int + TotalCostUSD float64 + TotalTokens int + func NewDashboard() *Dashboard + func (d *Dashboard) Export() ([]byte, error) + func (d *Dashboard) Import(data []byte) error + func (d *Dashboard) RecordSession(summary SessionSummary) + func (d *Dashboard) RenderCostChart(days int) string + func (d *Dashboard) RenderModelBreakdown() string + func (d *Dashboard) RenderOverview() string + func (d *Dashboard) RenderRecentSessions(n int) string + func (d *Dashboard) RenderTokenChart(days int) string + type DayStat struct + AvgDuration time.Duration + CostUSD float64 + Date time.Time + Sessions int + Tokens int + type PerfBudget struct + SLOs map[string]*SLO + Violations []BudgetViolation + func NewPerfBudget() *PerfBudget + func (pb *PerfBudget) AddSLO(slo SLO) + func (pb *PerfBudget) Check() map[string]string + func (pb *PerfBudget) FormatDashboard() string + func (pb *PerfBudget) GetViolations(since time.Time) []BudgetViolation + func (pb *PerfBudget) ProjectTrend(metric string) string + func (pb *PerfBudget) Record(metric string, value float64) + func (pb *PerfBudget) Reset() + type SLO struct + Current float64 + Measurements []float64 + Metric string + Name string + Status string + Target float64 + Window time.Duration + type SessionAnalytics struct + Sessions []SessionData + func NewSessionAnalytics() *SessionAnalytics + func (sa *SessionAnalytics) CostProjection(daysAhead int) float64 + func (sa *SessionAnalytics) DailyReport(date time.Time) string + func (sa *SessionAnalytics) Export(format string) string + func (sa *SessionAnalytics) FormatOverview() string + func (sa *SessionAnalytics) ModelComparison() string + func (sa *SessionAnalytics) ProductivityScore() float64 + func (sa *SessionAnalytics) Record(data SessionData) + func (sa *SessionAnalytics) UsagePatterns() []string + func (sa *SessionAnalytics) WeeklyTrend() string + type SessionData struct + CostUSD float64 + Duration time.Duration + FilesModified int + ID string + Model string + Provider string + StartTime time.Time + Success bool + TaskType string + TestsPassed bool + TokensIn int + TokensOut int + ToolCalls int + type SessionSummary struct + CostUSD float64 + Date time.Time + Duration time.Duration + FilesModified int + ID string + Model string + Provider string + Success bool + TokensUsed int + ToolCalls int v0.1.0 May 12, 2026 Changes in this version + func ClassifyTask(prompt string, response string) string + func DetectMidTaskCompaction(toolsBefore, toolsAfter []string) bool + func ExportInsightsHTML(report *InsightsReport) string + func FormatOptimizationReport(r *OptimizationReport) string + func FormatStats(s *SessionStats) string + func LogEvent(name, sessionID string, properties map[string]interface{}) + func SaveInsightsReport(report *InsightsReport) (string, error) + func SaveTrace(t *SessionTrace) error + func SuggestModel(taskType string, currentModel string) string + func Summary() string + type ActivityTracker struct + func NewActivityTracker() *ActivityTracker + func (a *ActivityTracker) EndExecution() + func (a *ActivityTracker) EndUserInput() + func (a *ActivityTracker) ExecTime() time.Duration + func (a *ActivityTracker) StartExecution() + func (a *ActivityTracker) StartUserInput() + func (a *ActivityTracker) Summary() string + func (a *ActivityTracker) UserTime() time.Duration + type CommandContext struct + CWD string + Command string + Duration time.Duration + ExitCode int + type CommandTracker struct + func (t *CommandTracker) AvgDuration() time.Duration + func (t *CommandTracker) FailureRate() float64 + func (t *CommandTracker) MostUsed(n int) []string + func (t *CommandTracker) Record(cmd string, exitCode int, duration time.Duration, cwd string) + type CostEntry struct + CostUSD float64 + Duration time.Duration + InputTokens int + Kept bool + Model string + OutputTokens int + SessionID string + TaskType string + Timestamp time.Time + type DateRange struct + End time.Time + Start time.Time + type Event struct + Name string + Properties map[string]interface{} + SessionID string + Timestamp time.Time + type InsightsFacet struct + Category string + Items []string + type InsightsReport struct + DateRange DateRange + Facets []InsightsFacet + GeneratedAt time.Time + Recommendations []string + SessionsScanned int + Stats *SessionStats + TopPatterns []string + func GenerateInsights(days int, analysisFn func(content string) ([]InsightsFacet, error)) (*InsightsReport, error) + type ModelSpend struct + AvgTokens int + Calls int + Model string + TotalCost float64 + type ModelStats struct + AvgLatency float64 + Cost float64 + Model string + Requests int + Tokens int64 + type OneShotTracker struct + func (t *OneShotTracker) Rate() float64 + func (t *OneShotTracker) RecordTurn(toolNames []string) + func (t *OneShotTracker) Stats() (total, firstTry int) + type OptimizationReport struct + AbandonedSpend float64 + ByModel map[string]*ModelSpend + ByTaskType map[string]*TaskSpend + ProductiveSpend float64 + Recommendations []Recommendation + TotalSpend float64 + WastedSpend float64 + YieldRate float64 + func Analyze(entries []CostEntry) *OptimizationReport + type Recommendation struct + Description string + Savings float64 + Type string + type SessionHealth struct + Grade string + Score int + Signals map[string]int + func ComputeSessionHealth(toolCalls, toolErrors, editRetries, compactions, midTaskCompactions int, ...) SessionHealth + type SessionStats struct + ActivityHeatmap [7][24]int + DateRange DateRange + GitCommits int + LanguageStats map[string]int + ModelUsage map[string]ModelStats + PeakDay time.Weekday + PeakHour int + ToolUsage map[string]int + TotalCost float64 + TotalDuration time.Duration + TotalMessages int + TotalSessions int + TotalTokens int64 + func ComputeStats(days int) (*SessionStats, error) + type SessionTrace struct + CostUSD float64 + EndTime time.Time + MessageCount int + Model string + Provider string + SessionID string + StartTime time.Time + ToolCalls int + func GetTraces() ([]*SessionTrace, error) + type TaskSpend struct + Calls int + SuggestedModel string + TaskType string + TotalCost float64 + type TurnCategory string + const CategoryCoding + const CategoryConversation + const CategoryDebugging + const CategoryExploration + const CategoryGitOps + const CategoryPlanning + const CategoryRefactoring + const CategoryTesting + func ClassifyTurn(toolNames []string, userMessage string) TurnCategory