geeto 0.11.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/README.md +31 -7
  2. package/lib/api/codex-sdk.d.ts.map +1 -1
  3. package/lib/api/codex-sdk.js +2 -2
  4. package/lib/api/codex-sdk.js.map +1 -1
  5. package/lib/api/copilot-sdk.d.ts.map +1 -1
  6. package/lib/api/copilot-sdk.js +2 -2
  7. package/lib/api/copilot-sdk.js.map +1 -1
  8. package/lib/api/gemini-sdk.d.ts.map +1 -1
  9. package/lib/api/gemini-sdk.js +2 -2
  10. package/lib/api/gemini-sdk.js.map +1 -1
  11. package/lib/api/github.d.ts +14 -0
  12. package/lib/api/github.d.ts.map +1 -1
  13. package/lib/api/github.js +72 -0
  14. package/lib/api/github.js.map +1 -1
  15. package/lib/api/gitlab.d.ts +18 -1
  16. package/lib/api/gitlab.d.ts.map +1 -1
  17. package/lib/api/gitlab.js +73 -0
  18. package/lib/api/gitlab.js.map +1 -1
  19. package/lib/api/groq-sdk.d.ts.map +1 -1
  20. package/lib/api/groq-sdk.js +2 -2
  21. package/lib/api/groq-sdk.js.map +1 -1
  22. package/lib/api/openrouter-sdk.d.ts.map +1 -1
  23. package/lib/api/openrouter-sdk.js +2 -2
  24. package/lib/api/openrouter-sdk.js.map +1 -1
  25. package/lib/api/platform.d.ts +5 -0
  26. package/lib/api/platform.d.ts.map +1 -1
  27. package/lib/api/platform.js +56 -2
  28. package/lib/api/platform.js.map +1 -1
  29. package/lib/index.js +18 -0
  30. package/lib/index.js.map +1 -1
  31. package/lib/types/index.d.ts +9 -0
  32. package/lib/types/index.d.ts.map +1 -1
  33. package/lib/utils/ai-text.d.ts +4 -0
  34. package/lib/utils/ai-text.d.ts.map +1 -1
  35. package/lib/utils/ai-text.js +27 -0
  36. package/lib/utils/ai-text.js.map +1 -1
  37. package/lib/utils/config.d.ts +8 -1
  38. package/lib/utils/config.d.ts.map +1 -1
  39. package/lib/utils/config.js +46 -1
  40. package/lib/utils/config.js.map +1 -1
  41. package/lib/utils/git.js +2 -2
  42. package/lib/utils/git.js.map +1 -1
  43. package/lib/utils/prompts-embedded.d.ts.map +1 -1
  44. package/lib/utils/prompts-embedded.js +38 -4
  45. package/lib/utils/prompts-embedded.js.map +1 -1
  46. package/lib/version.d.ts +1 -1
  47. package/lib/version.js +1 -1
  48. package/lib/workflows/branch.d.ts.map +1 -1
  49. package/lib/workflows/branch.js +1 -12
  50. package/lib/workflows/branch.js.map +1 -1
  51. package/lib/workflows/dry-run.d.ts.map +1 -1
  52. package/lib/workflows/dry-run.js +10 -0
  53. package/lib/workflows/dry-run.js.map +1 -1
  54. package/lib/workflows/review-issue.d.ts +8 -0
  55. package/lib/workflows/review-issue.d.ts.map +1 -0
  56. package/lib/workflows/review-issue.js +214 -0
  57. package/lib/workflows/review-issue.js.map +1 -0
  58. package/lib/workflows/review-pr.d.ts +8 -0
  59. package/lib/workflows/review-pr.d.ts.map +1 -0
  60. package/lib/workflows/review-pr.js +220 -0
  61. package/lib/workflows/review-pr.js.map +1 -0
  62. package/lib/workflows/settings.d.ts.map +1 -1
  63. package/lib/workflows/settings.js +246 -40
  64. package/lib/workflows/settings.js.map +1 -1
  65. package/package.json +33 -22
  66. package/prompts/commit-message-prompt.md +9 -2
  67. package/prompts/issue-prompt-review.md +12 -0
  68. package/prompts/issue-review.with-context.prompt.yml +2 -2
  69. package/prompts/review-prompt.md +13 -0
