geeto 0.1.0-beta.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 (203) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +152 -0
  3. package/lib/api/copilot-adapter.d.ts +11 -0
  4. package/lib/api/copilot-adapter.d.ts.map +1 -0
  5. package/lib/api/copilot-adapter.js +41 -0
  6. package/lib/api/copilot-adapter.js.map +1 -0
  7. package/lib/api/copilot-sdk.d.ts +48 -0
  8. package/lib/api/copilot-sdk.d.ts.map +1 -0
  9. package/lib/api/copilot-sdk.js +451 -0
  10. package/lib/api/copilot-sdk.js.map +1 -0
  11. package/lib/api/copilot.d.ts +21 -0
  12. package/lib/api/copilot.d.ts.map +1 -0
  13. package/lib/api/copilot.js +87 -0
  14. package/lib/api/copilot.js.map +1 -0
  15. package/lib/api/gemini-sdk.d.ts +24 -0
  16. package/lib/api/gemini-sdk.d.ts.map +1 -0
  17. package/lib/api/gemini-sdk.js +245 -0
  18. package/lib/api/gemini-sdk.js.map +1 -0
  19. package/lib/api/gemini.d.ts +21 -0
  20. package/lib/api/gemini.d.ts.map +1 -0
  21. package/lib/api/gemini.js +87 -0
  22. package/lib/api/gemini.js.map +1 -0
  23. package/lib/api/openrouter-sdk.d.ts +58 -0
  24. package/lib/api/openrouter-sdk.d.ts.map +1 -0
  25. package/lib/api/openrouter-sdk.js +341 -0
  26. package/lib/api/openrouter-sdk.js.map +1 -0
  27. package/lib/api/openrouter.d.ts +17 -0
  28. package/lib/api/openrouter.d.ts.map +1 -0
  29. package/lib/api/openrouter.js +111 -0
  30. package/lib/api/openrouter.js.map +1 -0
  31. package/lib/api/trello.d.ts +17 -0
  32. package/lib/api/trello.d.ts.map +1 -0
  33. package/lib/api/trello.js +72 -0
  34. package/lib/api/trello.js.map +1 -0
  35. package/lib/cli/input.d.ts +39 -0
  36. package/lib/cli/input.d.ts.map +1 -0
  37. package/lib/cli/input.js +119 -0
  38. package/lib/cli/input.js.map +1 -0
  39. package/lib/cli/menu.d.ts +9 -0
  40. package/lib/cli/menu.d.ts.map +1 -0
  41. package/lib/cli/menu.js +201 -0
  42. package/lib/cli/menu.js.map +1 -0
  43. package/lib/core/constants.d.ts +22 -0
  44. package/lib/core/constants.d.ts.map +1 -0
  45. package/lib/core/constants.js +24 -0
  46. package/lib/core/constants.js.map +1 -0
  47. package/lib/core/copilot-setup.d.ts +13 -0
  48. package/lib/core/copilot-setup.d.ts.map +1 -0
  49. package/lib/core/copilot-setup.js +447 -0
  50. package/lib/core/copilot-setup.js.map +1 -0
  51. package/lib/core/gemini-setup.d.ts +8 -0
  52. package/lib/core/gemini-setup.d.ts.map +1 -0
  53. package/lib/core/gemini-setup.js +84 -0
  54. package/lib/core/gemini-setup.js.map +1 -0
  55. package/lib/core/menu-constants.d.ts +24 -0
  56. package/lib/core/menu-constants.d.ts.map +1 -0
  57. package/lib/core/menu-constants.js +22 -0
  58. package/lib/core/menu-constants.js.map +1 -0
  59. package/lib/core/openrouter-setup.d.ts +8 -0
  60. package/lib/core/openrouter-setup.d.ts.map +1 -0
  61. package/lib/core/openrouter-setup.js +73 -0
  62. package/lib/core/openrouter-setup.js.map +1 -0
  63. package/lib/core/setup.d.ts +21 -0
  64. package/lib/core/setup.d.ts.map +1 -0
  65. package/lib/core/setup.js +88 -0
  66. package/lib/core/setup.js.map +1 -0
  67. package/lib/core/trello-setup.d.ts +8 -0
  68. package/lib/core/trello-setup.d.ts.map +1 -0
  69. package/lib/core/trello-setup.js +107 -0
  70. package/lib/core/trello-setup.js.map +1 -0
  71. package/lib/index.d.ts +3 -0
  72. package/lib/index.d.ts.map +1 -0
  73. package/lib/index.js +250 -0
  74. package/lib/index.js.map +1 -0
  75. package/lib/types/index.d.ts +78 -0
  76. package/lib/types/index.d.ts.map +1 -0
  77. package/lib/types/index.js +2 -0
  78. package/lib/types/index.js.map +1 -0
  79. package/lib/utils/branch-naming.d.ts +11 -0
  80. package/lib/utils/branch-naming.d.ts.map +1 -0
  81. package/lib/utils/branch-naming.js +396 -0
  82. package/lib/utils/branch-naming.js.map +1 -0
  83. package/lib/utils/colors.d.ts +14 -0
  84. package/lib/utils/colors.d.ts.map +1 -0
  85. package/lib/utils/colors.js +14 -0
  86. package/lib/utils/colors.js.map +1 -0
  87. package/lib/utils/commit-helpers.d.ts +53 -0
  88. package/lib/utils/commit-helpers.d.ts.map +1 -0
  89. package/lib/utils/commit-helpers.js +177 -0
  90. package/lib/utils/commit-helpers.js.map +1 -0
  91. package/lib/utils/config.d.ts +87 -0
  92. package/lib/utils/config.d.ts.map +1 -0
  93. package/lib/utils/config.js +326 -0
  94. package/lib/utils/config.js.map +1 -0
  95. package/lib/utils/display.d.ts +27 -0
  96. package/lib/utils/display.d.ts.map +1 -0
  97. package/lib/utils/display.js +116 -0
  98. package/lib/utils/display.js.map +1 -0
  99. package/lib/utils/error-helpers.d.ts +27 -0
  100. package/lib/utils/error-helpers.d.ts.map +1 -0
  101. package/lib/utils/error-helpers.js +102 -0
  102. package/lib/utils/error-helpers.js.map +1 -0
  103. package/lib/utils/exec.d.ts +18 -0
  104. package/lib/utils/exec.d.ts.map +1 -0
  105. package/lib/utils/exec.js +96 -0
  106. package/lib/utils/exec.js.map +1 -0
  107. package/lib/utils/git-ai-errors.d.ts +10 -0
  108. package/lib/utils/git-ai-errors.d.ts.map +1 -0
  109. package/lib/utils/git-ai-errors.js +71 -0
  110. package/lib/utils/git-ai-errors.js.map +1 -0
  111. package/lib/utils/git-ai.d.ts +26 -0
  112. package/lib/utils/git-ai.d.ts.map +1 -0
  113. package/lib/utils/git-ai.js +603 -0
  114. package/lib/utils/git-ai.js.map +1 -0
  115. package/lib/utils/git-commands.d.ts +21 -0
  116. package/lib/utils/git-commands.d.ts.map +1 -0
  117. package/lib/utils/git-commands.js +58 -0
  118. package/lib/utils/git-commands.js.map +1 -0
  119. package/lib/utils/git-errors.d.ts +76 -0
  120. package/lib/utils/git-errors.d.ts.map +1 -0
  121. package/lib/utils/git-errors.js +565 -0
  122. package/lib/utils/git-errors.js.map +1 -0
  123. package/lib/utils/git.d.ts +61 -0
  124. package/lib/utils/git.d.ts.map +1 -0
  125. package/lib/utils/git.js +245 -0
  126. package/lib/utils/git.js.map +1 -0
  127. package/lib/utils/logging.d.ts +25 -0
  128. package/lib/utils/logging.d.ts.map +1 -0
  129. package/lib/utils/logging.js +71 -0
  130. package/lib/utils/logging.js.map +1 -0
  131. package/lib/utils/menu-builders.d.ts +47 -0
  132. package/lib/utils/menu-builders.d.ts.map +1 -0
  133. package/lib/utils/menu-builders.js +34 -0
  134. package/lib/utils/menu-builders.js.map +1 -0
  135. package/lib/utils/platform.d.ts +13 -0
  136. package/lib/utils/platform.d.ts.map +1 -0
  137. package/lib/utils/platform.js +32 -0
  138. package/lib/utils/platform.js.map +1 -0
  139. package/lib/utils/spinner-wrapper.d.ts +16 -0
  140. package/lib/utils/spinner-wrapper.d.ts.map +1 -0
  141. package/lib/utils/spinner-wrapper.js +56 -0
  142. package/lib/utils/spinner-wrapper.js.map +1 -0
  143. package/lib/utils/state.d.ts +22 -0
  144. package/lib/utils/state.d.ts.map +1 -0
  145. package/lib/utils/state.js +75 -0
  146. package/lib/utils/state.js.map +1 -0
  147. package/lib/utils/time.d.ts +4 -0
  148. package/lib/utils/time.d.ts.map +1 -0
  149. package/lib/utils/time.js +29 -0
  150. package/lib/utils/time.js.map +1 -0
  151. package/lib/utils/type-guards.d.ts +10 -0
  152. package/lib/utils/type-guards.d.ts.map +1 -0
  153. package/lib/utils/type-guards.js +29 -0
  154. package/lib/utils/type-guards.js.map +1 -0
  155. package/lib/workflows/ai-provider.d.ts +13 -0
  156. package/lib/workflows/ai-provider.d.ts.map +1 -0
  157. package/lib/workflows/ai-provider.js +55 -0
  158. package/lib/workflows/ai-provider.js.map +1 -0
  159. package/lib/workflows/author.d.ts +4 -0
  160. package/lib/workflows/author.d.ts.map +1 -0
  161. package/lib/workflows/author.js +80 -0
  162. package/lib/workflows/author.js.map +1 -0
  163. package/lib/workflows/branch-helpers.d.ts +9 -0
  164. package/lib/workflows/branch-helpers.d.ts.map +1 -0
  165. package/lib/workflows/branch-helpers.js +406 -0
  166. package/lib/workflows/branch-helpers.js.map +1 -0
  167. package/lib/workflows/branch-utils.d.ts +9 -0
  168. package/lib/workflows/branch-utils.d.ts.map +1 -0
  169. package/lib/workflows/branch-utils.js +61 -0
  170. package/lib/workflows/branch-utils.js.map +1 -0
  171. package/lib/workflows/branch.d.ts +12 -0
  172. package/lib/workflows/branch.d.ts.map +1 -0
  173. package/lib/workflows/branch.js +555 -0
  174. package/lib/workflows/branch.js.map +1 -0
  175. package/lib/workflows/cleanup.d.ts +10 -0
  176. package/lib/workflows/cleanup.d.ts.map +1 -0
  177. package/lib/workflows/cleanup.js +287 -0
  178. package/lib/workflows/cleanup.js.map +1 -0
  179. package/lib/workflows/commit.d.ts +10 -0
  180. package/lib/workflows/commit.d.ts.map +1 -0
  181. package/lib/workflows/commit.js +771 -0
  182. package/lib/workflows/commit.js.map +1 -0
  183. package/lib/workflows/main-steps.d.ts +12 -0
  184. package/lib/workflows/main-steps.d.ts.map +1 -0
  185. package/lib/workflows/main-steps.js +407 -0
  186. package/lib/workflows/main-steps.js.map +1 -0
  187. package/lib/workflows/main.d.ts +8 -0
  188. package/lib/workflows/main.d.ts.map +1 -0
  189. package/lib/workflows/main.js +720 -0
  190. package/lib/workflows/main.js.map +1 -0
  191. package/lib/workflows/security-gate.d.ts +8 -0
  192. package/lib/workflows/security-gate.d.ts.map +1 -0
  193. package/lib/workflows/security-gate.js +447 -0
  194. package/lib/workflows/security-gate.js.map +1 -0
  195. package/lib/workflows/settings.d.ts +15 -0
  196. package/lib/workflows/settings.d.ts.map +1 -0
  197. package/lib/workflows/settings.js +438 -0
  198. package/lib/workflows/settings.js.map +1 -0
  199. package/lib/workflows/trello-menu.d.ts +16 -0
  200. package/lib/workflows/trello-menu.d.ts.map +1 -0
  201. package/lib/workflows/trello-menu.js +361 -0
  202. package/lib/workflows/trello-menu.js.map +1 -0
  203. package/package.json +112 -0
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Interactive input utilities
3
+ */
4
+ import { spawnSync } from 'node:child_process';
5
+ import fs from 'node:fs';
6
+ import os from 'node:os';
7
+ import path from 'node:path';
8
+ import readline from 'node:readline';
9
+ const rl = readline.createInterface({
10
+ input: process.stdin,
11
+ output: process.stdout,
12
+ });
13
+ /**
14
+ * Ask a question and return user input
15
+ */
16
+ export const askQuestion = (question, defaultValue) => {
17
+ if (process.stdin.isTTY && process.stdin.isRaw) {
18
+ process.stdin.setRawMode(false);
19
+ }
20
+ const platform = os.platform();
21
+ const fullQuestion = defaultValue ? `${question} (${defaultValue}) ` : question;
22
+ process.stdout.write(fullQuestion);
23
+ const result = platform === 'win32'
24
+ ? spawnSync('powershell', ['-Command', '$input = Read-Host; Write-Output $input'], {
25
+ stdio: ['inherit', 'pipe', 'inherit'],
26
+ encoding: 'utf8',
27
+ })
28
+ : spawnSync('bash', ['-c', 'read -r line && echo "$line"'], {
29
+ stdio: ['inherit', 'pipe', 'inherit'],
30
+ encoding: 'utf8',
31
+ });
32
+ const input = result.stdout?.trim() ?? '';
33
+ return input ?? defaultValue ?? '';
34
+ };
35
+ /**
36
+ * Progress bar utility for long operations
37
+ */
38
+ export class ProgressBar {
39
+ constructor(total, title = 'Progress', width = 40) {
40
+ this.total = total;
41
+ this.current = 0;
42
+ this.width = width;
43
+ this.title = title;
44
+ }
45
+ update(current) {
46
+ this.current = Math.min(current, this.total);
47
+ this.render();
48
+ }
49
+ increment(amount = 1) {
50
+ this.current = Math.min(this.current + amount, this.total);
51
+ this.render();
52
+ }
53
+ complete() {
54
+ this.current = this.total;
55
+ this.render();
56
+ console.log(''); // New line after completion
57
+ }
58
+ render() {
59
+ const percentage = this.total > 0 ? Math.round((this.current / this.total) * 100) : 0;
60
+ const filled = Math.round((this.current / this.total) * this.width);
61
+ const empty = this.width - filled;
62
+ const bar = '█'.repeat(filled) + '░'.repeat(empty);
63
+ const status = `${this.current}/${this.total} (${percentage}%)`;
64
+ process.stdout.write(`\r${this.title}: [${bar}] ${status}`);
65
+ }
66
+ }
67
+ /**
68
+ * Syntax highlighting for git diff output
69
+ */
70
+ export const highlightDiff = (diff) => {
71
+ return diff
72
+ .replaceAll(/^(\+{3}|-{3}).*$/gm, '\u001B[36m$1\u001B[0m') // File headers (cyan)
73
+ .replaceAll(/^@@.*@@$/gm, '\u001B[33m$1\u001B[0m') // Hunk headers (yellow)
74
+ .replaceAll(/^(\+.*)$/gm, '\u001B[32m$1\u001B[0m') // Added lines (green)
75
+ .replaceAll(/^(-.*)$/gm, '\u001B[31m$1\u001B[0m') // Removed lines (red)
76
+ .replaceAll(/^(\s.*)$/gm, '\u001B[37m$1\u001B[0m'); // Context lines (white)
77
+ };
78
+ /**
79
+ * Ask a yes/no confirmation question
80
+ */
81
+ export const confirm = (question, defaultYes = true) => {
82
+ const suffix = defaultYes ? ' (Y/n): ' : ' (y/N): ';
83
+ const answer = askQuestion(`${question}${suffix}`);
84
+ if (answer === '') {
85
+ return defaultYes;
86
+ }
87
+ return answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes';
88
+ };
89
+ /**
90
+ * Edit multi-line content in the user's editor (from $EDITOR).
91
+ * Writes initialText to a temp file, opens $EDITOR, and returns the edited content.
92
+ */
93
+ export const editInEditor = (initialText = '', filenameHint = 'geeto-commit.txt') => {
94
+ const tmpDir = os.tmpdir();
95
+ const tmpPath = path.join(tmpDir, `${Date.now()}-${filenameHint}`);
96
+ try {
97
+ fs.writeFileSync(tmpPath, initialText, { encoding: 'utf8' });
98
+ }
99
+ catch {
100
+ return initialText;
101
+ }
102
+ const editor = process.env.EDITOR ?? (process.platform === 'win32' ? 'notepad' : 'vi');
103
+ try {
104
+ spawnSync(editor, [tmpPath], { stdio: 'inherit' });
105
+ const edited = fs.readFileSync(tmpPath, { encoding: 'utf8' });
106
+ return edited.trim();
107
+ }
108
+ catch {
109
+ // On failure, return initial text
110
+ return initialText;
111
+ }
112
+ };
113
+ /**
114
+ * Close the readline interface
115
+ */
116
+ export const closeInput = () => {
117
+ rl.close();
118
+ };
119
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/cli/input.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Interactive menu utilities
3
+ */
4
+ import type { SelectOption } from '../types/index.js';
5
+ /**
6
+ * Interactive select menu with arrow keys and search
7
+ */
8
+ export declare const select: (question: string, options: SelectOption[]) => Promise<string>;
9
+ //# sourceMappingURL=menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/cli/menu.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAMrD;;GAEG;AACH,eAAO,MAAM,MAAM,GAAU,UAAU,MAAM,EAAE,SAAS,YAAY,EAAE,KAAG,OAAO,CAAC,MAAM,CA0NtF,CAAA"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Interactive menu utilities
3
+ */
4
+ import { colors } from '../utils/colors.js';
5
+ let currentDataListener = null;
6
+ /**
7
+ * Interactive select menu with arrow keys and search
8
+ */
9
+ export const select = async (question, options) => {
10
+ return new Promise((resolve) => {
11
+ let selectedIndex = 0;
12
+ const maxVisibleItems = 15; // Show max 15 items at once
13
+ let scrollOffset = 0;
14
+ let searchMode = false;
15
+ let searchQuery = '';
16
+ let filteredOptions = options;
17
+ const filterOptions = (query) => {
18
+ if (!query) {
19
+ return options;
20
+ }
21
+ return options.filter((opt) => opt.label.toLowerCase().includes(query.toLowerCase()));
22
+ };
23
+ const getVisibleRange = () => {
24
+ // Keep selected item in view
25
+ if (selectedIndex < scrollOffset) {
26
+ scrollOffset = selectedIndex;
27
+ }
28
+ else if (selectedIndex >= scrollOffset + maxVisibleItems) {
29
+ scrollOffset = selectedIndex - maxVisibleItems + 1;
30
+ }
31
+ const start = scrollOffset;
32
+ const end = Math.min(scrollOffset + maxVisibleItems, filteredOptions.length);
33
+ return { start, end };
34
+ };
35
+ const renderMenu = () => {
36
+ const { start, end } = getVisibleRange();
37
+ const visibleCount = end - start;
38
+ // Clear only the rendered lines (visible items + hint + search input + blank line)
39
+ const linesToClear = visibleCount + (searchMode ? 3 : 2);
40
+ for (let i = 0; i < linesToClear; i++) {
41
+ process.stdout.write('\u001B[1A\u001B[2K');
42
+ }
43
+ // Re-render hint and items (question stays at top)
44
+ const hintText = searchMode
45
+ ? ` (Esc cancel search, Enter select)`
46
+ : ` (↑↓/jk arrows, / search, Enter select, 'c' clear, 'q' quit)`;
47
+ console.log(`${colors.gray}${hintText}${colors.reset}`);
48
+ if (searchMode) {
49
+ console.log(`${colors.cyan}/ search:${colors.reset} ${searchQuery}`);
50
+ }
51
+ console.log(''); // Blank line
52
+ for (let idx = start; idx < end; idx++) {
53
+ const opt = filteredOptions[idx];
54
+ if (!opt)
55
+ continue;
56
+ const prefix = idx === selectedIndex ? `${colors.cyan}❯${colors.reset}` : ' ';
57
+ const label = idx === selectedIndex
58
+ ? `${colors.cyan}${colors.bright}${opt.label}${colors.reset}`
59
+ : `${colors.gray}${opt.label}${colors.reset}`;
60
+ console.log(`${prefix} ${label}`);
61
+ }
62
+ };
63
+ // Initial render (question + hint + items)
64
+ console.log(`${colors.cyan}?${colors.reset} ${question}`);
65
+ console.log(`${colors.gray} (↑↓/jk arrows, / search, Enter select, 'c' clear, 'q' quit)${colors.reset}\n`);
66
+ const { start, end } = getVisibleRange();
67
+ for (let idx = start; idx < end; idx++) {
68
+ const opt = filteredOptions[idx];
69
+ if (!opt)
70
+ continue;
71
+ const prefix = idx === selectedIndex ? `${colors.cyan}❯${colors.reset}` : ' ';
72
+ const label = idx === selectedIndex
73
+ ? `${colors.cyan}${colors.bright}${opt.label}${colors.reset}`
74
+ : `${colors.gray}${opt.label}${colors.reset}`;
75
+ console.log(`${prefix} ${label}`);
76
+ }
77
+ if (process.stdin.isTTY) {
78
+ process.stdin.setRawMode(true);
79
+ }
80
+ process.stdin.resume();
81
+ const cleanup = () => {
82
+ if (currentDataListener) {
83
+ process.stdin.removeListener('data', currentDataListener);
84
+ currentDataListener = null;
85
+ }
86
+ if (process.stdin.isTTY) {
87
+ process.stdin.setRawMode(false);
88
+ }
89
+ process.stdin.pause();
90
+ };
91
+ const onKeypress = (key) => {
92
+ const keyStr = key.toString();
93
+ // Handle search mode
94
+ if (searchMode) {
95
+ if (keyStr === '\u001B') {
96
+ // Escape key - cancel search
97
+ searchMode = false;
98
+ searchQuery = '';
99
+ filteredOptions = options;
100
+ selectedIndex = 0;
101
+ scrollOffset = 0;
102
+ renderMenu();
103
+ return;
104
+ }
105
+ if (keyStr === '\r' || keyStr === '\n') {
106
+ // Enter - select filtered item
107
+ cleanup();
108
+ resolve(filteredOptions[selectedIndex]?.value ?? '');
109
+ return;
110
+ }
111
+ if (keyStr === '\u007F' || keyStr === '\b') {
112
+ // Backspace
113
+ searchQuery = searchQuery.slice(0, -1);
114
+ filteredOptions = filterOptions(searchQuery);
115
+ selectedIndex = 0;
116
+ scrollOffset = 0;
117
+ renderMenu();
118
+ return;
119
+ }
120
+ // Printable characters
121
+ if (keyStr.length === 1) {
122
+ const code = keyStr.codePointAt(0) ?? 0;
123
+ if (code >= 32 && code <= 126) {
124
+ searchQuery += keyStr;
125
+ filteredOptions = filterOptions(searchQuery);
126
+ selectedIndex = 0;
127
+ scrollOffset = 0;
128
+ renderMenu();
129
+ return;
130
+ }
131
+ }
132
+ // Arrow keys in search mode
133
+ if (keyStr === '\u001B[A' || keyStr === 'k') {
134
+ selectedIndex = selectedIndex > 0 ? selectedIndex - 1 : filteredOptions.length - 1;
135
+ renderMenu();
136
+ return;
137
+ }
138
+ if (keyStr === '\u001B[B' || keyStr === 'j') {
139
+ selectedIndex = selectedIndex < filteredOptions.length - 1 ? selectedIndex + 1 : 0;
140
+ renderMenu();
141
+ return;
142
+ }
143
+ return;
144
+ }
145
+ // Normal navigation mode
146
+ switch (keyStr) {
147
+ case '/': {
148
+ searchMode = true;
149
+ renderMenu();
150
+ break;
151
+ }
152
+ case '\u001B[A':
153
+ case 'k': {
154
+ selectedIndex = selectedIndex > 0 ? selectedIndex - 1 : filteredOptions.length - 1;
155
+ renderMenu();
156
+ break;
157
+ }
158
+ case '\u001B[B':
159
+ case 'j': {
160
+ selectedIndex = selectedIndex < filteredOptions.length - 1 ? selectedIndex + 1 : 0;
161
+ renderMenu();
162
+ break;
163
+ }
164
+ case '\r':
165
+ case '\n': {
166
+ cleanup();
167
+ resolve(filteredOptions[selectedIndex]?.value ?? '');
168
+ break;
169
+ }
170
+ case 'q':
171
+ case 'Q':
172
+ case '\u0003': {
173
+ cleanup();
174
+ console.log('\n\nCancelled by user');
175
+ process.exit(0);
176
+ }
177
+ case 'c':
178
+ case 'C': {
179
+ console.clear();
180
+ console.log(`${colors.cyan}?${colors.reset} ${question}`);
181
+ console.log(`${colors.gray} (↑↓/jk arrows, / search, Enter select, 'c' clear, 'q' quit)${colors.reset}\n`);
182
+ const { start, end } = getVisibleRange();
183
+ for (let idx = start; idx < end; idx++) {
184
+ const opt = filteredOptions[idx];
185
+ if (!opt)
186
+ continue;
187
+ const prefix = idx === selectedIndex ? `${colors.cyan}❯${colors.reset}` : ' ';
188
+ const label = idx === selectedIndex
189
+ ? `${colors.cyan}${colors.bright}${opt.label}${colors.reset}`
190
+ : `${colors.gray}${opt.label}${colors.reset}`;
191
+ console.log(`${prefix} ${label}`);
192
+ }
193
+ break;
194
+ }
195
+ }
196
+ };
197
+ currentDataListener = onKeypress;
198
+ process.stdin.on('data', onKeypress);
199
+ });
200
+ };
201
+ //# sourceMappingURL=menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/cli/menu.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Step constants for flow control
3
+ */
4
+ export declare const STEP: {
5
+ readonly INIT: 0;
6
+ readonly STAGED: 1;
7
+ readonly BRANCH_CREATED: 2;
8
+ readonly COMMITTED: 3;
9
+ readonly PUSHED: 4;
10
+ readonly MERGED: 5;
11
+ readonly CLEANUP: 6;
12
+ readonly DONE: 7;
13
+ };
14
+ /**
15
+ * Task platform constants
16
+ */
17
+ export declare const TASK_PLATFORMS: {
18
+ name: string;
19
+ value: "trello";
20
+ enabled: boolean;
21
+ }[];
22
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,IAAI;;;;;;;;;CASP,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,cAAc;;;;GAM1B,CAAA"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Step constants for flow control
3
+ */
4
+ export const STEP = {
5
+ INIT: 0,
6
+ STAGED: 1,
7
+ BRANCH_CREATED: 2,
8
+ COMMITTED: 3,
9
+ PUSHED: 4,
10
+ MERGED: 5,
11
+ CLEANUP: 6,
12
+ DONE: 7,
13
+ };
14
+ /**
15
+ * Task platform constants
16
+ */
17
+ export const TASK_PLATFORMS = [
18
+ { name: 'Trello', value: 'trello', enabled: true },
19
+ // Future platforms:
20
+ // { name: 'Jira', value: 'jira' as const, enabled: false },
21
+ // { name: 'Asana', value: 'asana' as const, enabled: false },
22
+ // { name: 'Linear', value: 'linear' as const, enabled: false },
23
+ ];
24
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,cAAc,EAAE,CAAC;IACjB,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;CACC,CAAA;AAEV;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAiB,EAAE,OAAO,EAAE,IAAI,EAAE;IAC3D,oBAAoB;IACpB,4DAA4D;IAC5D,8DAA8D;IAC9D,gEAAgE;CACjE,CAAA"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * GitHub Copilot CLI setup helper (moved from `setup.ts`)
3
+ */
4
+ /**
5
+ * Check Copilot CLI version and warn if outdated.
6
+ * Uses shared utility from copilot-sdk.ts.
7
+ */
8
+ export declare const checkCopilotVersion: () => boolean;
9
+ /**
10
+ * Interactive installer and authenticator for GitHub Copilot CLI
11
+ */
12
+ export declare const setupGitHubCopilotInteractive: () => Promise<boolean>;
13
+ //# sourceMappingURL=copilot-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot-setup.d.ts","sourceRoot":"","sources":["../../src/core/copilot-setup.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAAO,OA2BtC,CAAA;AAkLD;;GAEG;AACH,eAAO,MAAM,6BAA6B,QAAa,OAAO,CAAC,OAAO,CA4PrE,CAAA"}