package windows import ( "context" "errors" "time" "softbox.local/core/application/launch" "softbox.local/core/updater" ) // Edition identifies the application build channel shown by the UI. type Edition string const EditionModern Edition = "Modern" // ErrUnsupported reports that a Windows-only capability is unavailable on the // current host. Callers must treat it as an unknown state, never as a stopped // process or a compatible system. var ErrUnsupported = errors.New("windows platform capability is unsupported on this host") // Platform is the minimal boundary for target-specific capabilities. type Platform interface { OS() string Edition() Edition IsCompatible(minOS string) (bool, error) IsRunning(appID, entrypoint string) (bool, error) WaitForExit(ctx context.Context, appID, entrypoint string, timeout time.Duration) error Start(command launch.Command) (int, error) WaitForProcessExit(ctx context.Context, pid int, timeout time.Duration) error StartSelfUpdate(command updater.StartCommand) (int, error) SyncDirectory(path string) error } // New returns the platform implementation selected by build tags. func New() Platform { return newPlatform() }