campaign

package
v0.6.43 Latest Latest
Warning

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

Go to latest
Published: Apr 2, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrCampaignNotFound = errors.New("campaign not found")
)

Functions

func ValidateCampaign

func ValidateCampaign(c Campaign) error

Types

type Actor

type Actor struct {
	UserID string `json:"user_id,omitempty"`
	OpenID string `json:"open_id,omitempty"`
	Name   string `json:"name,omitempty"`
}

func (Actor) PreferredID

func (a Actor) PreferredID() string

type Campaign

type Campaign struct {
	ID                string         `json:"id"`
	Title             string         `json:"title,omitempty"`
	Objective         string         `json:"objective"`
	Repo              string         `json:"repo,omitempty"`
	CampaignRepoPath  string         `json:"campaign_repo_path,omitempty"`
	Session           SessionRoute   `json:"session"`
	Creator           Actor          `json:"creator"`
	ManageMode        ManageMode     `json:"manage_mode"`
	Status            CampaignStatus `json:"status"`
	MaxParallelTrials int            `json:"max_parallel_trials,omitempty"`
	Summary           string         `json:"summary,omitempty"`
	Baseline          []Metric       `json:"baseline,omitempty"`
	Gates             []Gate         `json:"gates,omitempty"`
	Tags              []string       `json:"tags,omitempty"`
	CreatedAt         time.Time      `json:"created_at"`
	UpdatedAt         time.Time      `json:"updated_at"`
	Revision          int64          `json:"revision"`
}

func NormalizeCampaign

func NormalizeCampaign(c Campaign) Campaign

type CampaignStatus

type CampaignStatus string
const (
	StatusPlanned           CampaignStatus = "planned"
	StatusPlanning          CampaignStatus = "planning"
	StatusPlanReviewPending CampaignStatus = "plan_review_pending"
	StatusPlanApproved      CampaignStatus = "plan_approved"
	StatusRunning           CampaignStatus = "running"
	StatusHold              CampaignStatus = "hold"
	StatusMerged            CampaignStatus = "merged"
	StatusRejected          CampaignStatus = "rejected"
	StatusCompleted         CampaignStatus = "completed"
	StatusCanceled          CampaignStatus = "canceled"
)

type Gate

type Gate struct {
	Metric   string  `json:"metric"`
	Operator string  `json:"operator"`
	Target   float64 `json:"target"`
	Unit     string  `json:"unit,omitempty"`
	Context  string  `json:"context,omitempty"`
}

type Guidance

type Guidance struct {
	ID        string    `json:"id"`
	Source    string    `json:"source,omitempty"`
	Command   string    `json:"command,omitempty"`
	Summary   string    `json:"summary,omitempty"`
	Applied   bool      `json:"applied,omitempty"`
	CreatedAt time.Time `json:"created_at,omitempty"`
}

type ManageMode

type ManageMode string
const (
	ManageModeCreatorOnly ManageMode = "creator_only"
	ManageModeScopeAll    ManageMode = "scope_all"
)

type Metric

type Metric struct {
	Name    string  `json:"name"`
	Value   float64 `json:"value"`
	Unit    string  `json:"unit,omitempty"`
	Context string  `json:"context,omitempty"`
}

type Pitfall

type Pitfall struct {
	ID             string    `json:"id"`
	Summary        string    `json:"summary,omitempty"`
	Reason         string    `json:"reason,omitempty"`
	RelatedTrialID string    `json:"related_trial_id,omitempty"`
	RetryIf        string    `json:"retry_if,omitempty"`
	Tags           []string  `json:"tags,omitempty"`
	CreatedAt      time.Time `json:"created_at,omitempty"`
}

type Review

type Review struct {
	ID         string          `json:"id"`
	ReviewerID string          `json:"reviewer_id,omitempty"`
	Provider   string          `json:"provider,omitempty"`
	Model      string          `json:"model,omitempty"`
	Verdict    Verdict         `json:"verdict,omitempty"`
	Summary    string          `json:"summary,omitempty"`
	Blocking   bool            `json:"blocking,omitempty"`
	Confidence string          `json:"confidence,omitempty"`
	Findings   []ReviewFinding `json:"findings,omitempty"`
	CreatedAt  time.Time       `json:"created_at,omitempty"`
}

