services

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Apr 27, 2025 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CleanupOpenAIResources added in v0.2.0

func CleanupOpenAIResources(ctx context.Context, resources *OpenAIResources)

CleanupOpenAIResources deletes OpenAI resources to avoid leaving them dangling

func GenerateIssueDescription added in v0.2.0

func GenerateIssueDescription(ctx context.Context, resources *OpenAIResources) (string, string, error)

GenerateIssueDescription generates a description for an issue using OpenAI

func GenerateMRDescription added in v0.2.0

func GenerateMRDescription(ctx context.Context, resources *OpenAIResources) (string, error)

GenerateMRDescription generates a description for a merge request using OpenAI

func NewOpenAIClient added in v0.2.0

func NewOpenAIClient() (*openai.Client, error)

NewOpenAIClient creates and validates the OpenAI client

func PollRun added in v0.2.0

func PollRun(ctx context.Context, client *openai.Client, threadID, runID string) (*openai.Run, error)

PollRun polls the OpenAI API until a run is completed

Types

type CreateMergeRequestOptions added in v0.2.0

type CreateMergeRequestOptions struct {
	IsDraft            bool
	IssueLabels        []string
	MilestoneID        int
	RemoveSourceBranch bool
}

CreateMergeRequestOptions contains the optional parameters for creating a merge request

type GitHubIssueProvider added in v0.2.0

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

GitHubIssueProvider adapts GithubProject to the IssueProvider interface

func NewGitHubIssueProvider added in v0.2.0

func NewGitHubIssueProvider(repo string) (*GitHubIssueProvider, error)

NewGitHubIssueProvider creates a new GitHub issue provider

func (*GitHubIssueProvider) CreateIssue added in v0.2.0

func (p *GitHubIssueProvider) CreateIssue(title, labels string, selfAssign bool, milestone string) (*IssueCreationResult, error)

CreateIssue implements the IssueProvider interface for GitHub Note: GitHub doesn't use the milestone parameter

type GitHubMRDescriptionProvider added in v0.2.0

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

GitHubMRDescriptionProvider adapts GithubProject to the MRDescriptionProvider interface

func NewGitHubMRDescriptionProvider added in v0.2.0

func NewGitHubMRDescriptionProvider(repo string) (*GitHubMRDescriptionProvider, error)

NewGitHubMRDescriptionProvider creates a new GitHub MR description provider

func (*GitHubMRDescriptionProvider) GetIssueDetails added in v0.2.0

func (p *GitHubMRDescriptionProvider) GetIssueDetails(issueNumber int) (*IssueDetailsResult, error)

GetIssueDetails returns an issue by its number

func (*GitHubMRDescriptionProvider) GetOpenRequestsForIssue added in v0.2.0

func (p *GitHubMRDescriptionProvider) GetOpenRequestsForIssue(issueNumber int) ([]MRDescriptionResult, error)

GetOpenRequestsForIssue returns the open pull requests for an issue

func (*GitHubMRDescriptionProvider) GetRequestDiff added in v0.2.0

func (p *GitHubMRDescriptionProvider) GetRequestDiff(requestID int) (string, error)

GetRequestDiff gets the diff for a pull request

func (*GitHubMRDescriptionProvider) UpdateIssueDescription added in v0.2.0

func (p *GitHubMRDescriptionProvider) UpdateIssueDescription(issueNumber int, description string) error

UpdateIssueDescription updates the description of an issue

func (*GitHubMRDescriptionProvider) UpdateIssueTitle added in v0.2.0

func (p *GitHubMRDescriptionProvider) UpdateIssueTitle(issueNumber int, title string) error

UpdateIssueTitle updates the title of an issue

func (*GitHubMRDescriptionProvider) UpdateRequestDescription added in v0.2.0

func (p *GitHubMRDescriptionProvider) UpdateRequestDescription(requestID int, description string) error

UpdateRequestDescription updates the description of a pull request

type GitHubProvider added in v0.2.0

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

GitHubProvider adapts GithubProject to the SCMProvider interface

func NewGitHubProvider added in v0.2.0

func NewGitHubProvider(repo string) (*GitHubProvider, error)

NewGitHubProvider creates a new GitHub provider

func (*GitHubProvider) CreateMergeRequest added in v0.2.0

func (p *GitHubProvider) CreateMergeRequest(title, sourceBranch, targetBranch string, issueNumber int, isDraft bool, labels []string, milestoneID int, removeSourceBranch bool) (*RequestResult, error)

CreateMergeRequest implements the SCMProvider interface

func (*GitHubProvider) GetIssue added in v0.2.0

func (p *GitHubProvider) GetIssue(issueNumber int) (*IssueResult, error)

GetIssue implements the SCMProvider interface

func (*GitHubProvider) GetOpenRequests added in v0.2.0

func (p *GitHubProvider) GetOpenRequests(issueNumber int) ([]RequestResult, error)

GetOpenRequests returns the open pull requests related to an issue

func (*GitHubProvider) GetURL added in v0.2.0

func (p *GitHubProvider) GetURL() string

GetURL returns the GitHub URL for the repo

type GitLabIssueProvider added in v0.2.0

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

GitLabIssueProvider adapts GitlabProject to the IssueProvider interface

func NewGitLabIssueProvider added in v0.2.0

func NewGitLabIssueProvider(repo string) (*GitLabIssueProvider, error)

NewGitLabIssueProvider creates a new GitLab issue provider

func (*GitLabIssueProvider) CreateIssue added in v0.2.0

func (p *GitLabIssueProvider) CreateIssue(title, labels string, selfAssign bool, milestone string) (*IssueCreationResult, error)

CreateIssue implements the IssueProvider interface for GitLab

type GitLabMRDescriptionProvider added in v0.2.0

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

GitLabMRDescriptionProvider adapts GitlabProject to the MRDescriptionProvider interface

func NewGitLabMRDescriptionProvider added in v0.2.0

func NewGitLabMRDescriptionProvider(repo string) (*GitLabMRDescriptionProvider, error)

NewGitLabMRDescriptionProvider creates a new GitLab MR description provider

func (*GitLabMRDescriptionProvider) GetIssueDetails added in v0.2.0

func (p *GitLabMRDescriptionProvider) GetIssueDetails(issueNumber int) (*IssueDetailsResult, error)

GetIssueDetails returns an issue by its number

func (*GitLabMRDescriptionProvider) GetOpenRequestsForIssue added in v0.2.0

func (p *GitLabMRDescriptionProvider) GetOpenRequestsForIssue(issueNumber int) ([]MRDescriptionResult, error)

GetOpenRequestsForIssue returns the open merge requests for an issue

func (*GitLabMRDescriptionProvider) GetRequestDiff added in v0.2.0

func (p *GitLabMRDescriptionProvider) GetRequestDiff(requestID int) (string, error)

GetRequestDiff gets the diff for a merge request

func (*GitLabMRDescriptionProvider) UpdateIssueDescription added in v0.2.0

func (p *GitLabMRDescriptionProvider) UpdateIssueDescription(issueNumber int, description string) error

UpdateIssueDescription updates the description of an issue

func (*GitLabMRDescriptionProvider) UpdateIssueTitle added in v0.2.0

func (p *GitLabMRDescriptionProvider) UpdateIssueTitle(issueNumber int, title string) error

UpdateIssueTitle updates the title of an issue

func (*GitLabMRDescriptionProvider) UpdateRequestDescription added in v0.2.0

func (p *GitLabMRDescriptionProvider) UpdateRequestDescription(requestID int, description string) error

UpdateRequestDescription updates the description of a merge request

type GitLabProvider added in v0.2.0

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

GitLabProvider adapts GitlabProject to the SCMProvider interface

func NewGitLabProvider added in v0.2.0

func NewGitLabProvider(repo string) (*GitLabProvider, error)

NewGitLabProvider creates a new GitLab provider

func (*GitLabProvider) CreateMergeRequest added in v0.2.0

func (p *GitLabProvider) CreateMergeRequest(title, sourceBranch, targetBranch string, issueNumber int, isDraft bool, labels []string, milestoneID int, removeSourceBranch bool) (*RequestResult, error)

CreateMergeRequest implements the SCMProvider interface

func (*GitLabProvider) GetIssue added in v0.2.0

func (p *GitLabProvider) GetIssue(issueNumber int) (*IssueResult, error)

GetIssue implements the SCMProvider interface

func (*GitLabProvider) GetOpenRequests added in v0.2.0

func (p *GitLabProvider) GetOpenRequests(issueNumber int) ([]RequestResult, error)

GetOpenRequests returns the open merge requests related to an issue

func (*GitLabProvider) GetURL added in v0.2.0

func (p *GitLabProvider) GetURL() string

GetURL returns the GitLab URL for the repo

type GithubIssue

type GithubIssue struct {
	Number  int
	Title   string
	Labels  []string
	HTMLURL string
}

