add token profile diagnostics · Entire

Add Token Profile Diagnostics

a732e9b · peyton-alt · 3w ago · 3 files · +645 added/-0 removed

Sessions

cdebea3708fd View transcript

Changes

3

83 unmodified lines

84
85
86
87
88
89
90

83 unmodified lines

// Noun groups (canonical homes for subcommands).
cmd.AddCommand(newSessionsCmd())        // 'session' (with 'sessions' as Cobra alias)
cmd.AddCommand(newCheckpointGroupCmd()) // 'checkpoint' / 'cp' / 'checkpoints'
cmd.AddCommand(newTokensGroupCmd())     // 'tokens'
cmd.AddCommand(newAgentGroupCmd())      // 'agent'
cmd.AddCommand(newAuthCmd())            // 'auth'
cmd.AddCommand(newDoctorCmd())          // 'doctor' (group: trace/logs/bundle)

Mcmd/entire/cli/root.go +1

package cli

import (
    "context"
    "encoding/json"
    "errors"
    "fmt"
    "io"

"github.com/entireio/cli/cmd/entire/cli/agent"
    "github.com/entireio/cli/cmd/entire/cli/checkpoint"
    "github.com/entireio/cli/cmd/entire/cli/checkpoint/id"
    "github.com/spf13/cobra"
)

type tokensProfileReport struct {
    Source                   string                        `json:"source"`
    CheckpointsAvailable     int                           `json:"checkpoints_available"`
    CheckpointsAnalyzed      int                           `json:"checkpoints_analyzed"`
    CheckpointsWithTokenData int                           `json:"checkpoints_with_token_data"`
    MissingTokenData         int                           `json:"missing_token_data"`
    MetadataReadWarnings     int                           `json:"metadata_read_warnings,omitempty"`
    Tokens                   *sessionTokensUsage           `json:"tokens,omitempty"`
    Signals                  []tokensProfileSignal         `json:"signals,omitempty"`
    Recommendations          []sessionTokensRecommendation `json:"recommendations,omitempty"`
    Limitations              []string                      `json:"limitations,omitempty"`
}

type tokensProfileSignal struct {
    ID            string   `json:"id"`
    Label         string   `json:"label"`
    Count         int      `json:"count"`
    Percent       int      `json:"percent"`
    CheckpointIDs []string `json:"checkpoint_ids,omitempty"`
}

// Function to create a new tokens group command
func newTokensGroupCmd() *cobra.Command {
    cmd := &cobra.Command{
        Use:   "tokens",
        Short: "Analyze token usage across sessions and checkpoints",
        Long:  `Analyze token usage across sessions and checkpoints. \nCommands: profile  Aggregate token usage across committed checkpoints \nExamples: entire tokens profile entire tokens profile --json`,
        RunE: func(cmd *cobra.Command, _ []string) error {
            return cmd.Help()
        },
    }

cmd.AddCommand(newTokensProfileCmd())
    return cmd
}

// Implementation of newTokensProfileCmd function
func newTokensProfileCmd() *cobra.Command {
    var jsonFlag bool
    var limitFlag int
    var allFlag bool

cmd := &cobra.Command{
        Use:   "profile",
        Short: "Aggregate token usage and recommendations across checkpoint history",
        Long:  `...`,
        Args: cobra.NoArgs,
        RunE: func(cmd *cobra.Command, _ []string) error {
            limit := limitFlag
            if allFlag {
                limit = 0
            } else if limit <= 0 {
                return errors.New("--limit must be positive unless --all is used")
            }
            return runTokensProfile(cmd.Context(), cmd, jsonFlag, limit)
        },
    }

cmd.Flags().BoolVar(&jsonFlag, "json", false, "Output as JSON")
    cmd.Flags().IntVar(&limitFlag, "limit", 50, "Maximum committed checkpoints to analyze")
    cmd.Flags().BoolVar(&allFlag, "all", false, "Analyze all committed checkpoints")
    return cmd
}

// Function that implements token profiling
func runTokensProfile(ctx context.Context, cmd *cobra.Command, jsonOutput bool, limit int) error {
    repo, err := openRepository(ctx)
    if err != nil {
        cmd.SilenceUsage = true
        fmt.Fprintln(cmd.ErrOrStderr(), "Not a git repository.")
        return NewSilentError(err)
    }
    defer repo.Close()

store := checkpoint.NewCommittedReadStore(ctx, repo)
    ...
}

// Additional methods and functions for reading and writing token profile data...

// Further implementation details to follow...

Acmd/entire/cli/tokens_profile.go +413