shared

package
v0.6.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 6, 2026 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CodeStatsCompactLabels = map[string]string{
	"composer_lines_added":   "added",
	"composer_lines_removed": "removed",
	"composer_files_changed": "files",
	"scored_commits":         "commits",
	"total_prompts":          "prompts",
	"ai_code_percentage":     "ai %",
}

CodeStatsCompactLabels are compact (tile pill) labels for code stats metrics.

View Source
var CodeStatsMetricLabels = map[string]string{
	"composer_lines_added":   "Lines Added",
	"composer_lines_removed": "Lines Removed",
	"composer_files_changed": "Files Changed",
	"scored_commits":         "Commits",
	"total_prompts":          "Prompts",
	"ai_code_percentage":     "AI Code",
}

CodeStatsMetricLabels are display labels shared across coding-tool providers.

View Source
var ErrHookUnsupported = errors.New("hook parsing not supported")
View Source
var FirstNonEmpty = core.FirstNonEmpty

FirstNonEmpty delegates to core.FirstNonEmpty for backwards compatibility.

View Source
var Float64Ptr = core.Float64Ptr

Float64Ptr delegates to core.Float64Ptr for backwards compatibility.

Functions

func ApplyStandardRateLimits

func ApplyStandardRateLimits(resp *http.Response, snap *core.UsageSnapshot)

func CodingToolHidePrefixes added in v0.5.8

func CodingToolHidePrefixes() []string

CodingToolHidePrefixes returns the set of metric prefixes hidden by most coding-tool providers.

func CodingToolSectionOrder added in v0.5.8

func CodingToolSectionOrder() []core.DashboardStandardSection

CodingToolSectionOrder returns the standard section order used by coding-tool providers.

func CollectFilesByExt

func CollectFilesByExt(roots []string, exts map[string]bool) []string

func CreateStandardRequest

func CreateStandardRequest(ctx context.Context, baseURL, endpoint, apiKey string, headers map[string]string) (*http.Request, error)

func DefaultCodeStatsConfig added in v0.5.8

func DefaultCodeStatsConfig() core.CodeStatsConfig

DefaultCodeStatsConfig returns the standard CodeStatsConfig used by coding-tool providers.

func ExpandHome

func ExpandHome(path string) string

func ExtractFilePathsFromPayload added in v0.6.3

func ExtractFilePathsFromPayload(input any) []string

ExtractFilePathsFromPayload walks a JSON-like structure and extracts file path candidates from values stored under path-related keys. This is used by telemetry adapters to extract tool target file paths for language inference.

func FinalizeStatus

func FinalizeStatus(snap *core.UsageSnapshot)

func FirstPathNumber added in v0.6.7

func FirstPathNumber(root map[string]any, paths ...[]string) *float64

FirstPathNumber tries multiple JSON paths and returns the first numeric value found (supports float64, float32, int, int64, int32, json.Number, string).

func FirstPathString added in v0.6.7

func FirstPathString(root map[string]any, paths ...[]string) string

FirstPathString tries multiple JSON paths and returns the first non-empty string value found (supports string and json.Number types).

func FlexParseTime

func FlexParseTime(value string) time.Time

func FormatTokenCount added in v0.6.3

func FormatTokenCount(value int) string

FormatTokenCount returns a human-readable string for a token count (e.g. "1.5K", "2.3M", "1.0B").

func FormatTokenCountF added in v0.6.3

func FormatTokenCountF(value float64) string

FormatTokenCountF is like FormatTokenCount but takes a float64.

func HasHookUsage added in v0.6.7

func HasHookUsage(u HookUsage) bool

HasHookUsage returns true if the usage contains any non-zero token or cost data.

func Int64Ptr

func Int64Ptr(v int64) *int64

func NumberFromAny added in v0.6.7

func NumberFromAny(value any) (float64, bool)

NumberFromAny converts various numeric types to float64.

func NumberToFloat64Ptr added in v0.6.7

func NumberToFloat64Ptr(v *float64) *float64

NumberToFloat64Ptr returns nil for nil input, otherwise a copy of the value.

func NumberToInt64Ptr added in v0.6.7

func NumberToInt64Ptr(v *float64) *int64

NumberToInt64Ptr converts *float64 to *int64, returning nil for nil input.

func ParseFlexibleTimestamp

func ParseFlexibleTimestamp(value string) (int64, bool)

func ParseTimestampString

func ParseTimestampString(value string) (time.Time, error)

func PathMap added in v0.6.7

func PathMap(root map[string]any, path ...string) (map[string]any, bool)

PathMap is like PathValue but returns the result as map[string]any.

func PathSlice added in v0.6.7