GithubIssue represents a GitHub issue

type GithubProject

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

GithubProject represents a GitHub repository

func NewGithubProject

func NewGithubProject(repoName string) (*GithubProject, error)

NewGithubProject creates a new GitHub project client

func (*GithubProject) CreateIssue

func (p *GithubProject) CreateIssue(title, labels string, selfAssign bool, milestoneTitle ...string) (*GithubIssue, error)

CreateIssue creates a new issue in the repository

func (*GithubProject) CreatePullRequest

func (p *GithubProject) CreatePullRequest(title, sourceBranch, targetBranch string, issueNumber int, isDraft bool, issueLabels []string) (*GithubPullRequest, error)

CreatePullRequest creates a new pull request in the repository

func (*GithubProject) GetIssue

func (p *GithubProject) GetIssue(issueNumber int) (*GithubIssue, error)

GetIssue returns an issue by its number

func (*GithubProject) GetOpenPullRequestsForIssue

func (p *GithubProject) GetOpenPullRequestsForIssue(issueNumber int) ([]*GithubPullRequest, error)

GetOpenPullRequestsForIssue returns all open pull requests related to an issue

func (*GithubProject) GetPullRequestDiff added in v0.2.0

func (p *GithubProject) GetPullRequestDiff(prNumber int) (string, error)

GetPullRequestDiff returns the diff of a pull request

func (*GithubProject) UpdateIssueDescription added in v0.2.0

func (p *GithubProject) UpdateIssueDescription(issueNumber int, description string) error

UpdateIssueDescription updates the description of an issue

func (*GithubProject) UpdateIssueTitle added in v0.2.0

func (p *GithubProject) UpdateIssueTitle(issueNumber int, title string) error

UpdateIssueTitle updates the title of an issue

func (*GithubProject) UpdatePullRequestDescription added in v0.2.0

func (p *GithubProject) UpdatePullRequestDescription(prNumber int, description string) error

UpdatePullRequestDescription updates the description of a pull request

type GithubPullRequest

type GithubPullRequest struct {
	Number  int
	Title   string
	HTMLURL string
	IsDraft bool
}

GithubPullRequest represents a GitHub pull request

type GitlabIssue

type GitlabIssue struct {
	IID         int
	Title       string
	Labels      []string
	MilestoneID int
	WebURL      string
}

GitlabIssue represents a GitLab issue

type GitlabMergeRequest

type GitlabMergeRequest struct {
	IID     int
	Title   string
	WebURL  string
	IsDraft bool
}

GitlabMergeRequest represents a GitLab merge request

type GitlabProject

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

GitlabProject represents a GitLab repository

func NewGitlabProject

func NewGitlabProject(repoName string) (*GitlabProject, error)

NewGitlabProject creates a new GitLab project client

func (*GitlabProject) CreateIssue

func (p *GitlabProject) CreateIssue(title, labels string, selfAssign bool, milestoneTitle ...string) (*GitlabIssue, error)

CreateIssue creates a new issue in the repository

func (*GitlabProject) CreateMergeRequest

func (p *GitlabProject) CreateMergeRequest(title, sourceBranch, targetBranch string, issueIID int, options CreateMergeRequestOptions) (*GitlabMergeRequest, error)

CreateMergeRequest creates a new merge request in the repository

func (*GitlabProject) GetIssue

func (p *GitlabProject) GetIssue(issueNumber int) (*GitlabIssue, error)

GetIssue returns an issue by its number

func (*GitlabProject) GetMergeRequestDiff added in v0.2.0

func (p *GitlabProject) GetMergeRequestDiff(mrIID int) (string, error)

GetMergeRequestDiff returns the diff of a merge request

func (*GitlabProject) GetMilestoneID

func (p *GitlabProject) GetMilestoneID(title string) (int, error)

GetMilestoneID returns the ID of a milestone by title

func (*GitlabProject) GetOpenMergeRequestsForIssue

func (p *GitlabProject) GetOpenMergeRequestsForIssue(issueID int) ([]*GitlabMergeRequest, error)

GetOpenMergeRequestsForIssue returns all open merge requests related to an issue

func (*GitlabProject) UpdateIssueDescription added in v0.2.0

func (p *GitlabProject) UpdateIssueDescription(issueIID int, description string) error

UpdateIssueDescription updates the description of an issue

func (*GitlabProject) UpdateIssueTitle added in v0.2.0

func (p *GitlabProject) UpdateIssueTitle(issueIID int, title string) error

