Implement the complete Cobra command tree (11 subcommands): - cmd/root.go: Root command with persistent flags (--days, --project, --model, --no-cache, --data-dir, --quiet, --no-subagents). Shared loadData() orchestrates the full pipeline: tries cache-assisted loading first, falls back to uncached parse on cache failure, reports progress to stderr. applyFilters() applies project/model substring filters and computes the time window. - cmd/summary.go: Default command (also "cburn summary"). Renders a bordered metrics table with token breakdown (5 types), cost with cache savings, and per-day rates with period-over-period deltas. - cmd/costs.go: Detailed cost analysis — breaks down costs by token type (output, cache_write_1h, input, cache_write_5m, cache_read) with share percentages, period comparison bar chart, and per-model cost breakdown (input/output/cache/total columns). - cmd/daily.go: Daily usage table (date, weekday, sessions, prompts, tokens, cost) sorted most-recent-first. - cmd/hourly.go: Activity heatmap showing prompt distribution across 24 hours with Unicode block bars, reports peak hour. - cmd/models.go: Model usage ranking with API call counts, token volumes, cost, and usage share percentage. - cmd/projects.go: Project ranking by cost with session/prompt/token counts. - cmd/sessions.go: Session list sorted by recency with --limit flag (default 20). Shows start time, project, duration, tokens, cost. Marks subagent sessions with "(sub)" suffix. - cmd/config_cmd.go: Displays current configuration across all sections (general, admin API, appearance, budget) with auto- detected plan ceiling. - cmd/setup.go: Interactive first-run wizard — configures Admin API key, default time range (7/30/90 days), and color theme (Flexoki Dark, Catppuccin Mocha, Tokyo Night, Terminal). Saves to ~/.config/cburn/config.toml. - cmd/tui.go: Launches the interactive Bubble Tea TUI dashboard, passing through all filter flags and applying the configured theme. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
38 lines
698 B
Go
38 lines
698 B
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"cburn/internal/config"
|
|
"cburn/internal/tui"
|
|
"cburn/internal/tui/theme"
|
|
|
|
tea "github.com/charmbracelet/bubbletea"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var tuiCmd = &cobra.Command{
|
|
Use: "tui",
|
|
Short: "Launch interactive TUI dashboard",
|
|
RunE: runTUI,
|
|
}
|
|
|
|
func init() {
|
|
rootCmd.AddCommand(tuiCmd)
|
|
}
|
|
|
|
func runTUI(_ *cobra.Command, _ []string) error {
|
|
// Load config for theme
|
|
cfg, _ := config.Load()
|
|
theme.SetActive(cfg.Appearance.Theme)
|
|
|
|
app := tui.NewApp(flagDataDir, flagDays, flagProject, flagModel, !flagNoSubagents)
|
|
p := tea.NewProgram(app, tea.WithAltScreen())
|
|
|
|
if _, err := p.Run(); err != nil {
|
|
return fmt.Errorf("TUI error: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}
|