telemetrydata

package
v0.12.3-beta.2 Latest Latest
Warning

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

Go to latest
Published: Nov 15, 2025 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ValidEventNames = map[string]bool{
	"app:startup":  true,
	"app:shutdown": true,
	"app:activity": true,
	"app:display":  true,
	"app:counts":   true,

	"action:magnify":     true,
	"action:settabtheme": true,
	"action:runaicmd":    true,
	"action:createtab":   true,
	"action:createblock": true,
	"action:openwaveai":  true,

	"wsh:run": true,

	"debug:panic": true,

	"conn:connect":      true,
	"conn:connecterror": true,

	"waveai:enabletelemetry": true,
	"waveai:post":            true,
	"waveai:feedback":        true,
	"waveai:showdiff":        true,
	"waveai:revertfile":      true,

	"onboarding:start":      true,
	"onboarding:skip":       true,
	"onboarding:fire":       true,
	"onboarding:githubstar": true,
}

Functions

This section is empty.

Types

type TEvent

type TEvent struct {
	Uuid    string      `json:"uuid,omitempty" db:"uuid"`
	Ts      int64       `json:"ts,omitempty" db:"ts"`
	TsLocal string      `json:"tslocal,omitempty" db:"tslocal"` // iso8601 format (wall clock converted to PT)
	Event   string      `json:"event" db:"event"`
	Props   TEventProps `json:"props" db:"-"` // Don't scan directly to map

	// DB fields
	Uploaded bool `json:"-" db:"uploaded"`

	// For database scanning
	RawProps string `json:"-" db:"props"`
}

func MakeTEvent

func MakeTEvent(event string, props TEventProps) *TEvent

func MakeUntypedTEvent

func MakeUntypedTEvent(event string, propsMap map[string]any) (*TEvent, error)

func (*TEvent) ConvertRawJSON

func (t *TEvent) ConvertRawJSON() error

func (*TEvent) EnsureTimestamps

func (t *TEvent) EnsureTimestamps()

func (*TEvent) UserSetOnceProps

func (t *TEvent) UserSetOnceProps() *TEventUserProps

func (*TEvent) UserSetProps

func (t *TEvent) UserSetProps() *TEventUserProps

func (*TEvent) Validate

func (te *TEvent) Validate(current bool) error

validates a tevent that was just created (not for validating out of the DB, or an uploaded TEvent) checks that TS is pretty current (or unset)

type TEventProps

