package software import ( "context" "io" ) type Launchable interface { Name() string // Human readable name "Bambu Studio" ID() string // Config ID "bambu" Launch() error // The exec syscall logic } type Updateable interface { GetVersion() (string, error) GetRemoteVersion() (string, error) // Returns (version, error) GetReleaseNotes(version string) (string, error) Install(version string) error } type Summarizer interface { Summarize(context.Context, io.Reader, io.Writer) error }