func PathSlice(root map[string]any, path ...string) ([]any, bool)

PathSlice is like PathValue but returns the result as []any.

func PathValue added in v0.6.7

func PathValue(root map[string]any, path ...string) (any, bool)

PathValue traverses a nested map[string]any by the given path segments, returning the value at the final key or (nil, false) if any step is missing.

func ProbeRateLimits added in v0.6.7

func ProbeRateLimits(ctx context.Context, url, apiKey string, snap *core.UsageSnapshot) error

ProbeRateLimits performs a GET request to the given URL with Bearer auth, copies redacted headers to snap.Raw, applies standard status code handling (401/403 → StatusAuth, 429 → StatusLimited), and parses standard RPM/TPM rate-limit headers. This replaces the identical fetchRateLimits pattern used across deepseek, xai, and similar providers.

func ProcessStandardResponse

func ProcessStandardResponse(resp *http.Response, acct core.AccountConfig, providerID string) (core.UsageSnapshot, error)

func RequireAPIKey

func RequireAPIKey(acct core.AccountConfig, providerID string) (string, *core.UsageSnapshot)

func ResolveBaseURL

func ResolveBaseURL(acct core.AccountConfig, defaultURL string) string

func SanitizeWorkspace

func SanitizeWorkspace(cwd string) string

func Truncate added in v0.6.3

func Truncate(s string, maxLen int) string

Truncate shortens s to maxLen runes, appending "…" if truncated.

func UnixAuto

func UnixAuto(ts int64) time.Time

Types

type HookUsage added in v0.6.7

type HookUsage struct {
	InputTokens      *int64
	OutputTokens     *int64
	ReasoningTokens  *int64
	CacheReadTokens  *int64
	CacheWriteTokens *int64
	TotalTokens      *int64
	CostUSD          *float64
}

HookUsage holds token and cost data extracted from webhook/hook payloads. Used by claude_code, codex, and other telemetry providers.

func (*HookUsage) SumTotalTokens added in v0.6.7

func (u *HookUsage) SumTotalTokens()

SumTotalTokens computes TotalTokens from parts if it's nil.

type TelemetryChannel

type TelemetryChannel string
const (
	TelemetryChannelHook   TelemetryChannel = "hook"
	TelemetryChannelSSE    TelemetryChannel = "sse"
	TelemetryChannelJSONL  TelemetryChannel = "jsonl"
	TelemetryChannelAPI    TelemetryChannel = "api"
	TelemetryChannelSQLite TelemetryChannel = "sqlite"
)

type TelemetryCollectOptions

type TelemetryCollectOptions struct {
	Paths     map[string]string
	PathLists map[string][]string
}

func (TelemetryCollectOptions) Path

func (o TelemetryCollectOptions) Path(key string, fallback string) string

func (TelemetryCollectOptions) PathsFor

func (o TelemetryCollectOptions) PathsFor(key string, fallback []string) []string

type TelemetryEvent

type TelemetryEvent struct {
	SchemaVersion string
	Channel       TelemetryChannel
	OccurredAt    time.Time
	AccountID     string
	WorkspaceID   string
	SessionID     string
	TurnID        string
	MessageID     string
	ToolCallID    string
	ProviderID    string
	AgentName     string
	EventType     TelemetryEventType
	ModelRaw      string

	InputTokens      *int64
	OutputTokens     *int64
	ReasoningTokens  *int64
	CacheReadTokens  *int64
	CacheWriteTokens *int64
	TotalTokens      *int64
	CostUSD          *float64
	Requests         *int64

	ToolName string
	Status   TelemetryStatus
	Payload  map[string]any
}

type TelemetryEventType

type TelemetryEventType string
const (
	TelemetryEventTypeTurnCompleted TelemetryEventType = "turn_completed"
	TelemetryEventTypeMessageUsage  TelemetryEventType = "message_usage"
	TelemetryEventTypeToolUsage     TelemetryEventType = "tool_usage"
	TelemetryEventTypeRawEnvelope   TelemetryEventType = "raw_envelope"
)

type TelemetrySource

type TelemetrySource interface {
	System() string
	Collect(ctx context.Context, opts TelemetryCollectOptions) ([]TelemetryEvent, error)
	ParseHookPayload(raw []byte, opts TelemetryCollectOptions) ([]TelemetryEvent, error)
}

type TelemetryStatus

type TelemetryStatus string
const (
	TelemetryStatusOK      TelemetryStatus = "ok"
	TelemetryStatusError   TelemetryStatus = "error"
	TelemetryStatusAborted TelemetryStatus = "aborted"
	TelemetryStatusUnknown TelemetryStatus = "unknown"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL