geeto 0.4.4 → 0.6.1

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 (115) hide show
  1. package/README.md +23 -10
  2. package/lib/api/copilot.d.ts +3 -3
  3. package/lib/api/copilot.js +3 -3
  4. package/lib/cli/input.d.ts +21 -18
  5. package/lib/cli/input.d.ts.map +1 -1
  6. package/lib/cli/input.js +174 -372
  7. package/lib/cli/input.js.map +1 -1
  8. package/lib/cli/menu.d.ts.map +1 -1
  9. package/lib/cli/menu.js +83 -4
  10. package/lib/cli/menu.js.map +1 -1
  11. package/lib/core/copilot-setup.d.ts +2 -2
  12. package/lib/core/copilot-setup.d.ts.map +1 -1
  13. package/lib/core/copilot-setup.js +16 -19
  14. package/lib/core/copilot-setup.js.map +1 -1
  15. package/lib/core/setup.d.ts +1 -1
  16. package/lib/core/setup.js +1 -1
  17. package/lib/index.js +203 -3
  18. package/lib/index.js.map +1 -1
  19. package/lib/utils/branch-naming.d.ts.map +1 -1
  20. package/lib/utils/branch-naming.js +12 -6
  21. package/lib/utils/branch-naming.js.map +1 -1
  22. package/lib/utils/dry-run.d.ts +21 -0
  23. package/lib/utils/dry-run.d.ts.map +1 -0
  24. package/lib/utils/dry-run.js +102 -0
  25. package/lib/utils/dry-run.js.map +1 -0
  26. package/lib/utils/exec.d.ts.map +1 -1
  27. package/lib/utils/exec.js +13 -0
  28. package/lib/utils/exec.js.map +1 -1
  29. package/lib/utils/git-ai.d.ts.map +1 -1
  30. package/lib/utils/git-ai.js +40 -21
  31. package/lib/utils/git-ai.js.map +1 -1
  32. package/lib/utils/git-errors.d.ts.map +1 -1
  33. package/lib/utils/git-errors.js +15 -2
  34. package/lib/utils/git-errors.js.map +1 -1
  35. package/lib/utils/menu-builders.js +1 -1
  36. package/lib/utils/menu-builders.js.map +1 -1
  37. package/lib/utils/scramble.d.ts +117 -0
  38. package/lib/utils/scramble.d.ts.map +1 -0
  39. package/lib/utils/scramble.js +317 -0
  40. package/lib/utils/scramble.js.map +1 -0
  41. package/lib/version.d.ts +1 -1
  42. package/lib/version.js +1 -1
  43. package/lib/workflows/abort.d.ts +9 -0
  44. package/lib/workflows/abort.d.ts.map +1 -0
  45. package/lib/workflows/abort.js +158 -0
  46. package/lib/workflows/abort.js.map +1 -0
  47. package/lib/workflows/ai-provider.js +1 -1
  48. package/lib/workflows/ai-provider.js.map +1 -1
  49. package/lib/workflows/alias.d.ts +6 -0
  50. package/lib/workflows/alias.d.ts.map +1 -0
  51. package/lib/workflows/alias.js +420 -0
  52. package/lib/workflows/alias.js.map +1 -0
  53. package/lib/workflows/amend.d.ts.map +1 -1
  54. package/lib/workflows/amend.js +9 -4
  55. package/lib/workflows/amend.js.map +1 -1
  56. package/lib/workflows/branch-helpers.js +2 -2
  57. package/lib/workflows/branch-helpers.js.map +1 -1
  58. package/lib/workflows/branch-utils.d.ts.map +1 -1
  59. package/lib/workflows/branch-utils.js +4 -3
  60. package/lib/workflows/branch-utils.js.map +1 -1
  61. package/lib/workflows/branch.js +2 -2
  62. package/lib/workflows/branch.js.map +1 -1
  63. package/lib/workflows/cleanup.js +3 -3
  64. package/lib/workflows/cleanup.js.map +1 -1
  65. package/lib/workflows/commit.d.ts.map +1 -1
  66. package/lib/workflows/commit.js +58 -6
  67. package/lib/workflows/commit.js.map +1 -1
  68. package/lib/workflows/dry-run.d.ts +5 -0
  69. package/lib/workflows/dry-run.d.ts.map +1 -0
  70. package/lib/workflows/dry-run.js +127 -0
  71. package/lib/workflows/dry-run.js.map +1 -0
  72. package/lib/workflows/fetch.d.ts +9 -0
  73. package/lib/workflows/fetch.d.ts.map +1 -0
  74. package/lib/workflows/fetch.js +118 -0
  75. package/lib/workflows/fetch.js.map +1 -0
  76. package/lib/workflows/issue.d.ts.map +1 -1
  77. package/lib/workflows/issue.js +317 -72
  78. package/lib/workflows/issue.js.map +1 -1
  79. package/lib/workflows/main-steps.d.ts.map +1 -1
  80. package/lib/workflows/main-steps.js +144 -99
  81. package/lib/workflows/main-steps.js.map +1 -1
  82. package/lib/workflows/main.d.ts.map +1 -1
  83. package/lib/workflows/main.js +14 -6
  84. package/lib/workflows/main.js.map +1 -1
  85. package/lib/workflows/pr.d.ts.map +1 -1
  86. package/lib/workflows/pr.js +307 -39
  87. package/lib/workflows/pr.js.map +1 -1
  88. package/lib/workflows/prune.d.ts +9 -0
  89. package/lib/workflows/prune.d.ts.map +1 -0
  90. package/lib/workflows/prune.js +116 -0
  91. package/lib/workflows/prune.js.map +1 -0
  92. package/lib/workflows/pull.d.ts +9 -0
  93. package/lib/workflows/pull.d.ts.map +1 -0
  94. package/lib/workflows/pull.js +281 -0
  95. package/lib/workflows/pull.js.map +1 -0
  96. package/lib/workflows/release.d.ts.map +1 -1
  97. package/lib/workflows/release.js +50 -38
  98. package/lib/workflows/release.js.map +1 -1
  99. package/lib/workflows/repo-settings.js +2 -2
  100. package/lib/workflows/repo-settings.js.map +1 -1
  101. package/lib/workflows/revert.d.ts +9 -0
  102. package/lib/workflows/revert.d.ts.map +1 -0
  103. package/lib/workflows/revert.js +77 -0
  104. package/lib/workflows/revert.js.map +1 -0
  105. package/lib/workflows/reword.d.ts +9 -0
  106. package/lib/workflows/reword.d.ts.map +1 -0
  107. package/lib/workflows/reword.js +722 -0
  108. package/lib/workflows/reword.js.map +1 -0
  109. package/lib/workflows/settings.js +1 -1
  110. package/lib/workflows/settings.js.map +1 -1
  111. package/lib/workflows/status.d.ts +9 -0
  112. package/lib/workflows/status.d.ts.map +1 -0
  113. package/lib/workflows/status.js +164 -0
  114. package/lib/workflows/status.js.map +1 -0
  115. package/package.json +13 -13
@@ -0,0 +1,317 @@
1
+ /**
2
+ * Hacker-style scramble/decode text animation for terminal.
3
+ *
4
+ * Characters start as random symbols and gradually resolve
5
+ * from left to right into the target text.
6
+ */
7
+ import { colors } from './colors.js';
8
+ // Characters used for the scramble effect
9
+ const GLYPHS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*<>{}[]|/~';
10
+ const randomGlyph = () => GLYPHS[Math.floor(Math.random() * GLYPHS.length)] ?? '?';
11
+ /** Build a single frame: resolved chars + scrambled remainder. */
12
+ const buildFrame = (text, revealedCount) => {
13
+ let frame = '';
14
+ const chars = [...text];
15
+ for (const [i, ch] of chars.entries()) {
16
+ if (ch === ' ') {
17
+ frame += ' ';
18
+ }
19
+ else if (i < revealedCount) {
20
+ frame += ch;
21
+ }
22
+ else {
23
+ frame += randomGlyph();
24
+ }
25
+ }
26
+ return frame;
27
+ };
28
+ /**
29
+ * Animate a single line of text with a scramble→reveal effect.
30
+ *
31
+ * Uses `\r` overwrite so the cursor stays on one line.
32
+ * Returns a promise that resolves when the animation completes.
33
+ */
34
+ export const scrambleLine = (text, opts = {}) => {
35
+ const frameDelay = opts.frameDelay ?? 35;
36
+ const charsPerTick = opts.charsPerTick ?? 1;
37
+ const scrambleFrames = opts.scrambleFrames ?? 6;
38
+ return new Promise((resolve) => {
39
+ let revealed = 0;
40
+ let scrambleCount = 0;
41
+ process.stdout.write('\u001B[?25l'); // Hide cursor
42
+ const tick = setInterval(() => {
43
+ // Phase 1: pure scramble (no characters revealed yet)
44
+ if (scrambleCount < scrambleFrames) {
45
+ const frame = buildFrame(text, 0);
46
+ process.stdout.write(`\r ${colors.gray}${frame}${colors.reset}`);
47
+ scrambleCount++;
48
+ return;
49
+ }
50
+ // Phase 2: gradual reveal from left to right
51
+ revealed = Math.min(revealed + charsPerTick, text.length);
52
+ const resolvedPart = text.slice(0, revealed);
53
+ const scrambledPart = buildFrame(text.slice(revealed), 0);
54
+ // Dim → bright transition: resolved is bright, rest is dim
55
+ process.stdout.write(`\r ${colors.cyan}${colors.bright}${resolvedPart}${colors.reset}${colors.gray}${scrambledPart}${colors.reset}`);
56
+ if (revealed >= text.length) {
57
+ clearInterval(tick);
58
+ // Final: fully revealed in bright cyan
59
+ process.stdout.write(`\r ${colors.cyan}${colors.bright}${text}${colors.reset}\n`);
60
+ process.stdout.write('\u001B[?25h'); // Show cursor
61
+ resolve();
62
+ }
63
+ }, frameDelay);
64
+ });
65
+ };
66
+ /**
67
+ * Run a sequence of scramble animations.
68
+ *
69
+ * Each step animates on its own line (in-place overwrite),
70
+ * then moves down for the next step.
71
+ *
72
+ * Example:
73
+ * ```
74
+ * await scrambleSequence([
75
+ * { text: 'collecting...' },
76
+ * { text: 'compressing...' },
77
+ * { text: 'delivering...' },
78
+ * { text: 'done ✓', pauseAfter: 0 },
79
+ * ])
80
+ * ```
81
+ */
82
+ export const scrambleSequence = async (steps, opts = {}) => {
83
+ for (const step of steps) {
84
+ await scrambleLine(step.text, opts);
85
+ const pause = step.pauseAfter ?? 200;
86
+ if (pause > 0) {
87
+ await new Promise((resolve) => setTimeout(resolve, pause));
88
+ }
89
+ }
90
+ };
91
+ /**
92
+ * Multi-step scramble progress indicator.
93
+ *
94
+ * Animates a sequence of text lines with scramble→reveal, each staying
95
+ * on screen once decoded. The final step enters an idle-glitch mode
96
+ * with an elapsed-time counter until `.stop()` / `.succeed()` is called.
97
+ *
98
+ * Steps that include a `countTo` value get an extra count-up animation
99
+ * after the base text is revealed:
100
+ * `collecting objects (1)...` → `(45)...` → `(89)...`
101
+ *
102
+ * API (drop-in replacement for `log.spinner()`):
103
+ * `.start(steps)`, `.stop()`, `.succeed(text)`, `.fail(text)`
104
+ */
105
+ export class ScrambleProgress {
106
+ constructor() {
107
+ this.interval = null;
108
+ this.stepInputs = [];
109
+ this.currentStep = 0;
110
+ this.revealed = 0;
111
+ this.scrambleCount = 0;
112
+ this.startTime = 0;
113
+ this.pauseCount = 0;
114
+ this.countFrames = 0;
115
+ this.phase = 'scramble';
116
+ /** Number of step lines printed with \\n (above the current animated line). */
117
+ this.linesAbove = 0;
118
+ this.scrambleFrames = 4;
119
+ this.charsPerTick = 2;
120
+ this.frameDelay = 35;
121
+ this.pauseFrames = 5;
122
+ this.countTotalFrames = 10;
123
+ }
124
+ /** Check if a step input is a single-counter step. */
125
+ isSingleCount(input) {
126
+ return typeof input !== 'string' && 'countTo' in input;
127
+ }
128
+ /** Check if a step input is a multi-counter step. */
129
+ isMultiCount(input) {
130
+ return typeof input !== 'string' && 'counts' in input;
131
+ }
132
+ /** Get the base display text for a step (without count). */
133
+ getBaseText(idx) {
134
+ const input = this.stepInputs[idx];
135
+ if (!input)
136
+ return '';
137
+ return typeof input === 'string' ? input : `${input.text}...`;
138
+ }
139
+ /** Get the full display text for a step (with count at given progress 0–1). */
140
+ getFullText(idx, progress = 1) {
141
+ const input = this.stepInputs[idx];
142
+ if (!input)
143
+ return '';
144
+ if (typeof input === 'string')
145
+ return input;
146
+ if (this.isSingleCount(input)) {
147
+ const suffix = input.suffix ?? '';
148
+ const value = Math.ceil(input.countTo * progress);
149
+ return `${input.text} (${value}${suffix})...`;
150
+ }
151
+ if (this.isMultiCount(input)) {
152
+ const parts = input.counts.map((c) => {
153
+ const val = Math.ceil(c.to * progress);
154
+ return `${c.prefix ?? ''}${val}${c.suffix ?? ''}`;
155
+ });
156
+ return `${input.text} (${parts.join(', ')})...`;
157
+ }
158
+ return `${input.text}...`;
159
+ }
160
+ /** Check if a step has a count-up animation. */
161
+ hasCount(idx) {
162
+ const input = this.stepInputs[idx];
163
+ if (!input || typeof input === 'string')
164
+ return false;
165
+ if (this.isSingleCount(input))
166
+ return input.countTo > 0;
167
+ if (this.isMultiCount(input))
168
+ return input.counts.length > 0;
169
+ return false;
170
+ }
171
+ start(steps) {
172
+ this.stepInputs = steps;
173
+ this.currentStep = 0;
174
+ this.revealed = 0;
175
+ this.scrambleCount = 0;
176
+ this.pauseCount = 0;
177
+ this.countFrames = 0;
178
+ this.phase = 'scramble';
179
+ this.linesAbove = 0;
180
+ this.startTime = Date.now();
181
+ process.stdout.write('\u001B[?25l'); // Hide cursor
182
+ this.interval = setInterval(() => {
183
+ if (this.currentStep >= this.stepInputs.length)
184
+ return;
185
+ const baseText = this.getBaseText(this.currentStep);
186
+ const isLastStep = this.currentStep >= this.stepInputs.length - 1;
187
+ switch (this.phase) {
188
+ case 'scramble': {
189
+ const frame = buildFrame(baseText, 0);
190
+ process.stdout.write(`\r ${colors.gray}${frame}${colors.reset}\u001B[K`);
191
+ this.scrambleCount++;
192
+ if (this.scrambleCount >= this.scrambleFrames) {
193
+ this.phase = 'reveal';
194
+ }
195
+ break;
196
+ }
197
+ case 'reveal': {
198
+ this.revealed = Math.min(this.revealed + this.charsPerTick, baseText.length);
199
+ const resolved = baseText.slice(0, this.revealed);
200
+ const scrambled = buildFrame(baseText.slice(this.revealed), 0);
201
+ process.stdout.write(`\r ${colors.cyan}${colors.bright}${resolved}${colors.reset}${colors.gray}${scrambled}${colors.reset}\u001B[K`);
202
+ if (this.revealed >= baseText.length) {
203
+ // If step has count, enter count phase; otherwise pause/idle
204
+ if (this.hasCount(this.currentStep)) {
205
+ this.phase = 'count';
206
+ this.countFrames = 0;
207
+ }
208
+ else {
209
+ this.phase = isLastStep ? 'idle' : 'pause';
210
+ this.pauseCount = 0;
211
+ }
212
+ }
213
+ break;
214
+ }
215
+ case 'count': {
216
+ this.countFrames++;
217
+ // Linear progress from 0 to 1
218
+ const progress = Math.min(this.countFrames / this.countTotalFrames, 1);
219
+ const displayText = this.getFullText(this.currentStep, progress);
220
+ process.stdout.write(`\r ${colors.cyan}${colors.bright}${displayText}${colors.reset}\u001B[K`);
221
+ if (progress >= 1) {
222
+ this.phase = isLastStep ? 'idle' : 'pause';
223
+ this.pauseCount = 0;
224
+ }
225
+ break;
226
+ }
227
+ case 'pause': {
228
+ this.pauseCount++;
229
+ if (this.pauseCount >= this.pauseFrames) {
230
+ // Finalise current line and advance
231
+ const finalText = this.hasCount(this.currentStep)
232
+ ? this.getFullText(this.currentStep)
233
+ : baseText;
234
+ process.stdout.write(`\r ${colors.cyan}${colors.bright}${finalText}${colors.reset}\u001B[K\n`);
235
+ this.linesAbove++;
236
+ this.currentStep++;
237
+ this.revealed = 0;
238
+ this.scrambleCount = 0;
239
+ this.countFrames = 0;
240
+ this.phase = 'scramble';
241
+ }
242
+ break;
243
+ }
244
+ case 'idle': {
245
+ const elapsed = Math.floor((Date.now() - this.startTime) / 1000);
246
+ const timeDisplay = elapsed > 0 ? ` ${colors.gray}(${elapsed}s)${colors.reset}` : '';
247
+ const idleText = this.hasCount(this.currentStep)
248
+ ? this.getFullText(this.currentStep)
249
+ : baseText;
250
+ const chars = [...idleText];
251
+ const glitchCount = 1 + Math.floor(Math.random() * 2);
252
+ for (let g = 0; g < glitchCount; g++) {
253
+ const pos = Math.floor(Math.random() * chars.length);
254
+ if (chars[pos] !== ' ') {
255
+ chars[pos] = randomGlyph();
256
+ }
257
+ }
258
+ process.stdout.write(`\r ${colors.cyan}${colors.bright}${chars.join('')}${colors.reset}${timeDisplay}\u001B[K`);
259
+ break;
260
+ }
261
+ }
262
+ }, this.frameDelay);
263
+ }
264
+ cleanup() {
265
+ if (this.interval) {
266
+ clearInterval(this.interval);
267
+ this.interval = null;
268
+ }
269
+ // Erase current animation line
270
+ process.stdout.write('\r\u001B[K');
271
+ // Move up and erase each previously finalised line
272
+ for (let i = 0; i < this.linesAbove; i++) {
273
+ process.stdout.write('\u001B[A\u001B[K');
274
+ }
275
+ process.stdout.write('\u001B[?25h'); // Show cursor
276
+ }
277
+ /**
278
+ * Append more steps to a running animation.
279
+ *
280
+ * If the animation is currently in `idle` (last step glitching),
281
+ * it will finalise that line and start animating the new steps.
282
+ */
283
+ addSteps(steps) {
284
+ if (steps.length === 0)
285
+ return;
286
+ const wasLastStep = this.currentStep >= this.stepInputs.length - 1;
287
+ this.stepInputs.push(...steps);
288
+ // If we were idling on the last step, transition to pause→next
289
+ if (wasLastStep && this.phase === 'idle') {
290
+ const currentText = this.hasCount(this.currentStep)
291
+ ? this.getFullText(this.currentStep)
292
+ : this.getBaseText(this.currentStep);
293
+ process.stdout.write(`\r ${colors.cyan}${colors.bright}${currentText}${colors.reset}\u001B[K\n`);
294
+ this.linesAbove++;
295
+ this.currentStep++;
296
+ this.revealed = 0;
297
+ this.scrambleCount = 0;
298
+ this.countFrames = 0;
299
+ this.phase = 'scramble';
300
+ }
301
+ }
302
+ /** Stop the animation silently (clear current line). */
303
+ stop() {
304
+ this.cleanup();
305
+ }
306
+ /** Stop and print a green `✓ message`. */
307
+ succeed(message) {
308
+ this.cleanup();
309
+ console.log(`${colors.green}✓${colors.reset} ${message}`);
310
+ }
311
+ /** Stop and print a red `✗ message`. */
312
+ fail(message) {
313
+ this.cleanup();
314
+ console.log(`${colors.red}✗${colors.reset} ${message}`);
315
+ }
316
+ }
317
+ //# sourceMappingURL=scramble.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scramble.js","sourceRoot":"","sources":["../../src/utils/scramble.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,0CAA0C;AAC1C,MAAM,MAAM,GAAG,iFAAiF,CAAA;AAEhG,MAAM,WAAW,GAAG,GAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAA;AAE1F,kEAAkE;AAClE,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,aAAqB,EAAU,EAAE;IACjE,IAAI,KAAK,GAAG,EAAE,CAAA;IACd,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;IACvB,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACtC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,KAAK,IAAI,GAAG,CAAA;QACd,CAAC;aAAM,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC;YAC7B,KAAK,IAAI,EAAE,CAAA;QACb,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,WAAW,EAAE,CAAA;QACxB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAWD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,OAAwB,EAAE,EAAiB,EAAE;IACtF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAA;IACxC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,CAAC,CAAA;IAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,CAAC,CAAA;IAE/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,QAAQ,GAAG,CAAC,CAAA;QAChB,IAAI,aAAa,GAAG,CAAC,CAAA;QAErB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA,CAAC,cAAc;QAElD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,sDAAsD;YACtD,IAAI,aAAa,GAAG,cAAc,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;gBACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;gBACjE,aAAa,EAAE,CAAA;gBACf,OAAM;YACR,CAAC;YAED,6CAA6C;YAC7C,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YACzD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;YAC5C,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;YAEzD,2DAA2D;YAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,aAAa,GAAG,MAAM,CAAC,KAAK,EAAE,CAChH,CAAA;YAED,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC5B,aAAa,CAAC,IAAI,CAAC,CAAA;gBACnB,uCAAuC;gBACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAA;gBAClF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA,CAAC,cAAc;gBAClD,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC,EAAE,UAAU,CAAC,CAAA;IAChB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AASD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,KAA6B,EAC7B,OAAwB,EAAE,EACX,EAAE;IACjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,CAAA;QACpC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;QAC5D,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAeD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,gBAAgB;IAA7B;QACU,aAAQ,GAA0B,IAAI,CAAA;QACtC,eAAU,GAAgB,EAAE,CAAA;QAC5B,gBAAW,GAAG,CAAC,CAAA;QACf,aAAQ,GAAG,CAAC,CAAA;QACZ,kBAAa,GAAG,CAAC,CAAA;QACjB,cAAS,GAAG,CAAC,CAAA;QACb,eAAU,GAAG,CAAC,CAAA;QACd,gBAAW,GAAG,CAAC,CAAA;QACf,UAAK,GAAuD,UAAU,CAAA;QAC9E,+EAA+E;QACvE,eAAU,GAAG,CAAC,CAAA;QAEL,mBAAc,GAAG,CAAC,CAAA;QAClB,iBAAY,GAAG,CAAC,CAAA;QAChB,eAAU,GAAG,EAAE,CAAA;QACf,gBAAW,GAAG,CAAC,CAAA;QACf,qBAAgB,GAAG,EAAE,CAAA;IA+NxC,CAAC;IA7NC,sDAAsD;IAC9C,aAAa,CACnB,KAAgB;QAEhB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,CAAA;IACxD,CAAC;IAED,qDAAqD;IAC7C,YAAY,CAAC,KAAgB;QACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK,CAAA;IACvD,CAAC;IAED,4DAA4D;IACpD,WAAW,CAAC,GAAW;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAA;QACrB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,CAAA;IAC/D,CAAC;IAED,+EAA+E;IACvE,WAAW,CAAC,GAAW,EAAE,QAAQ,GAAG,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAA;QACrB,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAA;QAC3C,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAA;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAA;YACjD,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG,MAAM,MAAM,CAAA;QAC/C,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACnC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAA;gBACtC,OAAO,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAA;YACnD,CAAC,CAAC,CAAA;YACF,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;QACjD,CAAC;QACD,OAAO,GAAI,KAA0B,CAAC,IAAI,KAAK,CAAA;IACjD,CAAC;IAED,gDAAgD;IACxC,QAAQ,CAAC,GAAW;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAA;QACrD,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,OAAO,GAAG,CAAC,CAAA;QACvD,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;QAC5D,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,KAAkB;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QACvB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;QACjB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACnB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAA;QACvB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAE3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA,CAAC,cAAc;QAElD,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAC/B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM;gBAAE,OAAM;YAEtD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;YAEjE,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACnB,KAAK,UAAU,CAAC,CAAC,CAAC;oBAChB,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;oBACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,UAAU,CAAC,CAAA;oBACzE,IAAI,CAAC,aAAa,EAAE,CAAA;oBACpB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;wBAC9C,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAA;oBACvB,CAAC;oBACD,MAAK;gBACP,CAAC;gBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;oBAC5E,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;oBACjD,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;oBAE9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK,UAAU,CAChH,CAAA;oBAED,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;wBACrC,6DAA6D;wBAC7D,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;4BACpC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;4BACpB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;wBACtB,CAAC;6BAAM,CAAC;4BACN,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;4BAC1C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;wBACrB,CAAC;oBACH,CAAC;oBACD,MAAK;gBACP,CAAC;gBAED,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,IAAI,CAAC,WAAW,EAAE,CAAA;oBAClB,8BAA8B;oBAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAA;oBAEtE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;oBAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC,KAAK,UAAU,CAC1E,CAAA;oBAED,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;wBAClB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;wBAC1C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;oBACrB,CAAC;oBACD,MAAK;gBACP,CAAC;gBAED,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,IAAI,CAAC,UAAU,EAAE,CAAA;oBACjB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;wBACxC,oCAAoC;wBACpC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;4BAC/C,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;4BACpC,CAAC,CAAC,QAAQ,CAAA;wBACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK,YAAY,CAC1E,CAAA;wBACD,IAAI,CAAC,UAAU,EAAE,CAAA;wBACjB,IAAI,CAAC,WAAW,EAAE,CAAA;wBAClB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;wBACjB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;wBACtB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;wBACpB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAA;oBACzB,CAAC;oBACD,MAAK;gBACP,CAAC;gBAED,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAA;oBAChE,MAAM,WAAW,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,OAAO,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;oBAEpF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;wBAC9C,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;wBACpC,CAAC,CAAC,QAAQ,CAAA;oBACZ,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAA;oBAC3B,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;oBACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;wBACrC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;wBACpD,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;4BACvB,KAAK,CAAC,GAAG,CAAC,GAAG,WAAW,EAAE,CAAA;wBAC5B,CAAC;oBACH,CAAC;oBAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,WAAW,UAAU,CAC3F,CAAA;oBACD,MAAK;gBACP,CAAC;YACH,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IACrB,CAAC;IAEO,OAAO;QACb,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACtB,CAAC;QACD,+BAA+B;QAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAClC,mDAAmD;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAC1C,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA,CAAC,cAAc;IACpD,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,KAAkB;QACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;QAElE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;QAE9B,+DAA+D;QAC/D,IAAI,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YACzC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;gBACjD,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;gBACpC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC,KAAK,YAAY,CAC5E,CAAA;YACD,IAAI,CAAC,UAAU,EAAE,CAAA;YACjB,IAAI,CAAC,WAAW,EAAE,CAAA;YAClB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;YACjB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;YACtB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;YACpB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAA;QACzB,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,IAAI;QACF,IAAI,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC;IAED,0CAA0C;IAC1C,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAA;IAC3D,CAAC;IAED,wCAAwC;IACxC,IAAI,CAAC,OAAe;QAClB,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAA;IACzD,CAAC;CACF"}
package/lib/version.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  /** Auto-generated version constant. Updated by the release workflow. */
2
- export declare const VERSION = "0.4.4";
2
+ export declare const VERSION = "0.6.1";
3
3
  //# sourceMappingURL=version.d.ts.map