UpdateIssueTitle updates the title of an issue

func (*GitlabProject) UpdateMergeRequestDescription added in v0.2.0

func (p *GitlabProject) UpdateMergeRequestDescription(mrIID int, description string) error

UpdateMergeRequestDescription updates the description of a merge request

type IssueCreationResult added in v0.2.0

type IssueCreationResult struct {
	Number int    // Issue number (GitHub) or IID (GitLab)
	Title  string // Issue title
	URL    string // Issue URL
}

IssueCreationResult represents the result of creating an issue

type IssueDetailsResult added in v0.2.0

type IssueDetailsResult struct {
	Number int
	IID    int // For GitLab compatibility
	Title  string
	WebURL string
}

IssueDetailsResult represents issue details

type IssueProvider added in v0.2.0

type IssueProvider interface {
	// CreateIssue creates a new issue and returns its details
	CreateIssue(title, labels string, selfAssign bool, milestone string) (*IssueCreationResult, error)
}

IssueProvider represents a provider for creating issues

type IssueResult added in v0.2.0

type IssueResult struct {
	Number      int
	Title       string
	Labels      []string
	MilestoneID int
}

IssueResult represents an issue from either system

type MRDescriptionProvider added in v0.2.0

type MRDescriptionProvider interface {
	// GetOpenRequestsForIssue returns the open merge/pull requests for an issue
	GetOpenRequestsForIssue(issueNumber int) ([]MRDescriptionResult, error)

	// GetRequestDiff gets the diff for a merge/pull request
	GetRequestDiff(requestID int) (string, error)

	// GetIssueDetails returns an issue by its number
	GetIssueDetails(issueNumber int) (*IssueDetailsResult, error)

	// UpdateRequestDescription updates the description of a merge/pull request
	UpdateRequestDescription(requestID int, description string) error

	// UpdateIssueDescription updates the description of an issue
	UpdateIssueDescription(issueNumber int, description string) error

	// UpdateIssueTitle updates the title of an issue
	UpdateIssueTitle(issueNumber int, title string) error
}

MRDescriptionProvider represents a provider for merge/pull request descriptions

type MRDescriptionResult added in v0.2.0

type MRDescriptionResult struct {
	ID     int
	IID    int // For GitLab compatibility
	Title  string
	WebURL string
}

MRDescriptionResult represents a merge/pull request result

type MRInfo added in v0.2.0

type MRInfo struct {
	OpenRequests []MRDescriptionResult
	SelectedID   int
	Diff         string
	WebURL       string
	IssueURL     string
}

MRInfo holds information about a merge/pull request

func GetMRInfo added in v0.2.0

func GetMRInfo(provider MRDescriptionProvider, issueNumber int) (*MRInfo, error)

GetMRInfo retrieves information about the merge/pull request

type OpenAIResources added in v0.2.0

type OpenAIResources struct {
	Client      *openai.Client
	AssistantID string
	ThreadID    string
	FileID      string
}

OpenAIResources holds references to OpenAI resources

func SetupOpenAIResources added in v0.2.0

func SetupOpenAIResources(ctx context.Context, client *openai.Client, diff string) (*OpenAIResources, error)

SetupOpenAIResources creates and initializes OpenAI resources

type RequestResult added in v0.2.0

type RequestResult struct {
	ID      int
	Title   string
	URL     string
	IsDraft bool
}

RequestResult represents a merge/pull request result

func CreateMergeRequest added in v0.2.0

func CreateMergeRequest(provider SCMProvider, gitRepo *git.Repository, currentBranch, remote, targetBranch string, issueNumber int, isDraft bool, removeSourceBranch bool) (*RequestResult, error)

CreateMergeRequest contains the common flow for creating a merge/pull request

type SCMProvider added in v0.2.0

type SCMProvider interface {
	// CreateMergeRequest creates a merge/pull request and returns its details
	CreateMergeRequest(title, sourceBranch, targetBranch string, issueNumber int, isDraft bool, labels []string, milestoneID int, removeSourceBranch bool) (*RequestResult, error)

	// GetOpenRequests returns the open merge/pull requests for an issue
	GetOpenRequests(issueNumber int) ([]RequestResult, error)

	// GetIssue returns an issue by its number
	GetIssue(issueNumber int) (*IssueResult, error)

	// GetURL returns the URL for the created request
	GetURL() string
}

SCMProvider represents a source code management system (GitHub, GitLab, etc.)

Jump to

Keyboard shortcuts

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