type ReviewFinding

type ReviewFinding struct {
	Category   string `json:"category,omitempty"`
	Severity   string `json:"severity,omitempty"`
	Summary    string `json:"summary,omitempty"`
	Evidence   string `json:"evidence,omitempty"`
	Suggestion string `json:"suggestion,omitempty"`
}

type SessionRoute

type SessionRoute struct {
	ScopeKey      string `json:"scope_key"`
	ReceiveIDType string `json:"receive_id_type,omitempty"`
	ReceiveID     string `json:"receive_id,omitempty"`
	ChatType      string `json:"chat_type,omitempty"`
}

func (SessionRoute) VisibilityKey added in v0.3.16

func (r SessionRoute) VisibilityKey() string

type Snapshot

type Snapshot struct {
	Version   int        `json:"version"`
	Campaigns []Campaign `json:"campaigns"`
}

type Store

type Store struct {
	// contains filtered or unexported fields
}

func NewStore

func NewStore(path string) *Store

func (*Store) CreateCampaign

func (s *Store) CreateCampaign(c Campaign) (Campaign, error)

func (*Store) DeleteCampaign added in v0.6.4

func (s *Store) DeleteCampaign(campaignID string) (Campaign, error)

func (*Store) GetCampaign

func (s *Store) GetCampaign(campaignID string) (Campaign, error)

func (*Store) ListAllCampaigns added in v0.6.0

func (s *Store) ListAllCampaigns(statusFilter string, limit int) ([]Campaign, error)

func (*Store) ListCampaigns

func (s *Store) ListCampaigns(visibilityKey, statusFilter string, limit int) ([]Campaign, error)

func (*Store) PatchCampaign

func (s *Store) PatchCampaign(campaignID string, mutate func(*Campaign) error) (Campaign, error)

func (*Store) Path

func (s *Store) Path() string

type Trial

type Trial struct {
	ID          string      `json:"id"`
	Title       string      `json:"title,omitempty"`
	Hypothesis  string      `json:"hypothesis,omitempty"`
	Branch      string      `json:"branch,omitempty"`
	MergeReq    string      `json:"merge_request,omitempty"`
	Executor    string      `json:"executor,omitempty"`
	Resource    string      `json:"resource,omitempty"`
	JobID       string      `json:"job_id,omitempty"`
	Status      TrialStatus `json:"status"`
	Verdict     Verdict     `json:"verdict,omitempty"`
	Summary     string      `json:"summary,omitempty"`
	Metrics     []Metric    `json:"metrics,omitempty"`
	Tags        []string    `json:"tags,omitempty"`
	CreatedAt   time.Time   `json:"created_at,omitempty"`
	UpdatedAt   time.Time   `json:"updated_at,omitempty"`
	CompletedAt time.Time   `json:"completed_at,omitempty"`
}

type TrialStatus

type TrialStatus string
const (
	TrialStatusPlanned   TrialStatus = "planned"
	TrialStatusRunning   TrialStatus = "running"
	TrialStatusCandidate TrialStatus = "candidate"
	TrialStatusHold      TrialStatus = "hold"
	TrialStatusCompleted TrialStatus = "completed"
	TrialStatusMerged    TrialStatus = "merged"
	TrialStatusRejected  TrialStatus = "rejected"
	TrialStatusAborted   TrialStatus = "aborted"
)

type Verdict

type Verdict string
const (
	VerdictMerge             Verdict = "merge"
	VerdictReject            Verdict = "reject"
	VerdictHold              Verdict = "hold"
	VerdictNeedsMoreEvidence Verdict = "needs-more-evidence"
	VerdictAborted           Verdict = "aborted"
	VerdictApprove           Verdict = "approve"
	VerdictConcern           Verdict = "concern"
	VerdictBlocking          Verdict = "blocking"
)

Jump to

Keyboard shortcuts

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