type TEventProps struct {
	TEventUserProps `tstype:"-"` // generally don't need to set these since they will be automatically copied over

	ActiveMinutes       int `json:"activity:activeminutes,omitempty"`
	FgMinutes           int `json:"activity:fgminutes,omitempty"`
	OpenMinutes         int `json:"activity:openminutes,omitempty"`
	WaveAIActiveMinutes int `json:"activity:waveaiactiveminutes,omitempty"`
	WaveAIFgMinutes     int `json:"activity:waveaifgminutes,omitempty"`
	TermCommandsRun     int `json:"activity:termcommandsrun,omitempty"`

	AppFirstDay    bool `json:"app:firstday,omitempty"`
	AppFirstLaunch bool `json:"app:firstlaunch,omitempty"`

	ActionInitiator string `json:"action:initiator,omitempty" tstype:"\"keyboard\" | \"mouse\""`
	PanicType       string `json:"debug:panictype,omitempty"`
	BlockView       string `json:"block:view,omitempty"`
	AiBackendType   string `json:"ai:backendtype,omitempty"`
	AiLocal         bool   `json:"ai:local,omitempty"`
	WshCmd          string `json:"wsh:cmd,omitempty"`
	WshHadError     bool   `json:"wsh:haderror,omitempty"`
	ConnType        string `json:"conn:conntype,omitempty"`

	OnboardingFeature    string `json:"onboarding:feature,omitempty" tstype:"\"waveai\" | \"magnify\" | \"wsh\""`
	OnboardingVersion    string `json:"onboarding:version,omitempty"`
	OnboardingGithubStar string `json:"onboarding:githubstar,omitempty" tstype:"\"already\" | \"star\" | \"later\""`

	DisplayHeight int         `json:"display:height,omitempty"`
	DisplayWidth  int         `json:"display:width,omitempty"`
	DisplayDPR    float64     `json:"display:dpr,omitempty"`
	DisplayCount  int         `json:"display:count,omitempty"`
	DisplayAll    interface{} `json:"display:all,omitempty"`

	CountBlocks     int            `json:"count:blocks,omitempty"`
	CountTabs       int            `json:"count:tabs,omitempty"`
	CountWindows    int            `json:"count:windows,omitempty"`
	CountWorkspaces int            `json:"count:workspaces,omitempty"`
	CountSSHConn    int            `json:"count:sshconn,omitempty"`
	CountWSLConn    int            `json:"count:wslconn,omitempty"`
	CountViews      map[string]int `json:"count:views,omitempty"`

	WaveAIAPIType              string         `json:"waveai:apitype,omitempty"`
	WaveAIModel                string         `json:"waveai:model,omitempty"`
	WaveAIInputTokens          int            `json:"waveai:inputtokens,omitempty"`
	WaveAIOutputTokens         int            `json:"waveai:outputtokens,omitempty"`
	WaveAINativeWebSearchCount int            `json:"waveai:nativewebsearchcount,omitempty"`
	WaveAIRequestCount         int            `json:"waveai:requestcount,omitempty"`
	WaveAIToolUseCount         int            `json:"waveai:toolusecount,omitempty"`
	WaveAIToolUseErrorCount    int            `json:"waveai:tooluseerrorcount,omitempty"`
	WaveAIToolDetail           map[string]int `json:"waveai:tooldetail,omitempty"`
	WaveAIPremiumReq           int            `json:"waveai:premiumreq,omitempty"`
	WaveAIProxyReq             int            `json:"waveai:proxyreq,omitempty"`
	WaveAIHadError             bool           `json:"waveai:haderror,omitempty"`
	WaveAIImageCount           int            `json:"waveai:imagecount,omitempty"`
	WaveAIPDFCount             int            `json:"waveai:pdfcount,omitempty"`
	WaveAITextDocCount         int            `json:"waveai:textdoccount,omitempty"`
	WaveAITextLen              int            `json:"waveai:textlen,omitempty"`
	WaveAIFirstByteMs          int            `json:"waveai:firstbytems,omitempty"`  // ms
	WaveAIRequestDurMs         int            `json:"waveai:requestdurms,omitempty"` // ms
	WaveAIWidgetAccess         bool           `json:"waveai:widgetaccess,omitempty"`
	WaveAIThinkingLevel        string         `json:"waveai:thinkinglevel,omitempty"`
	WaveAIThinkingMode         string         `json:"waveai:thinkingmode,omitempty"`
	WaveAIFeedback             string         `json:"waveai:feedback,omitempty" tstype:"\"good\" | \"bad\""`
	WaveAIAction               string         `json:"waveai:action,omitempty"`

	UserSet     *TEventUserProps `json:"$set,omitempty"`
	UserSetOnce *TEventUserProps `json:"$set_once,omitempty"`
}

type TEventUserProps

type TEventUserProps struct {
	ClientArch           string `json:"client:arch,omitempty"`
	ClientVersion        string `json:"client:version,omitempty"`
	ClientInitialVersion string `json:"client:initial_version,omitempty"`
	ClientBuildTime      string `json:"client:buildtime,omitempty"`
	ClientOSRelease      string `json:"client:osrelease,omitempty"`
	ClientIsDev          bool   `json:"client:isdev,omitempty"`

	CohortMonth   string `json:"cohort:month,omitempty"`
	CohortISOWeek string `json:"cohort:isoweek,omitempty"`

	AutoUpdateChannel string `json:"autoupdate:channel,omitempty"`
	AutoUpdateEnabled bool   `json:"autoupdate:enabled,omitempty"`

	LocalShellType    string `json:"localshell:type,omitempty"`
	LocalShellVersion string `json:"localshell:version,omitempty"`

	LocCountryCode string `json:"loc:countrycode,omitempty"`
	LocRegionCode  string `json:"loc:regioncode,omitempty"`

	SettingsCustomWidgets   int `json:"settings:customwidgets,omitempty"`
	SettingsCustomAIPresets int `json:"settings:customaipresets,omitempty"`
	SettingsCustomSettings  int `json:"settings:customsettings,omitempty"`
}

Jump to

Keyboard shortcuts

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