-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathflags.go
More file actions
196 lines (169 loc) · 4.83 KB
/
flags.go
File metadata and controls
196 lines (169 loc) · 4.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
package main
import "github.com/urfave/cli"
// AI provider flags
var providerFlag = cli.StringFlag{
Name: "provider, p",
Value: "openai",
Usage: "AI provider: openai, anthropic, gemini",
EnvVar: "INPUT_AI_PROVIDER,AI_PROVIDER",
}
var modelFlag = cli.StringFlag{
Name: "model, m",
Value: "gpt-4",
Usage: "AI model to use",
EnvVar: "INPUT_AI_MODEL,AI_MODEL",
}
var apiKeyFlag = cli.StringFlag{
Name: "api-key",
Usage: "API key for the AI provider",
EnvVar: "INPUT_AI_API_KEY,AI_API_KEY",
}
var temperatureFlag = cli.Float64Flag{
Name: "temperature, t",
Value: 0,
Usage: "Temperature for AI model (0-1)",
EnvVar: "INPUT_AI_TEMPERATURE,AI_TEMPERATURE",
}
// GitHub flags
var githubTokenFlag = cli.StringFlag{
Name: "github-token",
Usage: "GitHub token for API access",
EnvVar: "INPUT_GITHUB_TOKEN,GITHUB_TOKEN",
}
var repoFlag = cli.StringFlag{
Name: "repo, r",
Usage: "Repository in owner/repo format",
EnvVar: "GITHUB_REPOSITORY",
}
var prFlag = cli.IntFlag{
Name: "pr",
Usage: "Pull request number",
EnvVar: "PR_NUMBER",
}
// Review behavior flags
var approveFlag = cli.BoolTFlag{
Name: "approve-reviews",
Usage: "Allow approving/requesting changes on PRs (default: true)",
EnvVar: "INPUT_APPROVE_REVIEWS,APPROVE_REVIEWS",
}
var maxCommentsFlag = cli.IntFlag{
Name: "max-comments",
Value: 25,
Usage: "Maximum number of line comments (0 = unlimited)",
EnvVar: "INPUT_MAX_COMMENTS,MAX_COMMENTS",
}
var incrementalFlag = cli.BoolTFlag{
Name: "incremental",
Usage: "Only review new changes since last bot review (default: true)",
EnvVar: "INPUT_INCREMENTAL,INCREMENTAL",
}
var excludePatternsFlag = cli.StringFlag{
Name: "exclude-patterns",
Value: "**/*.lock,**/*.json,**/*.md",
Usage: "Comma-separated glob patterns to exclude",
EnvVar: "INPUT_EXCLUDE_PATTERNS,EXCLUDE_PATTERNS",
}
var contextFilesFlag = cli.StringFlag{
Name: "context-files",
Value: "package.json,README.md",
Usage: "Comma-separated files to include as AI context",
EnvVar: "INPUT_CONTEXT_FILES,CONTEXT_FILES",
}
var projectContextFlag = cli.StringFlag{
Name: "project-context",
Usage: "Additional context about the project",
EnvVar: "INPUT_PROJECT_CONTEXT,PROJECT_CONTEXT",
}
// Persona flags
var personaFlag = cli.StringFlag{
Name: "persona",
Usage: "Reviewer persona: bob, robert, maya, eli, or leave empty for default",
EnvVar: "INPUT_PERSONA,PERSONA",
}
var customPersonaFlag = cli.StringFlag{
Name: "custom-persona",
Usage: `Custom persona JSON: '{"name":"...","prompt":"..."}'`,
EnvVar: "INPUT_CUSTOM_PERSONA,CUSTOM_PERSONA",
}
var customPersonaFileFlag = cli.StringFlag{
Name: "custom-persona-file",
Usage: "Path to custom persona JSON file",
EnvVar: "INPUT_CUSTOM_PERSONA_FILE,CUSTOM_PERSONA_FILE",
}
var strictChangesFlag = cli.BoolFlag{
Name: "strict-changes",
Usage: "Only request changes for syntax errors or degradation of existing functionality",
EnvVar: "INPUT_STRICT_CHANGES,STRICT_CHANGES",
}
// Review rules flags
var reviewRulesFlag = cli.StringFlag{
Name: "review-rules",
Usage: "Comment rules preset: concise (default), thorough, none (disable rules)",
EnvVar: "INPUT_REVIEW_RULES,REVIEW_RULES",
}
var customRulesFlag = cli.StringFlag{
Name: "custom-rules",
Usage: "Custom review rules text (appended to system prompt, overrides --review-rules)",
EnvVar: "INPUT_CUSTOM_RULES,CUSTOM_RULES",
}
var customRulesFileFlag = cli.StringFlag{
Name: "custom-rules-file",
Usage: "Path to a file containing custom review rules",
EnvVar: "INPUT_CUSTOM_RULES_FILE,CUSTOM_RULES_FILE",
}
// Language flag
var languageFlag = cli.StringFlag{
Name: "language, l",
Usage: "Language for review comments and summary (e.g. Portuguese, Spanish, French)",
EnvVar: "INPUT_LANGUAGE,LANGUAGE",
}
// Report flag
var saveReportFlag = cli.StringFlag{
Name: "save-report",
Usage: "Save review report as JSON to this file path (includes learning insights)",
EnvVar: "SAVE_REPORT",
}
// Output flags
var showTokenUsageFlag = cli.BoolFlag{
Name: "show-token-usage",
Usage: "Append AI token usage metrics to the review summary",
EnvVar: "SHOW_TOKEN_USAGE",
}
var dryRunFlag = cli.BoolFlag{
Name: "dry-run",
Usage: "Print review JSON instead of posting to GitHub",
EnvVar: "DRY_RUN",
}
var verboseFlag = cli.BoolFlag{
Name: "verbose, v",
Usage: "Enable verbose logging",
EnvVar: "VERBOSE",
}
// reviewFlags is the full set of flags for the review command
var reviewFlags = []cli.Flag{
providerFlag,
modelFlag,
apiKeyFlag,
temperatureFlag,
githubTokenFlag,
repoFlag,
prFlag,
approveFlag,
maxCommentsFlag,
incrementalFlag,
excludePatternsFlag,
contextFilesFlag,
projectContextFlag,
personaFlag,
customPersonaFlag,
customPersonaFileFlag,
languageFlag,
saveReportFlag,
strictChangesFlag,
reviewRulesFlag,
customRulesFlag,
customRulesFileFlag,
showTokenUsageFlag,
dryRunFlag,
verboseFlag,
}