package domain

// TrackingConfig specifies experiment tracking tools to enable for a task.
type TrackingConfig struct {
	MLflow      *MLflowTrackingConfig      `json:"mlflow,omitempty"`
	TensorBoard *TensorBoardTrackingConfig `json:"tensorboard,omitempty"`
	Wandb       *WandbTrackingConfig       `json:"wandb,omitempty"`
}

// MLflowTrackingConfig controls MLflow integration.
type MLflowTrackingConfig struct {
	Enabled     bool   `json:"enabled"`
	Mode        string `json:"mode,omitempty"`         // "sidecar" | "remote" | "disabled"
	TrackingURI string `json:"tracking_uri,omitempty"` // Explicit tracking URI for remote mode
}

// TensorBoardTrackingConfig controls TensorBoard integration.
type TensorBoardTrackingConfig struct {
	Enabled bool   `json:"enabled"`
	Mode    string `json:"mode,omitempty"` // "sidecar" | "disabled"
}

// WandbTrackingConfig controls Weights & Biases integration.
type WandbTrackingConfig struct {
	Enabled bool   `json:"enabled"`
	Mode    string `json:"mode,omitempty"` // "remote" | "disabled"
	APIKey  string `json:"api_key,omitempty"`
	Project string `json:"project,omitempty"`
	Entity  string `json:"entity,omitempty"`
}
