@braingrid/cli 0.1.3 → 0.2.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 (243) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +54 -39
  3. package/dist/chunk-KNVWIF3L.js +401 -0
  4. package/dist/chunk-KNVWIF3L.js.map +1 -0
  5. package/dist/cli.js +6229 -290
  6. package/dist/cli.js.map +1 -1
  7. package/dist/gh-installer-B65ZOOC4.js +13 -0
  8. package/dist/gh-installer-B65ZOOC4.js.map +1 -0
  9. package/package.json +40 -13
  10. package/dist/build-config.d.ts +0 -26
  11. package/dist/build-config.d.ts.map +0 -1
  12. package/dist/build-config.js +0 -45
  13. package/dist/build-config.js.map +0 -1
  14. package/dist/cli.d.ts +0 -3
  15. package/dist/cli.d.ts.map +0 -1
  16. package/dist/handlers/agent.handlers.d.ts +0 -12
  17. package/dist/handlers/agent.handlers.d.ts.map +0 -1
  18. package/dist/handlers/agent.handlers.js +0 -130
  19. package/dist/handlers/agent.handlers.js.map +0 -1
  20. package/dist/handlers/auth.handlers.d.ts +0 -19
  21. package/dist/handlers/auth.handlers.d.ts.map +0 -1
  22. package/dist/handlers/auth.handlers.js +0 -177
  23. package/dist/handlers/auth.handlers.js.map +0 -1
  24. package/dist/handlers/index.d.ts +0 -14
  25. package/dist/handlers/index.d.ts.map +0 -1
  26. package/dist/handlers/index.js +0 -14
  27. package/dist/handlers/index.js.map +0 -1
  28. package/dist/handlers/init.handlers.d.ts +0 -10
  29. package/dist/handlers/init.handlers.d.ts.map +0 -1
  30. package/dist/handlers/init.handlers.js +0 -638
  31. package/dist/handlers/init.handlers.js.map +0 -1
  32. package/dist/handlers/project.handlers.d.ts +0 -36
  33. package/dist/handlers/project.handlers.d.ts.map +0 -1
  34. package/dist/handlers/project.handlers.js +0 -309
  35. package/dist/handlers/project.handlers.js.map +0 -1
  36. package/dist/handlers/requirement.handlers.d.ts +0 -32
  37. package/dist/handlers/requirement.handlers.d.ts.map +0 -1
  38. package/dist/handlers/requirement.handlers.js +0 -264
  39. package/dist/handlers/requirement.handlers.js.map +0 -1
  40. package/dist/handlers/status.handlers.d.ts +0 -12
  41. package/dist/handlers/status.handlers.d.ts.map +0 -1
  42. package/dist/handlers/status.handlers.js +0 -212
  43. package/dist/handlers/status.handlers.js.map +0 -1
  44. package/dist/handlers/task.handlers.d.ts +0 -29
  45. package/dist/handlers/task.handlers.d.ts.map +0 -1
  46. package/dist/handlers/task.handlers.js +0 -326
  47. package/dist/handlers/task.handlers.js.map +0 -1
  48. package/dist/handlers/types.d.ts +0 -10
  49. package/dist/handlers/types.d.ts.map +0 -1
  50. package/dist/handlers/types.js +0 -5
  51. package/dist/handlers/types.js.map +0 -1
  52. package/dist/handlers/update.handlers.d.ts +0 -16
  53. package/dist/handlers/update.handlers.d.ts.map +0 -1
  54. package/dist/handlers/update.handlers.js +0 -119
  55. package/dist/handlers/update.handlers.js.map +0 -1
  56. package/dist/rpc/registry.d.ts +0 -97
  57. package/dist/rpc/registry.d.ts.map +0 -1
  58. package/dist/rpc/registry.js +0 -119
  59. package/dist/rpc/registry.js.map +0 -1
  60. package/dist/rpc/server.d.ts +0 -78
  61. package/dist/rpc/server.d.ts.map +0 -1
  62. package/dist/rpc/server.js +0 -437
  63. package/dist/rpc/server.js.map +0 -1
  64. package/dist/rpc/transport.d.ts +0 -84
  65. package/dist/rpc/transport.d.ts.map +0 -1
  66. package/dist/rpc/transport.js +0 -296
  67. package/dist/rpc/transport.js.map +0 -1
  68. package/dist/services/__mocks__/utils.d.ts +0 -16
  69. package/dist/services/__mocks__/utils.d.ts.map +0 -1
  70. package/dist/services/__mocks__/utils.js +0 -21
  71. package/dist/services/__mocks__/utils.js.map +0 -1
  72. package/dist/services/agent-service.d.ts +0 -29
  73. package/dist/services/agent-service.d.ts.map +0 -1
  74. package/dist/services/agent-service.js +0 -273
  75. package/dist/services/agent-service.js.map +0 -1
  76. package/dist/services/auth.d.ts +0 -59
  77. package/dist/services/auth.d.ts.map +0 -1
  78. package/dist/services/auth.js +0 -549
  79. package/dist/services/auth.js.map +0 -1
  80. package/dist/services/claude.d.ts +0 -18
  81. package/dist/services/claude.d.ts.map +0 -1
  82. package/dist/services/claude.js +0 -164
  83. package/dist/services/claude.js.map +0 -1
  84. package/dist/services/credential-store.d.ts +0 -47
  85. package/dist/services/credential-store.d.ts.map +0 -1
  86. package/dist/services/credential-store.js +0 -89
  87. package/dist/services/credential-store.js.map +0 -1
  88. package/dist/services/internal/github-service.d.ts +0 -67
  89. package/dist/services/internal/github-service.d.ts.map +0 -1
  90. package/dist/services/internal/github-service.js +0 -81
  91. package/dist/services/internal/github-service.js.map +0 -1
  92. package/dist/services/internal/repository-service.d.ts +0 -79
  93. package/dist/services/internal/repository-service.d.ts.map +0 -1
  94. package/dist/services/internal/repository-service.js +0 -88
  95. package/dist/services/internal/repository-service.js.map +0 -1
  96. package/dist/services/oauth2-auth.d.ts +0 -76
  97. package/dist/services/oauth2-auth.d.ts.map +0 -1
  98. package/dist/services/oauth2-auth.js +0 -451
  99. package/dist/services/oauth2-auth.js.map +0 -1
  100. package/dist/services/project-service.d.ts +0 -24
  101. package/dist/services/project-service.d.ts.map +0 -1
  102. package/dist/services/project-service.js +0 -60
  103. package/dist/services/project-service.js.map +0 -1
  104. package/dist/services/requirement-service.d.ts +0 -32
  105. package/dist/services/requirement-service.d.ts.map +0 -1
  106. package/dist/services/requirement-service.js +0 -91
  107. package/dist/services/requirement-service.js.map +0 -1
  108. package/dist/services/task-service.d.ts +0 -22
  109. package/dist/services/task-service.d.ts.map +0 -1
  110. package/dist/services/task-service.js +0 -52
  111. package/dist/services/task-service.js.map +0 -1
  112. package/dist/types/api.d.ts +0 -16
  113. package/dist/types/api.d.ts.map +0 -1
  114. package/dist/types/api.js +0 -5
  115. package/dist/types/api.js.map +0 -1
  116. package/dist/types/auth.d.ts +0 -73
  117. package/dist/types/auth.d.ts.map +0 -1
  118. package/dist/types/auth.js +0 -2
  119. package/dist/types/auth.js.map +0 -1
  120. package/dist/types/claude.d.ts +0 -22
  121. package/dist/types/claude.d.ts.map +0 -1
  122. package/dist/types/claude.js +0 -2
  123. package/dist/types/claude.js.map +0 -1
  124. package/dist/types/github.d.ts +0 -105
  125. package/dist/types/github.d.ts.map +0 -1
  126. package/dist/types/github.js +0 -6
  127. package/dist/types/github.js.map +0 -1
  128. package/dist/types/local-project.d.ts +0 -30
  129. package/dist/types/local-project.d.ts.map +0 -1
  130. package/dist/types/local-project.js +0 -24
  131. package/dist/types/local-project.js.map +0 -1
  132. package/dist/types/project.d.ts +0 -56
  133. package/dist/types/project.d.ts.map +0 -1
  134. package/dist/types/project.js +0 -5
  135. package/dist/types/project.js.map +0 -1
  136. package/dist/types/requirement.d.ts +0 -69
  137. package/dist/types/requirement.d.ts.map +0 -1
  138. package/dist/types/requirement.js +0 -5
  139. package/dist/types/requirement.js.map +0 -1
  140. package/dist/types/task.d.ts +0 -44
  141. package/dist/types/task.d.ts.map +0 -1
  142. package/dist/types/task.js +0 -5
  143. package/dist/types/task.js.map +0 -1
  144. package/dist/utils/axios-retry.d.ts +0 -25
  145. package/dist/utils/axios-retry.d.ts.map +0 -1
  146. package/dist/utils/axios-retry.js +0 -174
  147. package/dist/utils/axios-retry.js.map +0 -1
  148. package/dist/utils/axios-with-auth.d.ts +0 -10
  149. package/dist/utils/axios-with-auth.d.ts.map +0 -1
  150. package/dist/utils/axios-with-auth.js +0 -118
  151. package/dist/utils/axios-with-auth.js.map +0 -1
  152. package/dist/utils/cli-tools.d.ts +0 -30
  153. package/dist/utils/cli-tools.d.ts.map +0 -1
  154. package/dist/utils/cli-tools.js +0 -199
  155. package/dist/utils/cli-tools.js.map +0 -1
  156. package/dist/utils/command-execution.d.ts +0 -30
  157. package/dist/utils/command-execution.d.ts.map +0 -1
  158. package/dist/utils/command-execution.js +0 -264
  159. package/dist/utils/command-execution.js.map +0 -1
  160. package/dist/utils/command-parser.d.ts +0 -85
  161. package/dist/utils/command-parser.d.ts.map +0 -1
  162. package/dist/utils/command-parser.js +0 -287
  163. package/dist/utils/command-parser.js.map +0 -1
  164. package/dist/utils/config.d.ts +0 -10
  165. package/dist/utils/config.d.ts.map +0 -1
  166. package/dist/utils/config.js +0 -77
  167. package/dist/utils/config.js.map +0 -1
  168. package/dist/utils/error-formatter.d.ts +0 -17
  169. package/dist/utils/error-formatter.d.ts.map +0 -1
  170. package/dist/utils/error-formatter.js +0 -115
  171. package/dist/utils/error-formatter.js.map +0 -1
  172. package/dist/utils/formatting.d.ts +0 -10
  173. package/dist/utils/formatting.d.ts.map +0 -1
  174. package/dist/utils/formatting.js +0 -122
  175. package/dist/utils/formatting.js.map +0 -1
  176. package/dist/utils/gh-installer.d.ts +0 -31
  177. package/dist/utils/gh-installer.d.ts.map +0 -1
  178. package/dist/utils/gh-installer.js +0 -296
  179. package/dist/utils/gh-installer.js.map +0 -1
  180. package/dist/utils/git-installer.d.ts +0 -31
  181. package/dist/utils/git-installer.d.ts.map +0 -1
  182. package/dist/utils/git-installer.js +0 -290
  183. package/dist/utils/git-installer.js.map +0 -1
  184. package/dist/utils/git.d.ts +0 -60
  185. package/dist/utils/git.d.ts.map +0 -1
  186. package/dist/utils/git.js +0 -144
  187. package/dist/utils/git.js.map +0 -1
  188. package/dist/utils/github-repo.d.ts +0 -43
  189. package/dist/utils/github-repo.d.ts.map +0 -1
  190. package/dist/utils/github-repo.js +0 -113
  191. package/dist/utils/github-repo.js.map +0 -1
  192. package/dist/utils/id-normalization.d.ts +0 -26
  193. package/dist/utils/id-normalization.d.ts.map +0 -1
  194. package/dist/utils/id-normalization.js +0 -45
  195. package/dist/utils/id-normalization.js.map +0 -1
  196. package/dist/utils/jwt.d.ts +0 -45
  197. package/dist/utils/jwt.d.ts.map +0 -1
  198. package/dist/utils/jwt.js +0 -64
  199. package/dist/utils/jwt.js.map +0 -1
  200. package/dist/utils/local-store.d.ts +0 -36
  201. package/dist/utils/local-store.d.ts.map +0 -1
  202. package/dist/utils/local-store.js +0 -94
  203. package/dist/utils/local-store.js.map +0 -1
  204. package/dist/utils/logger.d.ts +0 -36
  205. package/dist/utils/logger.d.ts.map +0 -1
  206. package/dist/utils/logger.js +0 -176
  207. package/dist/utils/logger.js.map +0 -1
  208. package/dist/utils/package-manager-installer.d.ts +0 -36
  209. package/dist/utils/package-manager-installer.d.ts.map +0 -1
  210. package/dist/utils/package-manager-installer.js +0 -106
  211. package/dist/utils/package-manager-installer.js.map +0 -1
  212. package/dist/utils/package-manager.d.ts +0 -31
  213. package/dist/utils/package-manager.d.ts.map +0 -1
  214. package/dist/utils/package-manager.js +0 -133
  215. package/dist/utils/package-manager.js.map +0 -1
  216. package/dist/utils/projects.d.ts +0 -23
  217. package/dist/utils/projects.d.ts.map +0 -1
  218. package/dist/utils/projects.js +0 -36
  219. package/dist/utils/projects.js.map +0 -1
  220. package/dist/utils/repository-access.d.ts +0 -89
  221. package/dist/utils/repository-access.d.ts.map +0 -1
  222. package/dist/utils/repository-access.js +0 -132
  223. package/dist/utils/repository-access.js.map +0 -1
  224. package/dist/utils/requirements.d.ts +0 -43
  225. package/dist/utils/requirements.d.ts.map +0 -1
  226. package/dist/utils/requirements.js +0 -79
  227. package/dist/utils/requirements.js.map +0 -1
  228. package/dist/utils/spinner.d.ts +0 -47
  229. package/dist/utils/spinner.d.ts.map +0 -1
  230. package/dist/utils/spinner.js +0 -101
  231. package/dist/utils/spinner.js.map +0 -1
  232. package/dist/utils/status-parser.d.ts +0 -95
  233. package/dist/utils/status-parser.d.ts.map +0 -1
  234. package/dist/utils/status-parser.js +0 -205
  235. package/dist/utils/status-parser.js.map +0 -1
  236. package/dist/utils/tasks.d.ts +0 -21
  237. package/dist/utils/tasks.d.ts.map +0 -1
  238. package/dist/utils/tasks.js +0 -63
  239. package/dist/utils/tasks.js.map +0 -1
  240. package/dist/utils/workspace-manager.d.ts +0 -65
  241. package/dist/utils/workspace-manager.d.ts.map +0 -1
  242. package/dist/utils/workspace-manager.js +0 -98
  243. package/dist/utils/workspace-manager.js.map +0 -1