package/lib/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /** Auto-generated version constant. Updated by the release workflow. */
2
- export const VERSION = '0.4.4';
2
+ export const VERSION = '0.6.1';
3
3
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Abort workflow
3
+ * Detect and abort in-progress git operations (merge, rebase, cherry-pick, revert)
4
+ */
5
+ /**
6
+ * Handle the abort workflow
7
+ */
8
+ export declare const handleAbort: () => Promise<void>;
9
+ //# sourceMappingURL=abort.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../../src/workflows/abort.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoFH;;GAEG;AACH,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CA4FhD,CAAA"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Abort workflow
3
+ * Detect and abort in-progress git operations (merge, rebase, cherry-pick, revert)
4
+ */
5
+ import fs from 'node:fs';
6
+ import path from 'node:path';
7
+ import { confirm } from '../cli/input.js';
8
+ import { select } from '../cli/menu.js';
9
+ import { colors } from '../utils/colors.js';
10
+ import { exec, execSilent } from '../utils/exec.js';
11
+ import { log } from '../utils/logging.js';
12
+ /**
13
+ * Get the .git directory path (handles worktrees)
14
+ */
15
+ const getGitDir = () => {
16
+ try {
17
+ return execSilent('git rev-parse --git-dir').trim();
18
+ }
19
+ catch {
20
+ return '.git';
21
+ }
22
+ };
23
+ /**
24
+ * Detect all in-progress git operations
25
+ */
26
+ const detectInProgressOps = () => {
27
+ const gitDir = getGitDir();
28
+ const ops = [];
29
+ // Merge in progress — .git/MERGE_HEAD exists
30
+ const mergeHead = path.join(gitDir, 'MERGE_HEAD');
31
+ if (fs.existsSync(mergeHead)) {
32
+ ops.push({
33
+ type: 'merge',
34
+ label: 'Merge',
35
+ abortCmd: 'git merge --abort',
36
+ indicator: 'MERGE_HEAD',
37
+ });
38
+ }
39
+ // Rebase in progress — .git/rebase-merge/ or .git/rebase-apply/ exists
40
+ const rebaseMerge = path.join(gitDir, 'rebase-merge');
41
+ const rebaseApply = path.join(gitDir, 'rebase-apply');
42
+ if (fs.existsSync(rebaseMerge) || fs.existsSync(rebaseApply)) {
43
+ ops.push({
44
+ type: 'rebase',
45
+ label: 'Rebase',
46
+ abortCmd: 'git rebase --abort',
47
+ indicator: fs.existsSync(rebaseMerge) ? 'rebase-merge/' : 'rebase-apply/',
48
+ });
49
+ }
50
+ // Cherry-pick in progress — .git/CHERRY_PICK_HEAD exists
51
+ const cherryHead = path.join(gitDir, 'CHERRY_PICK_HEAD');
52
+ if (fs.existsSync(cherryHead)) {
53
+ ops.push({
54
+ type: 'cherry-pick',
55
+ label: 'Cherry-pick',
56
+ abortCmd: 'git cherry-pick --abort',
57
+ indicator: 'CHERRY_PICK_HEAD',
58
+ });
59
+ }
60
+ // Revert in progress — .git/REVERT_HEAD exists
61
+ const revertHead = path.join(gitDir, 'REVERT_HEAD');
62
+ if (fs.existsSync(revertHead)) {
63
+ ops.push({
64
+ type: 'revert',
65
+ label: 'Revert',
66
+ abortCmd: 'git revert --abort',
67
+ indicator: 'REVERT_HEAD',
68
+ });
69
+ }
70
+ return ops;
71
+ };
72
+ /**
73
+ * Handle the abort workflow
74
+ */
75
+ export const handleAbort = async () => {
76
+ const C = colors.cyan;
77
+ const R = colors.reset;
78
+ const G = colors.green;
79
+ const Y = colors.yellow;
80
+ const GR = colors.gray;
81
+ console.log('');
82
+ console.log(` ${C}⚡ Abort In-Progress Operation${R}`);
83
+ console.log(` ${GR}${'─'.repeat(35)}${R}`);
84
+ console.log('');
85
+ const ops = detectInProgressOps();
86
+ if (ops.length === 0) {
87
+ log.success('No in-progress operation detected. Nothing to abort.');
88
+ console.log('');
89
+ console.log(` ${GR}Checked: merge, rebase, cherry-pick, revert${R}`);
90
+ console.log('');
91
+ return;
92
+ }
93
+ // Show detected operations
94
+ console.log(` ${Y}Detected in-progress operation${ops.length > 1 ? 's' : ''}:${R}`);
95
+ console.log('');
96
+ for (const op of ops) {
97
+ console.log(` ${C}●${R} ${op.label} ${GR}(${op.indicator})${R}`);
98
+ }
99
+ console.log('');
100
+ let selected;
101
+ if (ops.length === 1) {
102
+ selected = ops[0];
103
+ }
104
+ else {
105
+ // Multiple operations — let user choose
106
+ const choice = await select('Which operation to abort?', ops.map((op) => ({
107
+ label: `${op.label} ${GR}→ ${op.abortCmd}${R}`,
108
+ value: op.type,
109
+ })));
110
+ const found = ops.find((op) => op.type === choice);
111
+ if (!found) {
112
+ log.warn('Cancelled.');
113
+ return;
114
+ }
115
+ selected = found;
116
+ }
117
+ // Show what will happen
118
+ console.log(` ${GR}Command: ${selected.abortCmd}${R}`);
119
+ console.log('');
120
+ const ok = confirm(`Abort ${selected.label.toLowerCase()}?`, true);
121
+ if (!ok) {
122
+ log.warn('Cancelled.');
123
+ return;
124
+ }
125
+ try {
126
+ console.log('');
127
+ const spinner = log.spinner();
128
+ spinner.start(`Aborting ${selected.label.toLowerCase()}...`);
129
+ exec(selected.abortCmd, true);
130
+ spinner.succeed(`${selected.label} aborted successfully`);
131
+ // Show current state after abort
132
+ try {
133
+ const branch = execSilent('git rev-parse --abbrev-ref HEAD').trim();
134
+ const status = execSilent('git status --short').trim();
135
+ console.log(` ${GR}Current branch: ${G}${branch}${R}`);
136
+ if (status) {
137
+ const fileCount = status.split('\n').filter(Boolean).length;
138
+ const plural = fileCount === 1 ? '' : 's';
139
+ console.log(` ${GR}Working tree: ${Y}${fileCount} changed file${plural}${R}`);
140
+ }
141
+ else {
142
+ console.log(` ${GR}Working tree: ${G}clean${R}`);
143
+ }
144
+ }
145
+ catch {
146
+ // Non-critical, ignore
147
+ }
148
+ console.log('');
149
+ }
150
+ catch (error) {
151
+ const msg = error instanceof Error ? error.message : String(error);
152
+ log.error(`Failed to abort ${selected.label.toLowerCase()}: ${msg}`);
153
+ console.log('');
154
+ console.log(` ${GR}Try running manually: ${C}${selected.abortCmd}${R}`);
155
+ console.log('');
156
+ }
157
+ };
158
+ //# sourceMappingURL=abort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort.js","sourceRoot":"","sources":["../../src/workflows/abort.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ export const handleAIProviderSelection = async () => {
13
13
  while (true) {
14
14
  aiProvider = (await select('Choose AI Provider for branch naming and commit messages:', [
15
15
  { label: 'Gemini', value: 'gemini' },
16
- { label: 'GitHub Copilot (Recommended)', value: 'copilot' },
16
+ { label: 'GitHub (Recommended)', value: 'copilot' },
17
17
  { label: 'OpenRouter', value: 'openrouter' },
18
18
  { label: 'Manual', value: 'manual' },
19
19
  ]));
@@ -1 +1 @@
1
- {"version":3,"file":"ai-provider.js","sourceRoot":"","sources":["../../src/workflows/ai-provider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,+EAA+E;AAE/E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAE3D,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,IAK3C,EAAE;IACH,IAAI,UAA0D,CAAA;IAC9D,IAAI,YAAsC,CAAA;IAC1C,IAAI,eAA4C,CAAA;IAChD,IAAI,WAAoC,CAAA;IAExC,6BAA6B;IAC7B,OAAO,IAAI,EAAE,CAAC;QACZ,UAAU,GAAG,CAAC,MAAM,MAAM,CAAC,2DAA2D,EAAE;YACtF,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;YACpC,EAAE,KAAK,EAAE,8BAA8B,EAAE,KAAK,EAAE,SAAS,EAAE;YAC3D,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;YAC5C,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;SACrC,CAAC,CAAmD,CAAA;QAErD,yEAAyE;QACzE,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC5B,uCAAuC;YACvC,MAAK;QACP,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,UAAiD,EACjD,SAAS,EACT,0BAA0B,CAC3B,CAAA;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,2DAA2D;YAC3D,SAAQ;QACV,CAAC;QACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,SAAQ;QACV,CAAC;QAED,kDAAkD;QAClD,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,WAAW,GAAG,MAAqB,CAAA;gBAEnC,MAAK;YACP,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,YAAY,GAAG,MAAsB,CAAA;gBACrC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBAEf,MAAK;YACP,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,eAAe,GAAG,MAAyB,CAAA;gBAE3C,MAAK;YACP,CAAC;YACD,aAAa;QACf,CAAC;QAED,6CAA6C;QAC7C,MAAK;IACP,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,CAAA;AACnE,CAAC,CAAA"}
1
+ {"version":3,"file":"ai-provider.js","sourceRoot":"","sources":["../../src/workflows/ai-provider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,+EAA+E;AAE/E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAE3D,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,IAK3C,EAAE;IACH,IAAI,UAA0D,CAAA;IAC9D,IAAI,YAAsC,CAAA;IAC1C,IAAI,eAA4C,CAAA;IAChD,IAAI,WAAoC,CAAA;IAExC,6BAA6B;IAC7B,OAAO,IAAI,EAAE,CAAC;QACZ,UAAU,GAAG,CAAC,MAAM,MAAM,CAAC,2DAA2D,EAAE;YACtF,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;YACpC,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,SAAS,EAAE;YACnD,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;YAC5C,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;SACrC,CAAC,CAAmD,CAAA;QAErD,yEAAyE;QACzE,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC5B,uCAAuC;YACvC,MAAK;QACP,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,UAAiD,EACjD,SAAS,EACT,0BAA0B,CAC3B,CAAA;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,2DAA2D;YAC3D,SAAQ;QACV,CAAC;QACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,SAAQ;QACV,CAAC;QAED,kDAAkD;QAClD,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,WAAW,GAAG,MAAqB,CAAA;gBAEnC,MAAK;YACP,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,YAAY,GAAG,MAAsB,CAAA;gBACrC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBAEf,MAAK;YACP,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,eAAe,GAAG,MAAyB,CAAA;gBAE3C,MAAK;YACP,CAAC;YACD,aAAa;QACf,CAAC;QAED,6CAA6C;QAC7C,MAAK;IACP,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,CAAA;AACnE,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Shell alias management workflow
3
+ * Installs/removes short aliases for geeto commands in shell config.
4
+ */
5
+ export declare const handleAlias: () => Promise<void>;
6
+ //# sourceMappingURL=alias.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alias.d.ts","sourceRoot":"","sources":["../../src/workflows/alias.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6RH,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CA+MhD,CAAA"}