package repository import ( "context" "time" ) type GitStatus struct { Branch string Modified []string Untracked []string Staged []string Ahead int Behind int } type Commit struct { Hash string Author string Date time.Time Message string Files []string } type GitRepository interface { Status(ctx context.Context) (*GitStatus, error) Pull(ctx context.Context) error Push(ctx context.Context) error Commit(ctx context.Context, message string, files []string) error Log(ctx context.Context, path string, limit int) ([]*Commit, error) IsEnabled() bool Clone(ctx context.Context, url string, path string) error }