@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.
- package/CHANGELOG.md +56 -0
- package/README.md +54 -39
- package/dist/chunk-KNVWIF3L.js +401 -0
- package/dist/chunk-KNVWIF3L.js.map +1 -0
- package/dist/cli.js +6229 -290
- package/dist/cli.js.map +1 -1
- package/dist/gh-installer-B65ZOOC4.js +13 -0
- package/dist/gh-installer-B65ZOOC4.js.map +1 -0
- package/package.json +40 -13
- package/dist/build-config.d.ts +0 -26
- package/dist/build-config.d.ts.map +0 -1
- package/dist/build-config.js +0 -45
- package/dist/build-config.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/handlers/agent.handlers.d.ts +0 -12
- package/dist/handlers/agent.handlers.d.ts.map +0 -1
- package/dist/handlers/agent.handlers.js +0 -130
- package/dist/handlers/agent.handlers.js.map +0 -1
- package/dist/handlers/auth.handlers.d.ts +0 -19
- package/dist/handlers/auth.handlers.d.ts.map +0 -1
- package/dist/handlers/auth.handlers.js +0 -177
- package/dist/handlers/auth.handlers.js.map +0 -1
- package/dist/handlers/index.d.ts +0 -14
- package/dist/handlers/index.d.ts.map +0 -1
- package/dist/handlers/index.js +0 -14
- package/dist/handlers/index.js.map +0 -1
- package/dist/handlers/init.handlers.d.ts +0 -10
- package/dist/handlers/init.handlers.d.ts.map +0 -1
- package/dist/handlers/init.handlers.js +0 -638
- package/dist/handlers/init.handlers.js.map +0 -1
- package/dist/handlers/project.handlers.d.ts +0 -36
- package/dist/handlers/project.handlers.d.ts.map +0 -1
- package/dist/handlers/project.handlers.js +0 -309
- package/dist/handlers/project.handlers.js.map +0 -1
- package/dist/handlers/requirement.handlers.d.ts +0 -32
- package/dist/handlers/requirement.handlers.d.ts.map +0 -1
- package/dist/handlers/requirement.handlers.js +0 -264
- package/dist/handlers/requirement.handlers.js.map +0 -1
- package/dist/handlers/status.handlers.d.ts +0 -12
- package/dist/handlers/status.handlers.d.ts.map +0 -1
- package/dist/handlers/status.handlers.js +0 -212
- package/dist/handlers/status.handlers.js.map +0 -1
- package/dist/handlers/task.handlers.d.ts +0 -29
- package/dist/handlers/task.handlers.d.ts.map +0 -1
- package/dist/handlers/task.handlers.js +0 -326
- package/dist/handlers/task.handlers.js.map +0 -1
- package/dist/handlers/types.d.ts +0 -10
- package/dist/handlers/types.d.ts.map +0 -1
- package/dist/handlers/types.js +0 -5
- package/dist/handlers/types.js.map +0 -1
- package/dist/handlers/update.handlers.d.ts +0 -16
- package/dist/handlers/update.handlers.d.ts.map +0 -1
- package/dist/handlers/update.handlers.js +0 -119
- package/dist/handlers/update.handlers.js.map +0 -1
- package/dist/rpc/registry.d.ts +0 -97
- package/dist/rpc/registry.d.ts.map +0 -1
- package/dist/rpc/registry.js +0 -119
- package/dist/rpc/registry.js.map +0 -1
- package/dist/rpc/server.d.ts +0 -78
- package/dist/rpc/server.d.ts.map +0 -1
- package/dist/rpc/server.js +0 -437
- package/dist/rpc/server.js.map +0 -1
- package/dist/rpc/transport.d.ts +0 -84
- package/dist/rpc/transport.d.ts.map +0 -1
- package/dist/rpc/transport.js +0 -296
- package/dist/rpc/transport.js.map +0 -1
- package/dist/services/__mocks__/utils.d.ts +0 -16
- package/dist/services/__mocks__/utils.d.ts.map +0 -1
- package/dist/services/__mocks__/utils.js +0 -21
- package/dist/services/__mocks__/utils.js.map +0 -1
- package/dist/services/agent-service.d.ts +0 -29
- package/dist/services/agent-service.d.ts.map +0 -1
- package/dist/services/agent-service.js +0 -273
- package/dist/services/agent-service.js.map +0 -1
- package/dist/services/auth.d.ts +0 -59
- package/dist/services/auth.d.ts.map +0 -1
- package/dist/services/auth.js +0 -549
- package/dist/services/auth.js.map +0 -1
- package/dist/services/claude.d.ts +0 -18
- package/dist/services/claude.d.ts.map +0 -1
- package/dist/services/claude.js +0 -164
- package/dist/services/claude.js.map +0 -1
- package/dist/services/credential-store.d.ts +0 -47
- package/dist/services/credential-store.d.ts.map +0 -1
- package/dist/services/credential-store.js +0 -89
- package/dist/services/credential-store.js.map +0 -1
- package/dist/services/internal/github-service.d.ts +0 -67
- package/dist/services/internal/github-service.d.ts.map +0 -1
- package/dist/services/internal/github-service.js +0 -81
- package/dist/services/internal/github-service.js.map +0 -1
- package/dist/services/internal/repository-service.d.ts +0 -79
- package/dist/services/internal/repository-service.d.ts.map +0 -1
- package/dist/services/internal/repository-service.js +0 -88
- package/dist/services/internal/repository-service.js.map +0 -1
- package/dist/services/oauth2-auth.d.ts +0 -76
- package/dist/services/oauth2-auth.d.ts.map +0 -1
- package/dist/services/oauth2-auth.js +0 -451
- package/dist/services/oauth2-auth.js.map +0 -1
- package/dist/services/project-service.d.ts +0 -24
- package/dist/services/project-service.d.ts.map +0 -1
- package/dist/services/project-service.js +0 -60
- package/dist/services/project-service.js.map +0 -1
- package/dist/services/requirement-service.d.ts +0 -32
- package/dist/services/requirement-service.d.ts.map +0 -1
- package/dist/services/requirement-service.js +0 -91
- package/dist/services/requirement-service.js.map +0 -1
- package/dist/services/task-service.d.ts +0 -22
- package/dist/services/task-service.d.ts.map +0 -1
- package/dist/services/task-service.js +0 -52
- package/dist/services/task-service.js.map +0 -1
- package/dist/types/api.d.ts +0 -16
- package/dist/types/api.d.ts.map +0 -1
- package/dist/types/api.js +0 -5
- package/dist/types/api.js.map +0 -1
- package/dist/types/auth.d.ts +0 -73
- package/dist/types/auth.d.ts.map +0 -1
- package/dist/types/auth.js +0 -2
- package/dist/types/auth.js.map +0 -1
- package/dist/types/claude.d.ts +0 -22
- package/dist/types/claude.d.ts.map +0 -1
- package/dist/types/claude.js +0 -2
- package/dist/types/claude.js.map +0 -1
- package/dist/types/github.d.ts +0 -105
- package/dist/types/github.d.ts.map +0 -1
- package/dist/types/github.js +0 -6
- package/dist/types/github.js.map +0 -1
- package/dist/types/local-project.d.ts +0 -30
- package/dist/types/local-project.d.ts.map +0 -1
- package/dist/types/local-project.js +0 -24
- package/dist/types/local-project.js.map +0 -1
- package/dist/types/project.d.ts +0 -56
- package/dist/types/project.d.ts.map +0 -1
- package/dist/types/project.js +0 -5
- package/dist/types/project.js.map +0 -1
- package/dist/types/requirement.d.ts +0 -69
- package/dist/types/requirement.d.ts.map +0 -1
- package/dist/types/requirement.js +0 -5
- package/dist/types/requirement.js.map +0 -1
- package/dist/types/task.d.ts +0 -44
- package/dist/types/task.d.ts.map +0 -1
- package/dist/types/task.js +0 -5
- package/dist/types/task.js.map +0 -1
- package/dist/utils/axios-retry.d.ts +0 -25
- package/dist/utils/axios-retry.d.ts.map +0 -1
- package/dist/utils/axios-retry.js +0 -174
- package/dist/utils/axios-retry.js.map +0 -1
- package/dist/utils/axios-with-auth.d.ts +0 -10
- package/dist/utils/axios-with-auth.d.ts.map +0 -1
- package/dist/utils/axios-with-auth.js +0 -118
- package/dist/utils/axios-with-auth.js.map +0 -1
- package/dist/utils/cli-tools.d.ts +0 -30
- package/dist/utils/cli-tools.d.ts.map +0 -1
- package/dist/utils/cli-tools.js +0 -199
- package/dist/utils/cli-tools.js.map +0 -1
- package/dist/utils/command-execution.d.ts +0 -30
- package/dist/utils/command-execution.d.ts.map +0 -1
- package/dist/utils/command-execution.js +0 -264
- package/dist/utils/command-execution.js.map +0 -1
- package/dist/utils/command-parser.d.ts +0 -85
- package/dist/utils/command-parser.d.ts.map +0 -1
- package/dist/utils/command-parser.js +0 -287
- package/dist/utils/command-parser.js.map +0 -1
- package/dist/utils/config.d.ts +0 -10
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js +0 -77
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/error-formatter.d.ts +0 -17
- package/dist/utils/error-formatter.d.ts.map +0 -1
- package/dist/utils/error-formatter.js +0 -115
- package/dist/utils/error-formatter.js.map +0 -1
- package/dist/utils/formatting.d.ts +0 -10
- package/dist/utils/formatting.d.ts.map +0 -1
- package/dist/utils/formatting.js +0 -122
- package/dist/utils/formatting.js.map +0 -1
- package/dist/utils/gh-installer.d.ts +0 -31
- package/dist/utils/gh-installer.d.ts.map +0 -1
- package/dist/utils/gh-installer.js +0 -296
- package/dist/utils/gh-installer.js.map +0 -1
- package/dist/utils/git-installer.d.ts +0 -31
- package/dist/utils/git-installer.d.ts.map +0 -1
- package/dist/utils/git-installer.js +0 -290
- package/dist/utils/git-installer.js.map +0 -1
- package/dist/utils/git.d.ts +0 -60
- package/dist/utils/git.d.ts.map +0 -1
- package/dist/utils/git.js +0 -144
- package/dist/utils/git.js.map +0 -1
- package/dist/utils/github-repo.d.ts +0 -43
- package/dist/utils/github-repo.d.ts.map +0 -1
- package/dist/utils/github-repo.js +0 -113
- package/dist/utils/github-repo.js.map +0 -1
- package/dist/utils/id-normalization.d.ts +0 -26
- package/dist/utils/id-normalization.d.ts.map +0 -1
- package/dist/utils/id-normalization.js +0 -45
- package/dist/utils/id-normalization.js.map +0 -1
- package/dist/utils/jwt.d.ts +0 -45
- package/dist/utils/jwt.d.ts.map +0 -1
- package/dist/utils/jwt.js +0 -64
- package/dist/utils/jwt.js.map +0 -1
- package/dist/utils/local-store.d.ts +0 -36
- package/dist/utils/local-store.d.ts.map +0 -1
- package/dist/utils/local-store.js +0 -94
- package/dist/utils/local-store.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -36
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -176
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/package-manager-installer.d.ts +0 -36
- package/dist/utils/package-manager-installer.d.ts.map +0 -1
- package/dist/utils/package-manager-installer.js +0 -106
- package/dist/utils/package-manager-installer.js.map +0 -1
- package/dist/utils/package-manager.d.ts +0 -31
- package/dist/utils/package-manager.d.ts.map +0 -1
- package/dist/utils/package-manager.js +0 -133
- package/dist/utils/package-manager.js.map +0 -1
- package/dist/utils/projects.d.ts +0 -23
- package/dist/utils/projects.d.ts.map +0 -1
- package/dist/utils/projects.js +0 -36
- package/dist/utils/projects.js.map +0 -1
- package/dist/utils/repository-access.d.ts +0 -89
- package/dist/utils/repository-access.d.ts.map +0 -1
- package/dist/utils/repository-access.js +0 -132
- package/dist/utils/repository-access.js.map +0 -1
- package/dist/utils/requirements.d.ts +0 -43
- package/dist/utils/requirements.d.ts.map +0 -1
- package/dist/utils/requirements.js +0 -79
- package/dist/utils/requirements.js.map +0 -1
- package/dist/utils/spinner.d.ts +0 -47
- package/dist/utils/spinner.d.ts.map +0 -1
- package/dist/utils/spinner.js +0 -101
- package/dist/utils/spinner.js.map +0 -1
- package/dist/utils/status-parser.d.ts +0 -95
- package/dist/utils/status-parser.d.ts.map +0 -1
- package/dist/utils/status-parser.js +0 -205
- package/dist/utils/status-parser.js.map +0 -1
- package/dist/utils/tasks.d.ts +0 -21
- package/dist/utils/tasks.d.ts.map +0 -1
- package/dist/utils/tasks.js +0 -63
- package/dist/utils/tasks.js.map +0 -1
- package/dist/utils/workspace-manager.d.ts +0 -65
- package/dist/utils/workspace-manager.d.ts.map +0 -1
- package/dist/utils/workspace-manager.js +0 -98
- package/dist/utils/workspace-manager.js.map +0 -1
package/dist/utils/formatting.js
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { formatRequirementId } from './requirements.js';
|
|
3
|
-
import { formatTaskId, getTaskStatusIcon } from './tasks.js';
|
|
4
|
-
export function formatRequirementsList(requirements, total) {
|
|
5
|
-
if (requirements.length === 0) {
|
|
6
|
-
return chalk.yellow('No requirements found.\n');
|
|
7
|
-
}
|
|
8
|
-
let output = chalk.bold.cyan(`📋 Requirements (${requirements.length} of ${total})\n\n`);
|
|
9
|
-
requirements.forEach((req, index) => {
|
|
10
|
-
const statusColor = getStatusColor(req.status);
|
|
11
|
-
const statusIcon = getStatusIcon(req.status);
|
|
12
|
-
output += chalk.bold(`${index + 1}. ${req.name}\n`);
|
|
13
|
-
output += ` ${statusIcon} Status: ${statusColor(req.status)}\n`;
|
|
14
|
-
output += ` 📝 ${req.description}\n`;
|
|
15
|
-
output += ` 🆔 ID: ${chalk.gray(formatRequirementId(req))}\n`;
|
|
16
|
-
output += ` 📎 UUID: ${chalk.gray(req.id)}\n`;
|
|
17
|
-
if (req.assigned_to) {
|
|
18
|
-
output += ` 👤 Assigned: ${chalk.blue(req.assigned_to)}\n`;
|
|
19
|
-
}
|
|
20
|
-
output += ` 📅 Updated: ${chalk.gray(new Date(req.updated_at).toLocaleDateString())}\n\n`;
|
|
21
|
-
});
|
|
22
|
-
return output;
|
|
23
|
-
}
|
|
24
|
-
export function formatRequirementDetail(requirement) {
|
|
25
|
-
const statusColor = getStatusColor(requirement.status);
|
|
26
|
-
const statusIcon = getStatusIcon(requirement.status);
|
|
27
|
-
let output = chalk.bold.cyan(`📋 Requirement Details\n`);
|
|
28
|
-
output += chalk.gray('━'.repeat(50)) + '\n\n';
|
|
29
|
-
output += chalk.bold(`Name: ${requirement.name}\n`);
|
|
30
|
-
output += `${statusIcon} Status: ${statusColor(requirement.status)}\n`;
|
|
31
|
-
output += `🆔 ID: ${chalk.gray(formatRequirementId(requirement))}\n`;
|
|
32
|
-
output += `📎 UUID: ${chalk.gray(requirement.id)}\n`;
|
|
33
|
-
if (requirement.assigned_to) {
|
|
34
|
-
output += `👤 Assigned: ${chalk.blue(requirement.assigned_to)}\n`;
|
|
35
|
-
}
|
|
36
|
-
output += `📅 Created: ${chalk.gray(new Date(requirement.created_at).toLocaleDateString())}\n`;
|
|
37
|
-
output += `📅 Updated: ${chalk.gray(new Date(requirement.updated_at).toLocaleDateString())}\n\n`;
|
|
38
|
-
output += chalk.bold('Description:\n');
|
|
39
|
-
output += `${requirement.description}\n\n`;
|
|
40
|
-
return output;
|
|
41
|
-
}
|
|
42
|
-
export function formatTasksList(tasks, total) {
|
|
43
|
-
if (tasks.length === 0) {
|
|
44
|
-
return chalk.yellow('No tasks found.\n');
|
|
45
|
-
}
|
|
46
|
-
const displayTotal = total !== undefined ? ` of ${total}` : '';
|
|
47
|
-
let output = chalk.bold.cyan(`📝 Tasks (${tasks.length}${displayTotal})\n\n`);
|
|
48
|
-
tasks.forEach((task, index) => {
|
|
49
|
-
const statusColor = getStatusColor(task.status);
|
|
50
|
-
const statusIcon = getTaskStatusIcon(task.status);
|
|
51
|
-
output += chalk.bold(`${index + 1}. ${task.title}\n`);
|
|
52
|
-
output += ` ${statusIcon} Status: ${statusColor(task.status)}\n`;
|
|
53
|
-
output += ` 📄 ${task.content}\n`;
|
|
54
|
-
output += ` 🆔 ID: ${chalk.gray(formatTaskId(task))}\n`;
|
|
55
|
-
output += ` 📎 UUID: ${chalk.gray(task.id)}\n`;
|
|
56
|
-
if (task.assigned_to) {
|
|
57
|
-
output += ` 👤 Assigned: ${chalk.blue(task.assigned_to)}\n`;
|
|
58
|
-
}
|
|
59
|
-
output += ` 📅 Updated: ${chalk.gray(new Date(task.updated_at).toLocaleDateString())}\n\n`;
|
|
60
|
-
});
|
|
61
|
-
return output;
|
|
62
|
-
}
|
|
63
|
-
export function formatTaskDetail(task) {
|
|
64
|
-
const statusColor = getStatusColor(task.status);
|
|
65
|
-
const statusIcon = getTaskStatusIcon(task.status);
|
|
66
|
-
let output = chalk.bold.cyan(`📝 Task Details\n`);
|
|
67
|
-
output += chalk.gray('━'.repeat(50)) + '\n\n';
|
|
68
|
-
output += chalk.bold(`Title: ${task.title}\n`);
|
|
69
|
-
output += `${statusIcon} Status: ${statusColor(task.status)}\n`;
|
|
70
|
-
output += `🆔 ID: ${chalk.gray(formatTaskId(task))}\n`;
|
|
71
|
-
output += `📎 UUID: ${chalk.gray(task.id)}\n`;
|
|
72
|
-
output += `🔗 Requirement: ${chalk.gray(task.requirement_id)}\n`;
|
|
73
|
-
if (task.assigned_to) {
|
|
74
|
-
output += `👤 Assigned: ${chalk.blue(task.assigned_to)}\n`;
|
|
75
|
-
}
|
|
76
|
-
output += `📅 Created: ${chalk.gray(new Date(task.created_at).toLocaleDateString())}\n`;
|
|
77
|
-
output += `📅 Updated: ${chalk.gray(new Date(task.updated_at).toLocaleDateString())}\n\n`;
|
|
78
|
-
output += chalk.bold('Content:\n');
|
|
79
|
-
output += `${task.content}\n\n`;
|
|
80
|
-
return output;
|
|
81
|
-
}
|
|
82
|
-
export function formatErrorMessage(message) {
|
|
83
|
-
return chalk.red(`❌ ${message}`);
|
|
84
|
-
}
|
|
85
|
-
export function formatSuccessMessage(message) {
|
|
86
|
-
return chalk.green(`✅ ${message}`);
|
|
87
|
-
}
|
|
88
|
-
export function formatInfoMessage(message) {
|
|
89
|
-
return chalk.blue(`ℹ️ ${message}`);
|
|
90
|
-
}
|
|
91
|
-
export function formatWarningMessage(message) {
|
|
92
|
-
return chalk.yellow(`⚠️ ${message}`);
|
|
93
|
-
}
|
|
94
|
-
function getStatusColor(status) {
|
|
95
|
-
switch (status) {
|
|
96
|
-
case 'PLANNED':
|
|
97
|
-
return chalk.blue;
|
|
98
|
-
case 'IN_PROGRESS':
|
|
99
|
-
return chalk.yellow;
|
|
100
|
-
case 'COMPLETED':
|
|
101
|
-
return chalk.green;
|
|
102
|
-
case 'CANCELLED':
|
|
103
|
-
return chalk.red;
|
|
104
|
-
default:
|
|
105
|
-
return chalk.gray;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
function getStatusIcon(status) {
|
|
109
|
-
switch (status) {
|
|
110
|
-
case 'PLANNED':
|
|
111
|
-
return '📋';
|
|
112
|
-
case 'IN_PROGRESS':
|
|
113
|
-
return '🔄';
|
|
114
|
-
case 'COMPLETED':
|
|
115
|
-
return '✅';
|
|
116
|
-
case 'CANCELLED':
|
|
117
|
-
return '❌';
|
|
118
|
-
default:
|
|
119
|
-
return '❓';
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=formatting.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../src/utils/formatting.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GitHub CLI Installer Utility
|
|
3
|
-
*
|
|
4
|
-
* Automatically installs GitHub CLI on the user's system using platform-specific methods:
|
|
5
|
-
* - macOS: Homebrew (if installed) or Webi (automated installer)
|
|
6
|
-
* - Windows: winget
|
|
7
|
-
* - Linux: apt/dnf/pacman (auto-detected)
|
|
8
|
-
*/
|
|
9
|
-
export interface GhInstallResult {
|
|
10
|
-
success: boolean;
|
|
11
|
-
message: string;
|
|
12
|
-
version?: string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Check if GitHub CLI is installed
|
|
16
|
-
*/
|
|
17
|
-
export declare function isGhInstalled(): Promise<boolean>;
|
|
18
|
-
/**
|
|
19
|
-
* Get GitHub CLI version if installed
|
|
20
|
-
*/
|
|
21
|
-
export declare function getGhVersion(): Promise<string | null>;
|
|
22
|
-
/**
|
|
23
|
-
* Install GitHub CLI on the current platform
|
|
24
|
-
* Auto-detects platform and uses appropriate installation method
|
|
25
|
-
*/
|
|
26
|
-
export declare function installGh(): Promise<GhInstallResult>;
|
|
27
|
-
/**
|
|
28
|
-
* Get manual installation instructions for the current platform
|
|
29
|
-
*/
|
|
30
|
-
export declare function getGhManualInstallInstructions(): string;
|
|
31
|
-
//# sourceMappingURL=gh-installer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gh-installer.d.ts","sourceRoot":"","sources":["../../src/utils/gh-installer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAEtD;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAK3D;AAgPD;;;GAGG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC,CAsB1D;AAED;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,CA8CvD"}
|
|
@@ -1,296 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GitHub CLI Installer Utility
|
|
3
|
-
*
|
|
4
|
-
* Automatically installs GitHub CLI on the user's system using platform-specific methods:
|
|
5
|
-
* - macOS: Homebrew (if installed) or Webi (automated installer)
|
|
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 GitHub CLI is installed
|
|
17
|
-
*/
|
|
18
|
-
export async function isGhInstalled() {
|
|
19
|
-
return isCliInstalled('gh');
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Get GitHub CLI version if installed
|
|
23
|
-
*/
|
|
24
|
-
export async function getGhVersion() {
|
|
25
|
-
return getCliVersion('gh', '--version', output => {
|
|
26
|
-
const match = output.match(/gh version ([\d.]+)/);
|
|
27
|
-
return match ? match[1] : null;
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Install GitHub CLI on macOS via Homebrew (when Homebrew is already installed)
|
|
32
|
-
*/
|
|
33
|
-
async function installViaHomebrew() {
|
|
34
|
-
console.log(chalk.blue('📦 Installing GitHub CLI via Homebrew...'));
|
|
35
|
-
try {
|
|
36
|
-
await execAsync('brew install gh', {
|
|
37
|
-
timeout: 300000, // 5 minutes
|
|
38
|
-
});
|
|
39
|
-
// Verify installation
|
|
40
|
-
const version = await getGhVersion();
|
|
41
|
-
if (!version) {
|
|
42
|
-
return {
|
|
43
|
-
success: false,
|
|
44
|
-
message: chalk.red('❌ GitHub CLI installation completed but gh command not found'),
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
return {
|
|
48
|
-
success: true,
|
|
49
|
-
message: chalk.green(`✅ GitHub CLI 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 GitHub CLI via Homebrew\n\n') +
|
|
58
|
-
chalk.dim('Error: ') +
|
|
59
|
-
errorMsg +
|
|
60
|
-
'\n\n' +
|
|
61
|
-
chalk.dim('Please install GitHub CLI manually from: ') +
|
|
62
|
-
chalk.cyan('https://cli.github.com/'),
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Install GitHub CLI on macOS via Webi (automated installer, no Homebrew needed)
|
|
68
|
-
*/
|
|
69
|
-
async function installViaWebi() {
|
|
70
|
-
console.log(chalk.blue('📦 Installing GitHub CLI via Webi...'));
|
|
71
|
-
console.log(chalk.dim('This will install gh to ~/.local/bin/\n'));
|
|
72
|
-
try {
|
|
73
|
-
await execAsync('curl -sS https://webi.sh/gh | sh', {
|
|
74
|
-
timeout: 300000, // 5 minutes
|
|
75
|
-
});
|
|
76
|
-
// Verify installation
|
|
77
|
-
const version = await getGhVersion();
|
|
78
|
-
if (!version) {
|
|
79
|
-
// Installation succeeded but PATH not updated yet
|
|
80
|
-
return {
|
|
81
|
-
success: true,
|
|
82
|
-
message: chalk.green('✅ GitHub CLI installed successfully!\n') +
|
|
83
|
-
chalk.dim('Note: You may need to restart your terminal for the gh command to be available.'),
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
return {
|
|
87
|
-
success: true,
|
|
88
|
-
message: chalk.green(`✅ GitHub CLI installed successfully (version ${version})!`),
|
|
89
|
-
version,
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
catch (error) {
|
|
93
|
-
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
94
|
-
return {
|
|
95
|
-
success: false,
|
|
96
|
-
message: chalk.red('❌ Failed to install GitHub CLI via Webi\n\n') +
|
|
97
|
-
chalk.dim('Error: ') +
|
|
98
|
-
errorMsg +
|
|
99
|
-
'\n\n' +
|
|
100
|
-
chalk.dim('Please install GitHub CLI manually from: ') +
|
|
101
|
-
chalk.cyan('https://cli.github.com/'),
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Install GitHub CLI on macOS using best available method
|
|
107
|
-
* Strategy: Use Homebrew if installed, otherwise use Webi
|
|
108
|
-
*/
|
|
109
|
-
async function installGhMacOS() {
|
|
110
|
-
// Check if Homebrew is already installed
|
|
111
|
-
const hasHomebrew = await isHomebrewInstalled();
|
|
112
|
-
if (hasHomebrew) {
|
|
113
|
-
// User already has Homebrew - use it (fast and familiar)
|
|
114
|
-
return installViaHomebrew();
|
|
115
|
-
}
|
|
116
|
-
// No Homebrew - use Webi (automated installer, no package manager needed)
|
|
117
|
-
return installViaWebi();
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Install GitHub CLI on Windows using winget
|
|
121
|
-
*/
|
|
122
|
-
async function installGhWindows() {
|
|
123
|
-
// Check if winget is available
|
|
124
|
-
const hasWinget = await isWingetAvailable();
|
|
125
|
-
if (!hasWinget) {
|
|
126
|
-
return {
|
|
127
|
-
success: false,
|
|
128
|
-
message: chalk.red('❌ winget is not available on this system\n\n') +
|
|
129
|
-
chalk.dim('winget is included in Windows 10 (version 1809+) and Windows 11.\n') +
|
|
130
|
-
chalk.dim('Please install GitHub CLI manually from: ') +
|
|
131
|
-
chalk.cyan('https://cli.github.com/'),
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
console.log(chalk.blue('📦 Installing GitHub CLI via winget...'));
|
|
135
|
-
try {
|
|
136
|
-
await execAsync('winget install --id GitHub.cli --silent', {
|
|
137
|
-
timeout: 300000, // 5 minutes
|
|
138
|
-
});
|
|
139
|
-
// Verify installation
|
|
140
|
-
const version = await getGhVersion();
|
|
141
|
-
if (!version) {
|
|
142
|
-
return {
|
|
143
|
-
success: false,
|
|
144
|
-
message: chalk.red('❌ GitHub CLI installation completed but gh command not found'),
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
return {
|
|
148
|
-
success: true,
|
|
149
|
-
message: chalk.green(`✅ GitHub CLI installed successfully (version ${version})!`),
|
|
150
|
-
version,
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
catch (error) {
|
|
154
|
-
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
155
|
-
return {
|
|
156
|
-
success: false,
|
|
157
|
-
message: chalk.red('❌ Failed to install GitHub CLI via winget\n\n') +
|
|
158
|
-
chalk.dim('Error: ') +
|
|
159
|
-
errorMsg +
|
|
160
|
-
'\n\n' +
|
|
161
|
-
chalk.dim('Please install GitHub CLI manually from: ') +
|
|
162
|
-
chalk.cyan('https://cli.github.com/'),
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Install GitHub CLI on Linux using detected package manager
|
|
168
|
-
*/
|
|
169
|
-
async function installGhLinux() {
|
|
170
|
-
const packageManager = await detectLinuxPackageManager();
|
|
171
|
-
if (!packageManager) {
|
|
172
|
-
return {
|
|
173
|
-
success: false,
|
|
174
|
-
message: chalk.red('❌ Could not detect a supported package manager\n\n') +
|
|
175
|
-
chalk.dim('Supported package managers: apt, dnf, yum, pacman\n') +
|
|
176
|
-
chalk.dim('Please install GitHub CLI manually from: ') +
|
|
177
|
-
chalk.cyan('https://cli.github.com/'),
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
console.log(chalk.blue(`📦 Installing GitHub CLI via ${packageManager.name}...`));
|
|
181
|
-
console.log(chalk.dim('This may prompt for your sudo password.\n'));
|
|
182
|
-
try {
|
|
183
|
-
let installCommand;
|
|
184
|
-
switch (packageManager.name) {
|
|
185
|
-
case 'apt':
|
|
186
|
-
// Add GitHub CLI repository and install
|
|
187
|
-
installCommand =
|
|
188
|
-
'curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg && ' +
|
|
189
|
-
'sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg && ' +
|
|
190
|
-
'echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null && ' +
|
|
191
|
-
'sudo apt update && sudo apt install gh -y';
|
|
192
|
-
break;
|
|
193
|
-
case 'dnf':
|
|
194
|
-
installCommand = 'sudo dnf install gh -y';
|
|
195
|
-
break;
|
|
196
|
-
case 'yum':
|
|
197
|
-
installCommand = 'sudo yum install gh -y';
|
|
198
|
-
break;
|
|
199
|
-
case 'pacman':
|
|
200
|
-
installCommand = 'sudo pacman -S --noconfirm github-cli';
|
|
201
|
-
break;
|
|
202
|
-
default:
|
|
203
|
-
return {
|
|
204
|
-
success: false,
|
|
205
|
-
message: chalk.red(`❌ Unsupported package manager: ${packageManager.name}`),
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
await execAsync(installCommand, {
|
|
209
|
-
timeout: 300000, // 5 minutes
|
|
210
|
-
});
|
|
211
|
-
// Verify installation
|
|
212
|
-
const version = await getGhVersion();
|
|
213
|
-
if (!version) {
|
|
214
|
-
return {
|
|
215
|
-
success: false,
|
|
216
|
-
message: chalk.red('❌ GitHub CLI installation completed but gh command not found'),
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
return {
|
|
220
|
-
success: true,
|
|
221
|
-
message: chalk.green(`✅ GitHub CLI installed successfully (version ${version})!`),
|
|
222
|
-
version,
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
catch (error) {
|
|
226
|
-
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
227
|
-
return {
|
|
228
|
-
success: false,
|
|
229
|
-
message: chalk.red('❌ Failed to install GitHub CLI\n\n') +
|
|
230
|
-
chalk.dim('Error: ') +
|
|
231
|
-
errorMsg +
|
|
232
|
-
'\n\n' +
|
|
233
|
-
chalk.dim('Please install GitHub CLI manually from: ') +
|
|
234
|
-
chalk.cyan('https://cli.github.com/'),
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Install GitHub CLI on the current platform
|
|
240
|
-
* Auto-detects platform and uses appropriate installation method
|
|
241
|
-
*/
|
|
242
|
-
export async function installGh() {
|
|
243
|
-
const platform = process.platform;
|
|
244
|
-
switch (platform) {
|
|
245
|
-
case 'darwin':
|
|
246
|
-
return installGhMacOS();
|
|
247
|
-
case 'win32':
|
|
248
|
-
return installGhWindows();
|
|
249
|
-
case 'linux':
|
|
250
|
-
return installGhLinux();
|
|
251
|
-
default:
|
|
252
|
-
return {
|
|
253
|
-
success: false,
|
|
254
|
-
message: chalk.red(`❌ Unsupported platform: ${platform}\n\n`) +
|
|
255
|
-
chalk.dim('Please install GitHub CLI manually from: ') +
|
|
256
|
-
chalk.cyan('https://cli.github.com/'),
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* Get manual installation instructions for the current platform
|
|
262
|
-
*/
|
|
263
|
-
export function getGhManualInstallInstructions() {
|
|
264
|
-
const platform = process.platform;
|
|
265
|
-
switch (platform) {
|
|
266
|
-
case 'darwin':
|
|
267
|
-
return (chalk.yellow('📖 Manual GitHub CLI Installation (macOS)\n\n') +
|
|
268
|
-
chalk.dim('Option 1 - Webi (recommended, no Homebrew needed):\n') +
|
|
269
|
-
chalk.cyan(' curl -sS https://webi.sh/gh | sh\n\n') +
|
|
270
|
-
chalk.dim('Option 2 - Homebrew:\n') +
|
|
271
|
-
chalk.cyan(' brew install gh\n\n') +
|
|
272
|
-
chalk.dim('Option 3 - Direct download:\n') +
|
|
273
|
-
chalk.cyan(' Download from: https://cli.github.com/'));
|
|
274
|
-
case 'win32':
|
|
275
|
-
return (chalk.yellow('📖 Manual GitHub CLI Installation (Windows)\n\n') +
|
|
276
|
-
chalk.dim('Option 1 - winget (Windows 10+):\n') +
|
|
277
|
-
chalk.cyan(' winget install --id GitHub.cli\n\n') +
|
|
278
|
-
chalk.dim('Option 2 - Direct download:\n') +
|
|
279
|
-
chalk.cyan(' Download from: https://cli.github.com/'));
|
|
280
|
-
case 'linux':
|
|
281
|
-
return (chalk.yellow('📖 Manual GitHub CLI Installation (Linux)\n\n') +
|
|
282
|
-
chalk.dim('Debian/Ubuntu:\n') +
|
|
283
|
-
chalk.cyan(' See instructions at: https://github.com/cli/cli/blob/trunk/docs/install_linux.md#debian-ubuntu-linux-raspberry-pi-os-apt\n\n') +
|
|
284
|
-
chalk.dim('Fedora/RHEL:\n') +
|
|
285
|
-
chalk.cyan(' sudo dnf install gh\n\n') +
|
|
286
|
-
chalk.dim('Arch Linux:\n') +
|
|
287
|
-
chalk.cyan(' sudo pacman -S github-cli\n\n') +
|
|
288
|
-
chalk.dim('Or download from: ') +
|
|
289
|
-
chalk.cyan('https://cli.github.com/'));
|
|
290
|
-
default:
|
|
291
|
-
return (chalk.yellow('📖 Manual GitHub CLI Installation\n\n') +
|
|
292
|
-
chalk.dim('Download from: ') +
|
|
293
|
-
chalk.cyan('https://cli.github.com/'));
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
//# sourceMappingURL=gh-installer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gh-installer.js","sourceRoot":"","sources":["../../src/utils/gh-installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +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
|
-
export interface GitInstallResult {
|
|
10
|
-
success: boolean;
|
|
11
|
-
message: string;
|
|
12
|
-
version?: string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Check if Git is installed
|
|
16
|
-
*/
|
|
17
|
-
export declare function isGitInstalled(): Promise<boolean>;
|
|
18
|
-
/**
|
|
19
|
-
* Get Git version if installed
|
|
20
|
-
*/
|
|
21
|
-
export declare function getGitVersion(): Promise<string | null>;
|
|
22
|
-
/**
|
|
23
|
-
* Install Git on the current platform
|
|
24
|
-
* Auto-detects platform and uses appropriate package manager
|
|
25
|
-
*/
|
|
26
|
-
export declare function installGit(): Promise<GitInstallResult>;
|
|
27
|
-
/**
|
|
28
|
-
* Get manual installation instructions for the current platform
|
|
29
|
-
*/
|
|
30
|
-
export declare function getManualInstallInstructions(): string;
|
|
31
|
-
//# sourceMappingURL=git-installer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git-installer.d.ts","sourceRoot":"","sources":["../../src/utils/git-installer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAEvD;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAK5D;AAsOD;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAsB5D;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CA+CrD"}
|