@@ -1,290 +0,0 @@
1
- /**
2
- * Git Installer Utility
3
- *
4
- * Automatically installs Git on the user's system using platform-specific package managers:
5
- * - macOS: Homebrew (if installed) or Xcode Command Line Tools
6
- * - Windows: winget
7
- * - Linux: apt/dnf/pacman (auto-detected)
8
- */
9
- import { exec } from 'child_process';
10
- import { promisify } from 'util';
11
- import chalk from 'chalk';
12
- import { isCliInstalled, getCliVersion } from './cli-tools.js';
13
- import { isHomebrewInstalled, isWingetAvailable, detectLinuxPackageManager, } from './package-manager-installer.js';
14
- const execAsync = promisify(exec);
15
- /**
16
- * Check if Git is installed
17
- */
18
- export async function isGitInstalled() {
19
- return isCliInstalled('git');
20
- }
21
- /**
22
- * Get Git version if installed
23
- */
24
- export async function getGitVersion() {
25
- return getCliVersion('git', '--version', output => {
26
- const match = output.match(/git version ([\d.]+)/);
27
- return match ? match[1] : null;
28
- });
29
- }
30
- /**
31
- * Install Git on macOS via Homebrew (when Homebrew is already installed)
32
- */
33
- async function installViaHomebrew() {
34
- console.log(chalk.blue('📦 Installing Git via Homebrew...'));
35
- try {
36
- await execAsync('brew install git', {
37
- timeout: 300000, // 5 minutes
38
- });
39
- // Verify installation
40
- const version = await getGitVersion();
41
- if (!version) {
42
- return {
43
- success: false,
44
- message: chalk.red('❌ Git installation completed but git command not found'),
45
- };
46
- }
47
- return {
48
- success: true,
49
- message: chalk.green(`✅ Git installed successfully (version ${version})!`),
50
- version,
51
- };
52
- }
53
- catch (error) {
54
- const errorMsg = error instanceof Error ? error.message : String(error);
55
- return {
56
- success: false,
57
- message: chalk.red('❌ Failed to install Git via Homebrew\n\n') +
58
- chalk.dim('Error: ') +
59
- errorMsg +
60
- '\n\n' +
61
- chalk.dim('Please install Git manually from: ') +
62
- chalk.cyan('https://git-scm.com/download/mac'),
63
- };
64
- }
65
- }
66
- /**
67
- * Install Git on macOS via Xcode Command Line Tools
68
- */
69
- async function installViaXcodeSelect() {
70
- console.log(chalk.blue('📦 Installing Git via Xcode Command Line Tools...'));
71
- console.log(chalk.dim('A system dialog will appear - click "Install" to continue.\n'));
72
- try {
73
- await execAsync('xcode-select --install', {
74
- timeout: 600000, // 10 minutes (user interaction required)
75
- });
76
- // Verify installation
77
- const version = await getGitVersion();
78
- if (!version) {
79
- return {
80
- success: false,
81
- message: chalk.red('❌ Git installation completed but git command not found'),
82
- };
83
- }
84
- return {
85
- success: true,
86
- message: chalk.green(`✅ Git installed successfully (version ${version})!`),
87
- version,
88
- };
89
- }
90
- catch (error) {
91
- const errorMsg = error instanceof Error ? error.message : String(error);
92
- return {
93
- success: false,
94
- message: chalk.red('❌ Failed to install Git via Xcode Command Line Tools\n\n') +
95
- chalk.dim('Error: ') +
96
- errorMsg +
97
- '\n\n' +
98
- chalk.dim('Please install Git manually from: ') +
99
- chalk.cyan('https://git-scm.com/download/mac'),
100
- };
101
- }
102
- }
103
- /**
104
- * Install Git on macOS using best available method
105
- * Strategy: Use Homebrew if installed, otherwise use xcode-select
106
- */
107
- async function installGitMacOS() {
108
- // Check if Homebrew is already installed
109
- const hasHomebrew = await isHomebrewInstalled();
110
- if (hasHomebrew) {
111
- // User already has Homebrew - use it (fast and familiar)
112
- return installViaHomebrew();
113
- }
114
- // No Homebrew - use Xcode Command Line Tools (no need to install Homebrew)
115
- return installViaXcodeSelect();
116
- }
117
- /**
118
- * Install Git on Windows using winget
119
- */
120
- async function installGitWindows() {
121
- // Check if winget is available
122
- const hasWinget = await isWingetAvailable();
123
- if (!hasWinget) {
124
- return {
125
- success: false,
126
- message: chalk.red('❌ winget is not available on this system\n\n') +
127
- chalk.dim('winget is included in Windows 10 (version 1809+) and Windows 11.\n') +
128
- chalk.dim('Please install Git manually from: ') +
129
- chalk.cyan('https://git-scm.com/download/win'),
130
- };
131
- }
132
- console.log(chalk.blue('📦 Installing Git via winget...'));
133
- try {
134
- await execAsync('winget install --id Git.Git -e --source winget --silent', {
135
- timeout: 300000, // 5 minutes
136
- });
137
- // Verify installation
138
- const version = await getGitVersion();
139
- if (!version) {
140
- return {
141
- success: false,
142
- message: chalk.red('❌ Git installation completed but git command not found'),
143
- };
144
- }
145
- return {
146
- success: true,
147
- message: chalk.green(`✅ Git installed successfully (version ${version})!`),
148
- version,
149
- };
150
- }
151
- catch (error) {
152
- const errorMsg = error instanceof Error ? error.message : String(error);
153
- return {
154
- success: false,
155
- message: chalk.red('❌ Failed to install Git via winget\n\n') +
156
- chalk.dim('Error: ') +
157
- errorMsg +
158
- '\n\n' +
159
- chalk.dim('Please install Git manually from: ') +
160
- chalk.cyan('https://git-scm.com/download/win'),
161
- };
162
- }
163
- }
164
- /**
165
- * Install Git on Linux using detected package manager
166
- */
167
- async function installGitLinux() {
168
- const packageManager = await detectLinuxPackageManager();
169
- if (!packageManager) {
170
- return {
171
- success: false,
172
- message: chalk.red('❌ Could not detect a supported package manager\n\n') +
173
- chalk.dim('Supported package managers: apt, dnf, yum, pacman\n') +
174
- chalk.dim('Please install Git manually from: ') +
175
- chalk.cyan('https://git-scm.com/download/linux'),
176
- };
177
- }
178
- console.log(chalk.blue(`📦 Installing Git via ${packageManager.name}...`));
179
- console.log(chalk.dim('This may prompt for your sudo password.\n'));
180
- try {
181
- let installCommand;
182
- switch (packageManager.name) {
183
- case 'apt':
184
- installCommand = 'sudo apt-get update && sudo apt-get install -y git';
185
- break;
186
- case 'dnf':
187
- installCommand = 'sudo dnf install -y git';
188
- break;
189
- case 'yum':
190
- installCommand = 'sudo yum install -y git';
191
- break;
192
- case 'pacman':
193
- installCommand = 'sudo pacman -S --noconfirm git';
194
- break;
195
- default:
196
- return {
197
- success: false,
198
- message: chalk.red(`❌ Unsupported package manager: ${packageManager.name}`),
199
- };
200
- }
201
- await execAsync(installCommand, {
202
- timeout: 300000, // 5 minutes
203
- });
204
- // Verify installation
205
- const version = await getGitVersion();
206
- if (!version) {
207
- return {
208
- success: false,
209
- message: chalk.red('❌ Git installation completed but git command not found'),
210
- };
211
- }
212
- return {
213
- success: true,
214
- message: chalk.green(`✅ Git installed successfully (version ${version})!`),
215
- version,
216
- };
217
- }
218
- catch (error) {
219
- const errorMsg = error instanceof Error ? error.message : String(error);
220
- return {
221
- success: false,
222
- message: chalk.red('❌ Failed to install Git\n\n') +
223
- chalk.dim('Error: ') +
224
- errorMsg +
225
- '\n\n' +
226
- chalk.dim('Please install Git manually from: ') +
227
- chalk.cyan('https://git-scm.com/download/linux'),
228
- };
229
- }
230
- }
231
- /**
232
- * Install Git on the current platform
233
- * Auto-detects platform and uses appropriate package manager
234
- */
235
- export async function installGit() {
236
- const platform = process.platform;
237
- switch (platform) {
238
- case 'darwin':
239
- return installGitMacOS();
240
- case 'win32':
241
- return installGitWindows();
242
- case 'linux':
243
- return installGitLinux();
244
- default:
245
- return {
246
- success: false,
247
- message: chalk.red(`❌ Unsupported platform: ${platform}\n\n`) +
248
- chalk.dim('Please install Git manually from: ') +
249
- chalk.cyan('https://git-scm.com/downloads'),
250
- };
251
- }
252
- }
253
- /**
254
- * Get manual installation instructions for the current platform
255
- */
256
- export function getManualInstallInstructions() {
257
- const platform = process.platform;
258
- switch (platform) {
259
- case 'darwin':
260
- return (chalk.yellow('📖 Manual Git Installation (macOS)\n\n') +
261
- chalk.dim('Option 1 - Xcode Command Line Tools (recommended):\n') +
262
- chalk.cyan(' xcode-select --install\n\n') +
263
- chalk.dim('Option 2 - Homebrew (if you use package managers):\n') +
264
- chalk.cyan(' /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"\n') +
265
- chalk.cyan(' brew install git\n\n') +
266
- chalk.dim('Option 3 - Official installer:\n') +
267
- chalk.cyan(' Download from: https://git-scm.com/download/mac'));
268
- case 'win32':
269
- return (chalk.yellow('📖 Manual Git Installation (Windows)\n\n') +
270
- chalk.dim('Option 1 - winget (Windows 10+):\n') +
271
- chalk.cyan(' winget install --id Git.Git -e --source winget\n\n') +
272
- chalk.dim('Option 2 - Official installer:\n') +
273
- chalk.cyan(' Download from: https://git-scm.com/download/win'));
274
- case 'linux':
275
- return (chalk.yellow('📖 Manual Git Installation (Linux)\n\n') +
276
- chalk.dim('Debian/Ubuntu:\n') +
277
- chalk.cyan(' sudo apt-get update && sudo apt-get install -y git\n\n') +
278
- chalk.dim('Fedora/RHEL:\n') +
279
- chalk.cyan(' sudo dnf install -y git\n\n') +
280
- chalk.dim('Arch Linux:\n') +
281
- chalk.cyan(' sudo pacman -S git\n\n') +
282
- chalk.dim('Or download from: ') +
283
- chalk.cyan('https://git-scm.com/download/linux'));
284
- default:
285
- return (chalk.yellow('📖 Manual Git Installation\n\n') +
286
- chalk.dim('Download from: ') +
287
- chalk.cyan('https://git-scm.com/downloads'));
288
- }
289
- }
290
- //# sourceMappingURL=git-installer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git-installer.js","sourceRoot":"","sources":["../../src/utils/git-installer.ts"],"names":[],"mappings":"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"}
@@ -1,60 +0,0 @@
1
- /**
2
- * Git Utilities
3
- *
4
- * Provides functions to interact with git repositories:
5
- * - Detect if current directory is a git repository
6
- * - Get remote repository information (owner/name)
7
- * - Get current branch
8
- * - Get git user configuration
9
- */
10
- export interface GitRepoInfo {
11
- isRepo: boolean;
12
- owner: string | null;
13
- name: string | null;
14
- branch: string | null;
15
- userName: string | null;
16
- userEmail: string | null;
17
- remoteUrl: string | null;
18
- }
19
- export interface GitUser {
20
- name: string | null;
21
- email: string | null;
22
- }
23
- export interface GitHubRepo {
24
- owner: string;
25
- name: string;
26
- }
27
- /**
28
- * Check if current directory is inside a git repository
29
- */
30
- export declare function isGitRepository(): Promise<boolean>;
31
- /**
32
- * Get the URL of the 'origin' remote
33
- */
34
- export declare function getRemoteUrl(): Promise<string | null>;
35
- /**
36
- * Parse GitHub repository owner and name from a git remote URL
37
- * Supports both HTTPS and SSH formats:
38
- * - https://github.com/owner/repo.git
39
- * - git@github.com:owner/repo.git
40
- */
41
- export declare function parseGitHubRepo(url: string): GitHubRepo | null;
42
- /**
43
- * Get the current branch name
44
- */
45
- export declare function getCurrentBranch(): Promise<string | null>;
46
- /**
47
- * Get the git repository root directory
48
- * Returns the absolute path to the repository root, or null if not in a git repository
49
- */
50
- export declare function getGitRoot(): Promise<string | null>;
51
- /**
52
- * Get git user configuration (name and email)
53
- */
54
- export declare function getGitUser(): Promise<GitUser>;
55
- /**
56
- * Get comprehensive git repository information
57
- * Returns null if not in a git repository
58
- */
59
- export declare function getGitRepositoryInfo(): Promise<GitRepoInfo | null>;
60
- //# sourceMappingURL=git.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAOxD;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO3D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAsB9D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO/D;AAED;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOzD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAmBnD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAgCxE"}
package/dist/utils/git.js DELETED
@@ -1,144 +0,0 @@
1
- /**
2
- * Git Utilities
3
- *
4
- * Provides functions to interact with git repositories:
5
- * - Detect if current directory is a git repository
6
- * - Get remote repository information (owner/name)
7
- * - Get current branch
8
- * - Get git user configuration
9
- */
10
- import { exec } from 'child_process';
11
- import { promisify } from 'util';
12
- const execAsync = promisify(exec);
13
- /**
14
- * Check if current directory is inside a git repository
15
- */
16
- export async function isGitRepository() {
17
- try {
18
- const { stdout } = await execAsync('git rev-parse --is-inside-work-tree');
19
- return stdout.trim() === 'true';
20
- }
21
- catch {
22
- return false;
23
- }
24
- }
25
- /**
26
- * Get the URL of the 'origin' remote
27
- */
28
- export async function getRemoteUrl() {
29
- try {
30
- const { stdout } = await execAsync('git config --get remote.origin.url');
31
- return stdout.trim() || null;
32
- }
33
- catch {
34
- return null;
35
- }
36
- }
37
- /**
38
- * Parse GitHub repository owner and name from a git remote URL
39
- * Supports both HTTPS and SSH formats:
40
- * - https://github.com/owner/repo.git
41
- * - git@github.com:owner/repo.git
42
- */
43
- export function parseGitHubRepo(url) {
44
- if (!url)
45
- return null;
46
- // Match HTTPS format: https://github.com/owner/repo.git
47
- const httpsMatch = url.match(/https?:\/\/github\.com\/([^/]+)\/([^/]+?)(\.git)?$/);
48
- if (httpsMatch) {
49
- return {
50
- owner: httpsMatch[1],
51
- name: httpsMatch[2],
52
- };
53
- }
54
- // Match SSH format: git@github.com:owner/repo.git
55
- const sshMatch = url.match(/git@github\.com:([^/]+)\/([^/]+?)(\.git)?$/);
56
- if (sshMatch) {
57
- return {
58
- owner: sshMatch[1],
59
- name: sshMatch[2],
60
- };
61
- }
62
- return null;
63
- }
64
- /**
65
- * Get the current branch name
66
- */
67
- export async function getCurrentBranch() {
68
- try {
69
- const { stdout } = await execAsync('git rev-parse --abbrev-ref HEAD');
70
- return stdout.trim() || null;
71
- }
72
- catch {
73
- return null;
74
- }
75
- }
76
- /**
77
- * Get the git repository root directory
78
- * Returns the absolute path to the repository root, or null if not in a git repository
79
- */
80
- export async function getGitRoot() {
81
- try {
82
- const { stdout } = await execAsync('git rev-parse --show-toplevel');
83
- return stdout.trim() || null;
84
- }
85
- catch {
86
- return null;
87
- }
88
- }
89
- /**
90
- * Get git user configuration (name and email)
91
- */
92
- export async function getGitUser() {
93
- let name = null;
94
- let email = null;
95
- try {
96
- const { stdout: nameStdout } = await execAsync('git config --get user.name');
97
- name = nameStdout.trim() || null;
98
- }
99
- catch {
100
- // user.name not configured
101
- }
102
- try {
103
- const { stdout: emailStdout } = await execAsync('git config --get user.email');
104
- email = emailStdout.trim() || null;
105
- }
106
- catch {
107
- // user.email not configured
108
- }
109
- return { name, email };
110
- }
111
- /**
112
- * Get comprehensive git repository information
113
- * Returns null if not in a git repository
114
- */
115
- export async function getGitRepositoryInfo() {
116
- const isRepo = await isGitRepository();
117
- if (!isRepo) {
118
- return {
119
- isRepo: false,
120
- owner: null,
121
- name: null,
122
- branch: null,
123
- userName: null,
124
- userEmail: null,
125
- remoteUrl: null,
126
- };
127
- }
128
- const [remoteUrl, branch, gitUser] = await Promise.all([
129
- getRemoteUrl(),
130
- getCurrentBranch(),
131
- getGitUser(),
132
- ]);
133
- const repo = remoteUrl ? parseGitHubRepo(remoteUrl) : null;
134
- return {
135
- isRepo: true,
136
- owner: repo?.owner || null,
137
- name: repo?.name || null,
138
- branch,
139
- userName: gitUser.name,
140
- userEmail: gitUser.email,
141
- remoteUrl,
142
- };
143
- }
144
- //# sourceMappingURL=git.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- /**
2
- * GitHub Repository Utilities
3
- *
4
- * Provides functions to automate GitHub repository creation and setup using GitHub CLI.
5
- * Falls back to manual instructions when automation is not available.
6
- */
7
- export interface RepoInfo {
8
- owner: string;
9
- name: string;
10
- url: string;
11
- }
12
- /**
13
- * Initialize a git repository in the current directory
14
- */
15
- export declare function initGitRepo(): Promise<boolean>;
16
- /**
17
- * Check if GitHub CLI is authenticated
18
- */
19
- export declare function isGhAuthenticated(): Promise<boolean>;
20
- /**
21
- * Get the current directory name (for suggesting repository name)
22
- */
23
- export declare function getCurrentDirectoryName(): string;
24
- /**
25
- * Create a GitHub repository using GitHub CLI
26
- *
27
- * @param name - Repository name
28
- * @param isPrivate - Whether the repository should be private
29
- * @returns Repository information or null if failed
30
- */
31
- export declare function createGitHubRepoWithGh(name: string, isPrivate: boolean): Promise<RepoInfo | null>;
32
- /**
33
- * Get repository information from git remote
34
- *
35
- * @returns Repository info or null if not found
36
- */
37
- export declare function getRepoInfoFromGit(): Promise<RepoInfo | null>;
38
- /**
39
- * Check if we can use GitHub CLI automation
40
- * (both GitHub CLI installed and authenticated)
41
- */
42
- export declare function canUseGhAutomation(): Promise<boolean>;
43
- //# sourceMappingURL=github-repo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"github-repo.d.ts","sourceRoot":"","sources":["../../src/utils/github-repo.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAOpD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO1D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC3C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,OAAO,GAChB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAyB1B;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA4BnE;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAS3D"}
@@ -1,113 +0,0 @@
1
- /**
2
- * GitHub Repository Utilities
3
- *
4
- * Provides functions to automate GitHub repository creation and setup using GitHub CLI.
5
- * Falls back to manual instructions when automation is not available.
6
- */
7
- import { exec } from 'child_process';
8
- import { promisify } from 'util';
9
- import path from 'path';
10
- const execAsync = promisify(exec);
11
- /**
12
- * Initialize a git repository in the current directory
13
- */
14
- export async function initGitRepo() {
15
- try {
16
- await execAsync('git init');
17
- return true;
18
- }
19
- catch {
20
- return false;
21
- }
22
- }
23
- /**
24
- * Check if GitHub CLI is authenticated
25
- */
26
- export async function isGhAuthenticated() {
27
- try {
28
- await execAsync('gh auth status');
29
- return true;
30
- }
31
- catch {
32
- return false;
33
- }
34
- }
35
- /**
36
- * Get the current directory name (for suggesting repository name)
37
- */
38
- export function getCurrentDirectoryName() {
39
- return path.basename(process.cwd());
40
- }
41
- /**
42
- * Create a GitHub repository using GitHub CLI
43
- *
44
- * @param name - Repository name
45
- * @param isPrivate - Whether the repository should be private
46
- * @returns Repository information or null if failed
47
- */
48
- export async function createGitHubRepoWithGh(name, isPrivate) {
49
- try {
50
- const visibility = isPrivate ? '--private' : '--public';
51
- // Create repository with gh CLI
52
- // --source=. creates repo from current directory and adds remote
53
- const { stdout } = await execAsync(`gh repo create ${name} ${visibility} --source=. --remote=origin`, { timeout: 60000 });
54
- // Parse the repository URL from output
55
- const urlMatch = stdout.match(/https:\/\/github\.com\/([^/]+)\/([^/\s]+)/);
56
- if (!urlMatch) {
57
- return null;
58
- }
59
- return {
60
- owner: urlMatch[1],
61
- name: urlMatch[2],
62
- url: urlMatch[0],
63
- };
64
- }
65
- catch {
66
- return null;
67
- }
68
- }
69
- /**
70
- * Get repository information from git remote
71
- *
72
- * @returns Repository info or null if not found
73
- */
74
- export async function getRepoInfoFromGit() {
75
- try {
76
- const { stdout } = await execAsync('git config --get remote.origin.url');
77
- const url = stdout.trim();
78
- // Parse GitHub URL
79
- const httpsMatch = url.match(/https?:\/\/github\.com\/([^/]+)\/([^/]+?)(\.git)?$/);
80
- if (httpsMatch) {
81
- return {
82
- owner: httpsMatch[1],
83
- name: httpsMatch[2],
84
- url: `https://github.com/${httpsMatch[1]}/${httpsMatch[2]}`,
85
- };
86
- }
87
- const sshMatch = url.match(/git@github\.com:([^/]+)\/([^/]+?)(\.git)?$/);
88
- if (sshMatch) {
89
- return {
90
- owner: sshMatch[1],
91
- name: sshMatch[2],
92
- url: `https://github.com/${sshMatch[1]}/${sshMatch[2]}`,
93
- };
94
- }
95
- return null;
96
- }
97
- catch {
98
- return null;
99
- }
100
- }
101
- /**
102
- * Check if we can use GitHub CLI automation
103
- * (both GitHub CLI installed and authenticated)
104
- */
105
- export async function canUseGhAutomation() {
106
- const { isGhInstalled } = await import('./gh-installer.js');
107
- const ghInstalled = await isGhInstalled();
108
- if (!ghInstalled) {
109
- return false;
110
- }
111
- return isGhAuthenticated();
112
- }
113
- //# sourceMappingURL=github-repo.js.map