Documentation
¶
Index ¶
- Constants
- Variables
- func IsValidEventType(eventType string) bool
- type BaseContext
- func (bc *BaseContext) GetDeliveryID() string
- func (bc *BaseContext) GetEventAction() string
- func (bc *BaseContext) GetEventType() EventType
- func (bc *BaseContext) GetRawEvent() interface{}
- func (bc *BaseContext) GetRepository() *github.Repository
- func (bc *BaseContext) GetSender() *github.User
- func (bc *BaseContext) GetTimestamp() time.Time
- type CommandInfo
- type CommentContext
- type EventType
- type ExecutionMetrics
- type ExecutionResult
- type GitHubContext
- type IssueCommentContext
- type IssuesContext
- type JSONSchema
- type MCPContext
- type MCPError
- type MCPRequest
- type MCPResponse
- type MCPServerCapabilities
- type MCPServerInfo
- type PRAllComments
- type ProgressExecutionResult
- type ProgressTracker
- func (pt *ProgressTracker) AddTask(task *Task)
- func (pt *ProgressTracker) Complete()
- func (pt *ProgressTracker) CompleteCurrentTask()
- func (pt *ProgressTracker) Fail(err error)
- func (pt *ProgressTracker) FailCurrentTask(err error)
- func (pt *ProgressTracker) GetCompletedTasksCount() int
- func (pt *ProgressTracker) GetCurrentTask() *Task
- func (pt *ProgressTracker) GetFailedTasksCount() int
- func (pt *ProgressTracker) GetOverallProgress() float64
- func (pt *ProgressTracker) GetTask(name string) *Task
- func (pt *ProgressTracker) HasErrors() bool
- func (pt *ProgressTracker) SetCurrentTask(name string)
- func (pt *ProgressTracker) StartSpinner(message string)
- func (pt *ProgressTracker) StopSpinner()
- type PullRequestContext
- type PullRequestReviewCommentContext
- type PullRequestReviewContext
- type PushContext
- type ScheduleContext
- type SpinnerState
- type Task
- type TaskStatus
- type Tool
- type ToolCall
- type ToolFunction
- type ToolResult
- type WorkflowDispatchContext
- type Workspace
Constants ¶
const ( CommandCode = "/code" CommandContinue = "/continue" CommandFix = "/fix" )
命令类型
const ( AIModelClaude = "claude" AIModelGemini = "gemini" )
AI模型类型
const ( // 章节标题 SectionSummary = "## 改动摘要" SectionChanges = "## 具体改动" SectionTestPlan = "## 测试计划" // 章节标识符(用于解析) SectionSummaryID = "summary" SectionChangesID = "changes" SectionTestPlanID = "testPlan" // 错误标识符 ErrorPrefixError = "error:" ErrorPrefixException = "exception:" ErrorPrefixTraceback = "traceback:" ErrorPrefixPanic = "panic:" )
三段式输出相关的常量
const ( TaskNameGatherContext = "gather-context" // 收集上下文 TaskNameSetupWorkspace = "setup-workspace" // 设置工作空间 TaskNameGenerateCode = "generate-code" // 生成代码 TaskNameCommitChanges = "commit-changes" // 提交更改 TaskNameCreatePR = "create-pr" // 创建PR TaskNameUpdatePR = "update-pr" // 更新PR TaskNameAnalyzeChanges = "analyze-changes" // 分析更改 TaskNamePrepareWorkspace = "prepare-workspace" // 准备工作空间 TaskNameImplementChanges = "implement-changes" // 实现更改 TaskNameCommitUpdates = "commit-updates" // 提交更新 TaskNameIdentifyProblems = "identify-problems" // 识别问题 TaskNameApplyFixes = "apply-fixes" // 应用修复 TaskNameCommitFixes = "commit-fixes" // 提交修复 TaskNameAnalyzeCode = "analyze-code" // 分析代码 TaskNameRunChecks = "run-checks" // 运行检查 TaskNameGenerateReview = "generate-review" // 生成审查 TaskNameSubmitReview = "submit-review" // 提交审查 TaskNameProcessComments = "process-comments" // 处理评论 TaskNameImplementFeedback = "implement-feedback" // 实现反馈 )
TaskName 任务名称常量
Variables ¶
var SpinnerFrames = []string{"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"}
SpinnerFrames Spinner动画帧
Functions ¶
Types ¶
type BaseContext ¶
type BaseContext struct {
Type EventType `json:"type"`
Repository *github.Repository `json:"repository"`
Sender *github.User `json:"sender"`
RawEvent interface{} `json:"raw_event"`
Action string `json:"action"`
DeliveryID string `json:"delivery_id"`
Timestamp time.Time `json:"timestamp"`
}
BaseContext provides base implementation for all event contexts
func (*BaseContext) GetDeliveryID ¶
func (bc *BaseContext) GetDeliveryID() string
func (*BaseContext) GetEventAction ¶
func (bc *BaseContext) GetEventAction() string
func (*BaseContext) GetEventType ¶
func (bc *BaseContext) GetEventType() EventType
func (*BaseContext) GetRawEvent ¶
func (bc *BaseContext) GetRawEvent() interface{}
func (*BaseContext) GetRepository ¶
func (bc *BaseContext) GetRepository() *github.Repository
func (*BaseContext) GetSender ¶
func (bc *BaseContext) GetSender() *github.User
func (*BaseContext) GetTimestamp ¶
func (bc *BaseContext) GetTimestamp() time.Time
type CommandInfo ¶
type CommandInfo struct {
Command string `json:"command"` // /code, /continue, /fix
AIModel string `json:"ai_model"` // claude, gemini
Args string `json:"args"` // 命令参数
RawText string `json:"raw_text"` // 原始文本
}
CommandInfo 提取的命令信息
type CommentContext ¶
type CommentContext struct {
Repository *github.Repository `json:"repository"`
IssueNumber int `json:"issue_number"`
CommentID *int64 `json:"comment_id,omitempty"`
InitialContent string `json:"initial_content"`
LastContent string `json:"last_content"`
UpdateCount int `json:"update_count"`
CreatedAt time.Time `json:"created_at"`
LastUpdatedAt *time.Time `json:"last_updated_at,omitempty"`
}
CommentContext 评论上下文
type EventType ¶
type EventType string
EventType defines GitHub event types
const ( EventIssueComment EventType = "issue_comment" EventPullRequestReview EventType = "pull_request_review" EventPullRequestReviewComment EventType = "pull_request_review_comment" EventIssues EventType = "issues" EventPullRequest EventType = "pull_request" EventWorkflowDispatch EventType = "workflow_dispatch" EventSchedule EventType = "schedule" EventPush EventType = "push" )
type ExecutionMetrics ¶
type ExecutionMetrics struct {
ToolCalls int `json:"tool_calls"`
Duration time.Duration `json:"duration"`
Success int `json:"success"`
Errors int `json:"errors"`
LastExecution time.Time `json:"last_execution"`
}
ExecutionMetrics 执行指标
type ExecutionResult ¶
type GitHubContext ¶
type GitHubContext interface {
GetEventType() EventType
GetRepository() *github.Repository
GetSender() *github.User
GetRawEvent() interface{}
GetEventAction() string
GetDeliveryID() string
GetTimestamp() time.Time
}
GitHubContext is the interface for all GitHub event contexts
type IssueCommentContext ¶
type IssueCommentContext struct {
BaseContext
Issue *github.Issue `json:"issue"`
Comment *github.IssueComment `json:"comment"`
// 是否是PR评论(通过Issue.PullRequestLinks判断)
IsPRComment bool `json:"is_pr_comment"`
}
IssueCommentContext Issue评论事件上下文
type IssuesContext ¶
type IssuesContext struct {
BaseContext
Issue *github.Issue `json:"issue"`
}
IssuesContext Issue事件上下文
type JSONSchema ¶
type JSONSchema struct {
Type string `json:"type"`
Properties map[string]*JSONSchema `json:"properties,omitempty"`
Required []string `json:"required,omitempty"`
Items *JSONSchema `json:"items,omitempty"`
Description string `json:"description,omitempty"`
Enum []interface{} `json:"enum,omitempty"`
AdditionalProperties bool `json:"additionalProperties,omitempty"`
}
JSONSchema JSON Schema定义
type MCPContext ¶
type MCPContext struct {
// 基础上下文
Repository GitHubContext `json:"repository"`
Issue interface{} `json:"issue,omitempty"`
PullRequest interface{} `json:"pull_request,omitempty"`
User interface{} `json:"user,omitempty"`
// 工作环境
WorkspacePath string `json:"workspace_path,omitempty"`
BranchName string `json:"branch_name,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
// 权限控制
Permissions []string `json:"permissions,omitempty"`
Constraints []string `json:"constraints,omitempty"`
}
MCPContext MCP执行上下文
type MCPError ¶
type MCPError struct {
Code int `json:"code"`
Message string `json:"message"`
Data string `json:"data,omitempty"`
}
MCPError MCP错误
type MCPRequest ¶
type MCPRequest struct {
ID string `json:"id"`
Method string `json:"method"`
Params map[string]interface{} `json:"params"`
}
MCPRequest MCP协议请求
type MCPResponse ¶
type MCPResponse struct {
ID string `json:"id"`
Result interface{} `json:"result,omitempty"`
Error *MCPError `json:"error,omitempty"`
}
MCPResponse MCP协议响应
type MCPServerCapabilities ¶
type MCPServerCapabilities struct {
Tools []Tool `json:"tools"`
Resources []any `json:"resources,omitempty"`
Prompts []any `json:"prompts,omitempty"`
}
MCPServerCapabilities MCP服务器能力声明
type MCPServerInfo ¶
type MCPServerInfo struct {
Name string `json:"name"`
Version string `json:"version"`
Description string `json:"description"`
Capabilities MCPServerCapabilities `json:"capabilities"`
CreatedAt time.Time `json:"created_at"`
}
MCPServerInfo MCP服务器信息
type PRAllComments ¶
type PRAllComments struct {
PRBody string `json:"pr_body"`
IssueComments []*github.IssueComment `json:"issue_comments"`
ReviewComments []*github.PullRequestComment `json:"review_comments"`
Reviews []*github.PullRequestReview `json:"reviews"`
}
PRAllComments 包含 PR 的所有评论信息
type ProgressExecutionResult ¶
type ProgressExecutionResult struct {
Success bool `json:"success"`
Output string `json:"output"`
Error string `json:"error,omitempty"`
FilesChanged []string `json:"files_changed"`
Duration time.Duration `json:"duration"`
Summary string `json:"summary"`
CommitSHA string `json:"commit_sha,omitempty"`
BranchName string `json:"branch_name,omitempty"`
PullRequestURL string `json:"pull_request_url,omitempty"`
TaskResults []*Task `json:"task_results"`
Metadata map[string]interface{} `json:"metadata,omitempty"`
}
ProgressExecutionResult 带进度信息的执行结果
type ProgressTracker ¶
type ProgressTracker struct {
Tasks []*Task `json:"tasks"`
CurrentTaskName string `json:"current_task_name"`
StartTime time.Time `json:"start_time"`
EndTime *time.Time `json:"end_time,omitempty"`
Status TaskStatus `json:"status"`
Spinner *SpinnerState `json:"spinner"`
TotalDuration time.Duration `json:"total_duration"`
}
ProgressTracker 进度跟踪器
func (*ProgressTracker) CompleteCurrentTask ¶
func (pt *ProgressTracker) CompleteCurrentTask()
CompleteCurrentTask 完成当前任务
func (*ProgressTracker) FailCurrentTask ¶
func (pt *ProgressTracker) FailCurrentTask(err error)
FailCurrentTask 当前任务失败
func (*ProgressTracker) GetCompletedTasksCount ¶
func (pt *ProgressTracker) GetCompletedTasksCount() int
GetCompletedTasksCount 获取已完成任务数量
func (*ProgressTracker) GetCurrentTask ¶
func (pt *ProgressTracker) GetCurrentTask() *Task
GetCurrentTask 获取当前任务
func (*ProgressTracker) GetFailedTasksCount ¶
func (pt *ProgressTracker) GetFailedTasksCount() int
GetFailedTasksCount 获取失败任务数量
func (*ProgressTracker) GetOverallProgress ¶
func (pt *ProgressTracker) GetOverallProgress() float64
GetOverallProgress 获取整体进度
func (*ProgressTracker) GetTask ¶
func (pt *ProgressTracker) GetTask(name string) *Task
GetTask 根据Name获取任务
func (*ProgressTracker) SetCurrentTask ¶
func (pt *ProgressTracker) SetCurrentTask(name string)
SetCurrentTask 设置当前任务
func (*ProgressTracker) StartSpinner ¶
func (pt *ProgressTracker) StartSpinner(message string)
StartSpinner 开始Spinner动画
func (*ProgressTracker) StopSpinner ¶
func (pt *ProgressTracker) StopSpinner()
StopSpinner 停止Spinner动画
type PullRequestContext ¶
type PullRequestContext struct {
BaseContext
PullRequest *github.PullRequest `json:"pull_request"`
}
PullRequestContext PR事件上下文
type PullRequestReviewCommentContext ¶
type PullRequestReviewCommentContext struct {
BaseContext
PullRequest *github.PullRequest `json:"pull_request"`
Comment *github.PullRequestComment `json:"comment"`
}
PullRequestReviewCommentContext PR Review评论事件上下文
type PullRequestReviewContext ¶
type PullRequestReviewContext struct {
BaseContext
PullRequest *github.PullRequest `json:"pull_request"`
Review *github.PullRequestReview `json:"review"`
}
PullRequestReviewContext PR Review事件上下文
type PushContext ¶
type PushContext struct {
BaseContext
Ref string `json:"ref"`
Commits []*github.HeadCommit `json:"commits"`
Before string `json:"before"`
After string `json:"after"`
}
PushContext push事件上下文
type ScheduleContext ¶
type ScheduleContext struct {
BaseContext
Cron string `json:"cron"`
}
ScheduleContext schedule事件上下文
type SpinnerState ¶
type SpinnerState struct {
Active bool `json:"active"`
Message string `json:"message"`
StartTime time.Time `json:"start_time"`
FrameIndex int `json:"frame_index"`
}
SpinnerState Spinner动画状态
func (*SpinnerState) GetCurrentFrame ¶
func (s *SpinnerState) GetCurrentFrame() string
GetCurrentFrame 获取当前动画帧
type Task ¶
type Task struct {
Name string `json:"name"`
Description string `json:"description"`
Status TaskStatus `json:"status"`
StartTime *time.Time `json:"start_time,omitempty"`
EndTime *time.Time `json:"end_time,omitempty"`
Duration time.Duration `json:"duration"`
Error string `json:"error,omitempty"`
SubTasks []*Task `json:"sub_tasks,omitempty"`
Progress float64 `json:"progress"` // 0.0 - 1.0
Metadata map[string]string `json:"metadata,omitempty"`
}
Task 代表一个可跟踪的任务
type TaskStatus ¶
type TaskStatus string
TaskStatus 任务状态枚举
const ( TaskStatusPending TaskStatus = "pending" // ⏳ 等待执行 TaskStatusInProgress TaskStatus = "in_progress" // 🔄 正在执行 TaskStatusCompleted TaskStatus = "completed" // ✅ 已完成 TaskStatusFailed TaskStatus = "failed" // ❌ 执行失败 TaskStatusSkipped TaskStatus = "skipped" // ⏭️ 已跳过 )
type Tool ¶
type Tool struct {
Name string `json:"name"`
Description string `json:"description"`
InputSchema *JSONSchema `json:"input_schema"`
}
Tool MCP工具定义
type ToolCall ¶
type ToolCall struct {
ID string `json:"id"`
Function ToolFunction `json:"function"`
Context map[string]interface{} `json:"context,omitempty"`
}
ToolCall 工具调用
type ToolFunction ¶
type ToolFunction struct {
Name string `json:"name"`
Arguments map[string]interface{} `json:"arguments"`
}
ToolFunction 工具函数
type ToolResult ¶
type ToolResult struct {
ID string `json:"id"`
Success bool `json:"success"`
Content interface{} `json:"content,omitempty"`
Error string `json:"error,omitempty"`
Type string `json:"type,omitempty"` // text, json, image, etc.
}
ToolResult 工具执行结果
type WorkflowDispatchContext ¶
type WorkflowDispatchContext struct {
BaseContext
Inputs map[string]interface{} `json:"inputs"`
}
WorkflowDispatchContext workflow_dispatch事件上下文
type Workspace ¶
type Workspace struct {
// github org name
Org string `json:"org"`
// github repo name
Repo string `json:"repo"`
// PR number
PRNumber int `json:"pr_number"`
// AI model name (claude or gemini)
AIModel string `json:"ai_model"`
// workspace path in local file system
Path string `json:"path"`
// session path in local file system
SessionPath string `json:"session_path"`
// github repo url
Repository string `json:"repository"`
// github branch name
Branch string `json:"branch"`
Issue *github.Issue `json:"issue"`
PullRequest *github.PullRequest `json:"pull_request"`
CreatedAt time.Time `json:"created_at"`
}