@@ -0,0 +1,214 @@
1
+ /**
2
+ * AI-powered Issue review workflow
3
+ */
4
+ import { getPlatformAPI } from '../api/platform.js';
5
+ import { select } from '../cli/menu.js';
6
+ import { getConfiguredAIProvider, getModelForProvider, updateModelInState, } from '../utils/ai-workflow.js';
7
+ import { colors } from '../utils/colors.js';
8
+ import { generateTextWithProvider, getAIProviderShortName, isContextLimitFailure, isTransientAIFailure, } from '../utils/git-ai.js';
9
+ import { getPlatformRepoFromRemote, validatePlatformConfig } from '../utils/github-helpers.js';
10
+ import { log } from '../utils/logging.js';
11
+ import { loadPrompt } from '../utils/prompt-loader.js';
12
+ import { loadState, saveState } from '../utils/state.js';
13
+ /**
14
+ * Generate Issue review using AI
15
+ */
16
+ const callAIForIssueReview = async (title, body, author, provider, model, correction) => {
17
+ const promptBase = [
18
+ loadPrompt('issue-prompt-review.md'),
19
+ '',
20
+ `Author: @${author}`,
21
+ `Issue Title: ${title}`,
22
+ `Issue Body:\n${body}`,
23
+ ].join('\n');
24
+ const prompt = correction ? `${promptBase}\n\nAdjustment: ${correction}` : promptBase;
25
+ const providerName = getAIProviderShortName(provider);
26
+ const modelDisplay = model ? ` (${model})` : '';
27
+ const spinner = log.spinner();
28
+ spinner.start(`Analyzing Issue with ${providerName}${modelDisplay}...`);
29
+ try {
30
+ const result = await generateTextWithProvider(provider, prompt, model, model, model ?? 'gemini-2.5-flash', model);
31
+ spinner.stop();
32
+ return result;
33
+ }
34
+ catch {
35
+ spinner.fail('AI analysis failed');
36
+ return null;
37
+ }
38
+ };
39
+ /**
40
+ * Interactive Review Issue workflow
41
+ */
42
+ export const handleReviewIssue = async () => {
43
+ log.banner();
44
+ const platformRepo = getPlatformRepoFromRemote();
45
+ if (!platformRepo)
46
+ return;
47
+ if (!validatePlatformConfig(platformRepo.platform))
48
+ return;
49
+ const api = getPlatformAPI(platformRepo.platform);
50
+ const issueLabelFull = platformRepo.platform === 'gitlab' ? 'GitLab Issue' : 'GitHub Issue';
51
+ log.step(`${colors.cyan}AI ${issueLabelFull} Review${colors.reset}\n`);
52
+ const spinner = log.spinner();
53
+ spinner.start(`Fetching open Issues...`);
54
+ const openIssues = await api.listIssues(platformRepo.projectPath, platformRepo.owner, platformRepo.repo);
55
+ spinner.stop();
56
+ if (openIssues.length === 0) {
57
+ log.warn(`No open Issues found in this repository.`);
58
+ return;
59
+ }
60
+ const issueOptions = openIssues.map((issue) => ({
61
+ label: `#${issue.number} ${issue.title} (${colors.gray}by @${issue.author}${colors.reset})`,
62
+ value: String(issue.number),
63
+ }));
64
+ const selectedIssueValue = await select(`Select an Issue to review:`, issueOptions);
65
+ if (!selectedIssueValue)
66
+ return;
67
+ const selectedIssueNumber = Number.parseInt(selectedIssueValue, 10);
68
+ const selectedIssue = openIssues.find((issue) => issue.number === selectedIssueNumber);
69
+ if (!selectedIssue)
70
+ return;
71
+ const state = loadState();
72
+ let aiProvider = getConfiguredAIProvider(state);
73
+ if (!aiProvider) {
74
+ log.error('AI provider is not configured. Run `gt --settings` to setup AI.');
75
+ return;
76
+ }
77
+ let currentModel = getModelForProvider(aiProvider, state);
78
+ let aiDone = false;
79
+ let reviewText = '';
80
+ let correction = '';
81
+ while (!aiDone) {
82
+ const result = await callAIForIssueReview(selectedIssue.title, selectedIssue.body, selectedIssue.author, aiProvider, currentModel, correction);
83
+ const failed = !result || isTransientAIFailure(result) || isContextLimitFailure(result);
84
+ if (failed) {
85
+ log.warn('AI analysis failed or hit context limits.');
86
+ const failureAction = await select('How would you like to continue?', [
87
+ { label: 'Change model and retry', value: 'change-model' },
88
+ { label: 'Change AI provider and retry', value: 'change-provider' },
89
+ { label: 'Cancel', value: 'cancel' },
90
+ ]);
91
+ if (failureAction === 'change-model') {
92
+ const { chooseModelForProvider } = await import('../utils/git-ai.js');
93
+ const chosen = await chooseModelForProvider(aiProvider, 'Choose model:', 'Back');
94
+ if (chosen && chosen !== 'back') {
95
+ currentModel = chosen;
96
+ updateModelInState(state, aiProvider, chosen);
97
+ }
98
+ correction = '';
99
+ continue;
100
+ }
101
+ if (failureAction === 'change-provider') {
102
+ const prov = await select('Choose AI provider:', [
103
+ { label: 'Gemini', value: 'gemini' },
104
+ { label: 'GitHub Copilot', value: 'copilot' },
105
+ { label: 'OpenRouter', value: 'openrouter' },
106
+ { label: 'Groq', value: 'groq' },
107
+ { label: 'Codex', value: 'codex' },
108
+ { label: 'Back', value: 'back' },
109
+ ]);
110
+ if (prov !== 'back') {
111
+ const { chooseModelForProvider } = await import('../utils/git-ai.js');
112
+ const chosen = await chooseModelForProvider(prov, 'Choose model:', 'Back');
113
+ if (chosen && chosen !== 'back') {
114
+ aiProvider = prov;
115
+ currentModel = chosen;
116
+ if (state) {
117
+ state.aiProvider = aiProvider;
118
+ updateModelInState(state, aiProvider, chosen);
119
+ saveState(state);
120
+ }
121
+ }
122
+ }
123
+ correction = '';
124
+ continue;
125
+ }
126
+ return;
127
+ }
128
+ reviewText = result ?? '';
129
+ console.log('');
130
+ console.log(`${colors.cyan}┌──────────────────────────────────────────────┐${colors.reset}`);
131
+ console.log(`${colors.cyan}│${colors.reset} ${colors.bright}AI Review Findings${colors.reset}`);
132
+ console.log(`${colors.cyan}├──────────────────────────────────────────────┤${colors.reset}`);
133
+ const lines = reviewText.split('\n');
134
+ for (const line of lines) {
135
+ console.log(`${colors.cyan}│${colors.reset} ${line}`);
136
+ }
137
+ console.log(`${colors.cyan}└──────────────────────────────────────────────┘${colors.reset}`);
138
+ console.log('');
139
+ const action = await select(`Accept this Issue review?`, [
140
+ { label: 'Yes, post it', value: 'accept' },
141
+ { label: 'Regenerate', value: 'regenerate' },
142
+ { label: 'Correct AI (give feedback)', value: 'correct' },
143
+ { label: 'Change model', value: 'change-model' },
144
+ { label: 'Change AI provider', value: 'change-provider' },
145
+ { label: 'Discard & cancel', value: 'discard' },
146
+ ]);
147
+ switch (action) {
148
+ case 'accept': {
149
+ aiDone = true;
150
+ break;
151
+ }
152
+ case 'regenerate': {
153
+ correction = '';
154
+ continue;
155
+ }
156
+ case 'correct': {
157
+ const { askQuestion } = await import('../cli/input.js');
158
+ if (process.stdin.isTTY)
159
+ process.stdin.setRawMode(false);
160
+ correction = askQuestion('Corrections for AI: ');
161
+ continue;
162
+ }
163
+ case 'change-model': {
164
+ const { chooseModelForProvider } = await import('../utils/git-ai.js');
165
+ const chosen = await chooseModelForProvider(aiProvider, 'Choose model:', 'Back');
166
+ if (chosen && chosen !== 'back') {
167
+ currentModel = chosen;
168
+ updateModelInState(state, aiProvider, chosen);
169
+ }
170
+ correction = '';
171
+ continue;
172
+ }
173
+ case 'change-provider': {
174
+ const prov = await select('Choose AI provider:', [
175
+ { label: 'Gemini', value: 'gemini' },
176
+ { label: 'GitHub Copilot', value: 'copilot' },
177
+ { label: 'OpenRouter', value: 'openrouter' },
178
+ { label: 'Groq', value: 'groq' },
179
+ { label: 'Codex', value: 'codex' },
180
+ { label: 'Back', value: 'back' },
181
+ ]);
182
+ if (prov !== 'back') {
183
+ const { chooseModelForProvider } = await import('../utils/git-ai.js');
184
+ const chosen = await chooseModelForProvider(prov, 'Choose model:', 'Back');
185
+ if (chosen && chosen !== 'back') {
186
+ aiProvider = prov;
187
+ currentModel = chosen;
188
+ if (state) {
189
+ state.aiProvider = aiProvider;
190
+ updateModelInState(state, aiProvider, chosen);
191
+ saveState(state);
192
+ }
193
+ }
194
+ }
195
+ correction = '';
196
+ continue;
197
+ }
198
+ default: {
199
+ log.info('Review analysis discarded.');
200
+ return;
201
+ }
202
+ }
203
+ }
204
+ spinner.start(`Posting review comment...`);
205
+ const success = await api.createIssueComment(platformRepo.projectPath, selectedIssueNumber, reviewText, platformRepo.owner, platformRepo.repo);
206
+ if (success) {
207
+ spinner.succeed(`Review comment successfully posted!`);
208
+ console.log(` ${colors.cyan}${selectedIssue.url}${colors.reset}\n`);
209
+ }
210
+ else {
211
+ spinner.fail(`Failed to post review comment.`);
212
+ }
213
+ };
214
+ //# sourceMappingURL=review-issue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-issue.js","sourceRoot":"","sources":["../../src/workflows/review-issue.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAC9F,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAExD;;GAEG;AACH,MAAM,oBAAoB,GAAG,KAAK,EAChC,KAAa,EACb,IAAY,EACZ,MAAc,EACd,QAAgE,EAChE,KAAyB,EACzB,UAAmB,EACK,EAAE;IAC1B,MAAM,UAAU,GAAG;QACjB,UAAU,CAAC,wBAAwB,CAAC;QACpC,EAAE;QACF,YAAY,MAAM,EAAE;QACpB,gBAAgB,KAAK,EAAE;QACvB,gBAAgB,IAAI,EAAE;KACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACZ,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,mBAAmB,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAA;IAErF,MAAM,YAAY,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IACrD,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IAE/C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAA;IAC7B,OAAO,CAAC,KAAK,CAAC,wBAAwB,YAAY,GAAG,YAAY,KAAK,CAAC,CAAA;IAEvE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAC3C,QAAQ,EACR,MAAM,EACN,KAAqB,EACrB,KAAwB,EACvB,KAAqB,IAAI,kBAAkB,EAC5C,KAAK,CACN,CAAA;QACD,OAAO,CAAC,IAAI,EAAE,CAAA;QACd,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QAClC,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,IAAmB,EAAE;IACzD,GAAG,CAAC,MAAM,EAAE,CAAA;IAEZ,MAAM,YAAY,GAAG,yBAAyB,EAAE,CAAA;IAChD,IAAI,CAAC,YAAY;QAAE,OAAM;IACzB,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,QAAQ,CAAC;QAAE,OAAM;IAC1D,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;IAEjD,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAA;IAE3F,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,MAAM,cAAc,UAAU,MAAM,CAAC,KAAK,IAAI,CAAC,CAAA;IAEtE,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAA;IAC7B,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;IACxC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,UAAU,CACrC,YAAY,CAAC,WAAW,EACxB,YAAY,CAAC,KAAK,EAClB,YAAY,CAAC,IAAI,CAClB,CAAA;IACD,OAAO,CAAC,IAAI,EAAE,CAAA;IAEd,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,GAAG,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;QACpD,OAAM;IACR,CAAC;IAED,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9C,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG;QAC3F,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;KAC5B,CAAC,CAAC,CAAA;IAEH,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,4BAA4B,EAAE,YAAY,CAAC,CAAA;IACnF,IAAI,CAAC,kBAAkB;QAAE,OAAM;IAE/B,MAAM,mBAAmB,GAAG,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;IACnE,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,mBAAmB,CAAC,CAAA;IACtF,IAAI,CAAC,aAAa;QAAE,OAAM;IAE1B,MAAM,KAAK,GAAG,SAAS,EAAE,CAAA;IACzB,IAAI,UAAU,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAA;IAE/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAA;QAC5E,OAAM;IACR,CAAC;IAED,IAAI,YAAY,GAAG,mBAAmB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IACzD,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,UAAU,GAAG,EAAE,CAAA;IACnB,IAAI,UAAU,GAAG,EAAE,CAAA;IAEnB,OAAO,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,IAAI,EAClB,aAAa,CAAC,MAAM,EACpB,UAAU,EACV,YAAY,EACZ,UAAU,CACX,CAAA;QACD,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,oBAAoB,CAAC,MAAM,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAA;QAEvF,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;YACrD,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,iCAAiC,EAAE;gBACpE,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,cAAc,EAAE;gBAC1D,EAAE,KAAK,EAAE,8BAA8B,EAAE,KAAK,EAAE,iBAAiB,EAAE;gBACnE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;aACrC,CAAC,CAAA;YAEF,IAAI,aAAa,KAAK,cAAc,EAAE,CAAC;gBACrC,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAA;gBACrE,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,CAAA;gBAChF,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBAChC,YAAY,GAAG,MAAM,CAAA;oBACrB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;gBAC/C,CAAC;gBACD,UAAU,GAAG,EAAE,CAAA;gBACf,SAAQ;YACV,CAAC;YAED,IAAI,aAAa,KAAK,iBAAiB,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,qBAAqB,EAAE;oBAC/C,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;oBACpC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE;oBAC7C,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;oBAC5C,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;oBAChC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;oBAClC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;iBACjC,CAAC,CAAA;gBACF,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;oBACpB,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAA;oBACrE,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,IAA8D,EAC9D,eAAe,EACf,MAAM,CACP,CAAA;oBACD,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;wBAChC,UAAU,GAAG,IAA8D,CAAA;wBAC3E,YAAY,GAAG,MAAM,CAAA;wBACrB,IAAI,KAAK,EAAE,CAAC;4BACV,KAAK,CAAC,UAAU,GAAG,UAAU,CAAA;4BAC7B,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;4BAC7C,SAAS,CAAC,KAAK,CAAC,CAAA;wBAClB,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,UAAU,GAAG,EAAE,CAAA;gBACf,SAAQ;YACV,CAAC;YAED,OAAM;QACR,CAAC;QAED,UAAU,GAAG,MAAM,IAAI,EAAE,CAAA;QAEzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,mDAAmD,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;QAC5F,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,qBAAqB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;QAC/F,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,mDAAmD,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;QAC5F,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC,CAAA;QACvD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,mDAAmD,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;QAC5F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAEf,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,2BAA2B,EAAE;YACvD,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE;YAC1C,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;YAC5C,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,SAAS,EAAE;YACzD,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;YAChD,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,iBAAiB,EAAE;YACzD,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE;SAChD,CAAC,CAAA;QAEF,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,GAAG,IAAI,CAAA;gBACb,MAAK;YACP,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,UAAU,GAAG,EAAE,CAAA;gBACf,SAAQ;YACV,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;gBACvD,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK;oBAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;gBACxD,UAAU,GAAG,WAAW,CAAC,sBAAsB,CAAC,CAAA;gBAChD,SAAQ;YACV,CAAC;YACD,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAA;gBACrE,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,CAAA;gBAChF,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBAChC,YAAY,GAAG,MAAM,CAAA;oBACrB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;gBAC/C,CAAC;gBACD,UAAU,GAAG,EAAE,CAAA;gBACf,SAAQ;YACV,CAAC;YACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,qBAAqB,EAAE;oBAC/C,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;oBACpC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE;oBAC7C,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;oBAC5C,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;oBAChC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;oBAClC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;iBACjC,CAAC,CAAA;gBACF,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;oBACpB,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAA;oBACrE,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,IAA8D,EAC9D,eAAe,EACf,MAAM,CACP,CAAA;oBACD,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;wBAChC,UAAU,GAAG,IAA8D,CAAA;wBAC3E,YAAY,GAAG,MAAM,CAAA;wBACrB,IAAI,KAAK,EAAE,CAAC;4BACV,KAAK,CAAC,UAAU,GAAG,UAAU,CAAA;4BAC7B,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;4BAC7C,SAAS,CAAC,KAAK,CAAC,CAAA;wBAClB,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,UAAU,GAAG,EAAE,CAAA;gBACf,SAAQ;YACV,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;gBACtC,OAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAC1C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAC1C,YAAY,CAAC,WAAW,EACxB,mBAAmB,EACnB,UAAU,EACV,YAAY,CAAC,KAAK,EAClB,YAAY,CAAC,IAAI,CAClB,CAAA;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAA;QACtD,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAA;IACtE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;IAChD,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * AI-powered Pull Request / Merge Request review workflow
3
+ */
4
+ /**
5
+ * Interactive Review PR workflow
6
+ */
7
+ export declare const handleReviewPR: () => Promise<void>;
8
+ //# sourceMappingURL=review-pr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-pr.d.ts","sourceRoot":"","sources":["../../src/workflows/review-pr.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkEH;;GAEG;AACH,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,IAAI,CAkOnD,CAAA"}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * AI-powered Pull Request / Merge Request review workflow
3
+ */
4
+ import { getPlatformAPI } from '../api/platform.js';
5
+ import { select } from '../cli/menu.js';
6
+ import { getConfiguredAIProvider, getModelForProvider, updateModelInState, } from '../utils/ai-workflow.js';
7
+ import { colors } from '../utils/colors.js';
8
+ import { generateTextWithProvider, getAIProviderShortName, isContextLimitFailure, isTransientAIFailure, } from '../utils/git-ai.js';
9
+ import { getPlatformRepoFromRemote, validatePlatformConfig } from '../utils/github-helpers.js';
10
+ import { log } from '../utils/logging.js';
11
+ import { loadPrompt } from '../utils/prompt-loader.js';
12
+ import { loadState, saveState } from '../utils/state.js';
13
+ /**
14
+ * Generate PR review using AI
15
+ */
16
+ const callAIForReview = async (diff, provider, model, author, correction) => {
17
+ const promptBase = [
18
+ loadPrompt('review-prompt.md'),
19
+ '',
20
+ `Author: @${author}`,
21
+ `Diff:\n${diff}`,
22
+ ].join('\n');
23
+ const prompt = correction ? `${promptBase}\n\nAdjustment: ${correction}` : promptBase;
24
+ const providerName = getAIProviderShortName(provider);
25
+ const modelDisplay = model ? ` (${model})` : '';
26
+ const spinner = log.spinner();
27
+ spinner.start(`Analyzing PR with ${providerName}${modelDisplay}...`);
28
+ try {
29
+ const result = await generateTextWithProvider(provider, prompt, model, model, model ?? 'gemini-2.5-flash', model);
30
+ spinner.stop();
31
+ return result;
32
+ }
33
+ catch {
34
+ spinner.fail('AI analysis failed');
35
+ return null;
36
+ }
37
+ };
38
+ /**
39
+ * Interactive Review PR workflow
40
+ */
41
+ export const handleReviewPR = async () => {
42
+ log.banner();
43
+ const platformRepo = getPlatformRepoFromRemote();
44
+ if (!platformRepo)
45
+ return;
46
+ if (!validatePlatformConfig(platformRepo.platform))
47
+ return;
48
+ const api = getPlatformAPI(platformRepo.platform);
49
+ const prLabel = platformRepo.platform === 'gitlab' ? 'MR' : 'PR';
50
+ const prLabelFull = platformRepo.platform === 'gitlab' ? 'Merge Request' : 'Pull Request';
51
+ log.step(`${colors.cyan}AI ${prLabelFull} Review${colors.reset}\n`);
52
+ const spinner = log.spinner();
53
+ spinner.start(`Fetching open ${prLabel}s...`);
54
+ const openPRs = await api.listPRs(platformRepo.projectPath, undefined, platformRepo.owner, platformRepo.repo);
55
+ spinner.stop();
56
+ if (openPRs.length === 0) {
57
+ log.warn(`No open ${prLabel}s found in this repository.`);
58
+ return;
59
+ }
60
+ const prOptions = openPRs.map((pr) => ({
61
+ label: `#${pr.number} ${pr.title} (${colors.gray}by @${pr.author}${colors.reset})`,
62
+ value: String(pr.number),
63
+ }));
64
+ const selectedPRValue = await select(`Select a ${prLabel} to review:`, prOptions);
65
+ if (!selectedPRValue)
66
+ return;
67
+ const selectedPRNumber = Number.parseInt(selectedPRValue, 10);
68
+ const selectedPR = openPRs.find((pr) => pr.number === selectedPRNumber);
69
+ if (!selectedPR)
70
+ return;
71
+ spinner.start(`Downloading diff for ${prLabel} #${selectedPRNumber}...`);
72
+ const diff = await api.getPRDiff(platformRepo.projectPath, selectedPRNumber, platformRepo.owner, platformRepo.repo);
73
+ spinner.stop();
74
+ if (!diff) {
75
+ log.error(`Could not download diff for ${prLabel} #${selectedPRNumber}.`);
76
+ return;
77
+ }
78
+ const state = loadState();
79
+ let aiProvider = getConfiguredAIProvider(state);
80
+ if (!aiProvider) {
81
+ log.error('AI provider is not configured. Run `gt --settings` to setup AI.');
82
+ return;
83
+ }
84
+ let currentModel = getModelForProvider(aiProvider, state);
85
+ let aiDone = false;
86
+ let reviewText = '';
87
+ let correction = '';
88
+ while (!aiDone) {
89
+ const result = await callAIForReview(diff, aiProvider, currentModel, selectedPR.author, correction);
90
+ const failed = !result || isTransientAIFailure(result) || isContextLimitFailure(result);
91
+ if (failed) {
92
+ log.warn('AI analysis failed or hit context limits.');
93
+ const failureAction = await select('How would you like to continue?', [
94
+ { label: 'Change model and retry', value: 'change-model' },
95
+ { label: 'Change AI provider and retry', value: 'change-provider' },
96
+ { label: 'Cancel', value: 'cancel' },
97
+ ]);
98
+ if (failureAction === 'change-model') {
99
+ const { chooseModelForProvider } = await import('../utils/git-ai.js');
100
+ const chosen = await chooseModelForProvider(aiProvider, 'Choose model:', 'Back');
101
+ if (chosen && chosen !== 'back') {
102
+ currentModel = chosen;
103
+ updateModelInState(state, aiProvider, chosen);
104
+ }
105
+ correction = '';
106
+ continue;
107
+ }
108
+ if (failureAction === 'change-provider') {
109
+ const prov = await select('Choose AI provider:', [
110
+ { label: 'Gemini', value: 'gemini' },
111
+ { label: 'GitHub Copilot', value: 'copilot' },
112
+ { label: 'OpenRouter', value: 'openrouter' },
113
+ { label: 'Groq', value: 'groq' },
114
+ { label: 'Codex', value: 'codex' },
115
+ { label: 'Back', value: 'back' },
116
+ ]);
117
+ if (prov !== 'back') {
118
+ const { chooseModelForProvider } = await import('../utils/git-ai.js');
119
+ const chosen = await chooseModelForProvider(prov, 'Choose model:', 'Back');
120
+ if (chosen && chosen !== 'back') {
121
+ aiProvider = prov;
122
+ currentModel = chosen;
123
+ if (state) {
124
+ state.aiProvider = aiProvider;
125
+ updateModelInState(state, aiProvider, chosen);
126
+ saveState(state);
127
+ }
128
+ }
129
+ }
130
+ correction = '';
131
+ continue;
132
+ }
133
+ return;
134
+ }
135
+ reviewText = result ?? '';
136
+ console.log('');
137
+ console.log(`${colors.cyan}┌──────────────────────────────────────────────┐${colors.reset}`);
138
+ console.log(`${colors.cyan}│${colors.reset} ${colors.bright}AI Review Findings${colors.reset}`);
139
+ console.log(`${colors.cyan}├──────────────────────────────────────────────┤${colors.reset}`);
140
+ const lines = reviewText.split('\n');
141
+ for (const line of lines) {
142
+ console.log(`${colors.cyan}│${colors.reset} ${line}`);
143
+ }
144
+ console.log(`${colors.cyan}└──────────────────────────────────────────────┘${colors.reset}`);
145
+ console.log('');
146
+ const action = await select(`Accept this ${prLabel} review?`, [
147
+ { label: 'Yes, post it', value: 'accept' },
148
+ { label: 'Regenerate', value: 'regenerate' },
149
+ { label: 'Correct AI (give feedback)', value: 'correct' },
150
+ { label: 'Change model', value: 'change-model' },
151
+ { label: 'Change AI provider', value: 'change-provider' },
152
+ { label: 'Discard & cancel', value: 'discard' },
153
+ ]);
154
+ switch (action) {
155
+ case 'accept': {
156
+ aiDone = true;
157
+ break;
158
+ }
159
+ case 'regenerate': {
160
+ correction = '';
161
+ continue;
162
+ }
163
+ case 'correct': {
164
+ const { askQuestion } = await import('../cli/input.js');
165
+ if (process.stdin.isTTY)
166
+ process.stdin.setRawMode(false);
167
+ correction = askQuestion('Corrections for AI: ');
168
+ continue;
169
+ }
170
+ case 'change-model': {
171
+ const { chooseModelForProvider } = await import('../utils/git-ai.js');
172
+ const chosen = await chooseModelForProvider(aiProvider, 'Choose model:', 'Back');
173
+ if (chosen && chosen !== 'back') {
174
+ currentModel = chosen;
175
+ updateModelInState(state, aiProvider, chosen);
176
+ }
177
+ correction = '';
178
+ continue;
179
+ }
180
+ case 'change-provider': {
181
+ const prov = await select('Choose AI provider:', [
182
+ { label: 'Gemini', value: 'gemini' },
183
+ { label: 'GitHub Copilot', value: 'copilot' },
184
+ { label: 'OpenRouter', value: 'openrouter' },
185
+ { label: 'Groq', value: 'groq' },
186
+ { label: 'Codex', value: 'codex' },
187
+ { label: 'Back', value: 'back' },
188
+ ]);
189
+ if (prov !== 'back') {
190
+ const { chooseModelForProvider } = await import('../utils/git-ai.js');
191
+ const chosen = await chooseModelForProvider(prov, 'Choose model:', 'Back');
192
+ if (chosen && chosen !== 'back') {
193
+ aiProvider = prov;
194
+ currentModel = chosen;
195
+ if (state) {
196
+ state.aiProvider = aiProvider;
197
+ updateModelInState(state, aiProvider, chosen);
198
+ }
199
+ }
200
+ }
201
+ correction = '';
202
+ continue;
203
+ }
204
+ default: {
205
+ log.info('Review analysis discarded.');
206
+ return;
207
+ }
208
+ }
209
+ }
210
+ spinner.start(`Posting review comment...`);
211
+ const success = await api.createPRComment(platformRepo.projectPath, selectedPRNumber, reviewText, platformRepo.owner, platformRepo.repo);
212
+ if (success) {
213
+ spinner.succeed(`Review comment successfully posted!`);
214
+ console.log(` ${colors.cyan}${selectedPR.url}${colors.reset}\n`);
215
+ }
216
+ else {
217
+ spinner.fail(`Failed to post review comment.`);
218
+ }
219
+ };
220
+ //# sourceMappingURL=review-pr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-pr.js","sourceRoot":"","sources":["../../src/workflows/review-pr.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/workflows/settings.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiOH,QAAA,MAAM,yBAAyB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CAuBjE,CAAA;AAED,QAAA,MAAM,sBAAsB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CAuB9D,CAAA;AAED;;GAEG;AACH,QAAA,MAAM,8BAA8B,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CA0DtE,CAAA;AAofD,QAAA,MAAM,uBAAuB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CAsC/D,CAAA;AAED;;GAEG;AACH,QAAA,MAAM,wBAAwB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CA0GhE,CAAA;AACD,QAAA,MAAM,oBAAoB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CA6B5D,CAAA;AAED,QAAA,MAAM,mBAAmB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CAmD3D,CAAA;AAED,QAAA,MAAM,mBAAmB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CA+C3D,CAAA;AAED,QAAA,MAAM,uBAAuB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CA2C/D,CAAA;AAED,QAAA,MAAM,iBAAiB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CAyCzD,CAAA;AAwED,eAAO,MAAM,gBAAgB,qBA6I5B,CAAA;AAED,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,8BAA8B,EAC9B,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,GACpB,CAAA"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/workflows/settings.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmOH,QAAA,MAAM,yBAAyB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CAuBjE,CAAA;AAED,QAAA,MAAM,sBAAsB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CAuB9D,CAAA;AAED;;GAEG;AACH,QAAA,MAAM,8BAA8B,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CA0DtE,CAAA;AAofD,QAAA,MAAM,uBAAuB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CAsC/D,CAAA;AAED;;GAEG;AACH,QAAA,MAAM,wBAAwB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CA0GhE,CAAA;AACD,QAAA,MAAM,oBAAoB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CA6B5D,CAAA;AAED,QAAA,MAAM,mBAAmB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CAmD3D,CAAA;AAED,QAAA,MAAM,mBAAmB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CA+C3D,CAAA;AAED,QAAA,MAAM,uBAAuB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CA2C/D,CAAA;AAED,QAAA,MAAM,iBAAiB,QAAa,OAAO,CAAC,OAAO,GAAG,IAAI,CAyCzD,CAAA;AAuJD,eAAO,MAAM,gBAAgB,qBAiQ5B,CAAA;AAED,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,8BAA8B,EAC9B,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,GACpB,CAAA"}