@braingrid/cli 0.2.0 → 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 +32 -0
- package/README.md +54 -38
- package/dist/chunk-KNVWIF3L.js +401 -0
- package/dist/chunk-KNVWIF3L.js.map +1 -0
- package/dist/cli.js +6236 -245
- 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 +19 -11
- 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/auth.handlers.d.ts +0 -13
- package/dist/handlers/auth.handlers.d.ts.map +0 -1
- package/dist/handlers/auth.handlers.js +0 -111
- package/dist/handlers/auth.handlers.js.map +0 -1
- package/dist/handlers/index.d.ts +0 -13
- package/dist/handlers/index.d.ts.map +0 -1
- package/dist/handlers/index.js +0 -13
- 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/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/cli-tools.js
DELETED
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CLI Tools Detection Utilities
|
|
3
|
-
*
|
|
4
|
-
* Detects installed AI coding tools and CLI utilities:
|
|
5
|
-
* - Checks if common AI IDE CLIs are installed
|
|
6
|
-
* - Gets version information where available
|
|
7
|
-
* - Cross-platform support (macOS, Linux, Windows)
|
|
8
|
-
*/
|
|
9
|
-
import { exec } from 'child_process';
|
|
10
|
-
import { promisify } from 'util';
|
|
11
|
-
import { access, constants } from 'fs/promises';
|
|
12
|
-
import { homedir } from 'os';
|
|
13
|
-
import { join } from 'path';
|
|
14
|
-
const execAsync = promisify(exec);
|
|
15
|
-
// Claude Code local installation path after migrate-installer
|
|
16
|
-
const CLAUDE_LOCAL_PATH = join(homedir(), '.claude', 'local', 'claude');
|
|
17
|
-
/**
|
|
18
|
-
* Check if Claude Code is installed
|
|
19
|
-
* Special handling for Claude CLI after `claude migrate-installer`
|
|
20
|
-
*
|
|
21
|
-
* The migrate-installer command moves the Claude Code executable from PATH
|
|
22
|
-
* to ~/.claude/local/claude, so standard PATH checks fail.
|
|
23
|
-
*
|
|
24
|
-
* Detection priority:
|
|
25
|
-
* 1. Check ~/.claude/local/claude (after migrate-installer)
|
|
26
|
-
* 2. Try executing `claude --version` (may work via shell alias)
|
|
27
|
-
* 3. Check PATH with `which claude`
|
|
28
|
-
*/
|
|
29
|
-
async function checkClaudeInstalled() {
|
|
30
|
-
// Priority 1: Check ~/.claude/local/claude (after migrate-installer)
|
|
31
|
-
try {
|
|
32
|
-
await access(CLAUDE_LOCAL_PATH, constants.X_OK);
|
|
33
|
-
return true;
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
// Fall through to next check
|
|
37
|
-
}
|
|
38
|
-
// Priority 2: Try executing claude --version (may work via shell alias)
|
|
39
|
-
try {
|
|
40
|
-
await execAsync('claude --version 2>&1', { timeout: 2000 });
|
|
41
|
-
return true;
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
// Fall through to PATH check
|
|
45
|
-
}
|
|
46
|
-
// Priority 3: Check PATH with which
|
|
47
|
-
return isCliInstalled('claude');
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Get Claude Code version
|
|
51
|
-
* Tries local path first, then falls back to standard version check
|
|
52
|
-
*/
|
|
53
|
-
async function getClaudeVersion() {
|
|
54
|
-
// Try local path first
|
|
55
|
-
try {
|
|
56
|
-
await access(CLAUDE_LOCAL_PATH, constants.X_OK);
|
|
57
|
-
const result = await execAsync(`"${CLAUDE_LOCAL_PATH}" --version 2>&1`, {
|
|
58
|
-
timeout: 2000,
|
|
59
|
-
});
|
|
60
|
-
const output = result.stdout || result.stderr;
|
|
61
|
-
const match = output.match(/([\d.]+)/);
|
|
62
|
-
return match ? match[1] : null;
|
|
63
|
-
}
|
|
64
|
-
catch {
|
|
65
|
-
// Fall through to regular version check
|
|
66
|
-
}
|
|
67
|
-
// Fall back to regular claude command
|
|
68
|
-
return getCliVersion('claude', '--version', output => {
|
|
69
|
-
const match = output.match(/([\d.]+)/);
|
|
70
|
-
return match ? match[1] : null;
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
const CLI_TOOLS = [
|
|
74
|
-
{
|
|
75
|
-
name: 'Git',
|
|
76
|
-
command: 'git',
|
|
77
|
-
versionFlag: '--version',
|
|
78
|
-
versionParser: output => {
|
|
79
|
-
const match = output.match(/git version ([\d.]+)/);
|
|
80
|
-
return match ? match[1] : null;
|
|
81
|
-
},
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
name: 'GitHub CLI',
|
|
85
|
-
command: 'gh',
|
|
86
|
-
versionFlag: '--version',
|
|
87
|
-
versionParser: output => {
|
|
88
|
-
const match = output.match(/gh version ([\d.]+)/);
|
|
89
|
-
return match ? match[1] : null;
|
|
90
|
-
},
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
name: 'Claude Code',
|
|
94
|
-
command: 'claude',
|
|
95
|
-
specialCheck: checkClaudeInstalled,
|
|
96
|
-
specialVersionCheck: getClaudeVersion,
|
|
97
|
-
versionFlag: '--version',
|
|
98
|
-
versionParser: output => {
|
|
99
|
-
// Output format: "2.0.1 (Claude Code)"
|
|
100
|
-
const match = output.match(/([\d.]+)/);
|
|
101
|
-
return match ? match[1] : null;
|
|
102
|
-
},
|
|
103
|
-
},
|
|
104
|
-
];
|
|
105
|
-
/**
|
|
106
|
-
* Check if a CLI command is installed
|
|
107
|
-
* Uses user's shell to access PATH (supports shell-installed CLIs)
|
|
108
|
-
*/
|
|
109
|
-
export async function isCliInstalled(command) {
|
|
110
|
-
try {
|
|
111
|
-
if (process.platform === 'win32') {
|
|
112
|
-
await execAsync(`where ${command}`, { timeout: 2000 });
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
// Use which command to check PATH
|
|
116
|
-
await execAsync(`which ${command} 2>/dev/null`, { timeout: 2000 });
|
|
117
|
-
}
|
|
118
|
-
return true;
|
|
119
|
-
}
|
|
120
|
-
catch {
|
|
121
|
-
return false;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Get the version of a CLI tool
|
|
126
|
-
* Returns null if version cannot be determined
|
|
127
|
-
*/
|
|
128
|
-
export async function getCliVersion(command, versionFlag = '--version', parser) {
|
|
129
|
-
try {
|
|
130
|
-
const result = await execAsync(`${command} ${versionFlag} 2>&1`, {
|
|
131
|
-
timeout: 2000,
|
|
132
|
-
});
|
|
133
|
-
const output = result.stdout || result.stderr;
|
|
134
|
-
if (parser) {
|
|
135
|
-
return parser(output);
|
|
136
|
-
}
|
|
137
|
-
// Default: return first line, trimmed
|
|
138
|
-
return output.trim().split('\n')[0] || null;
|
|
139
|
-
}
|
|
140
|
-
catch {
|
|
141
|
-
return null;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Check a single CLI tool (installed status and version)
|
|
146
|
-
*/
|
|
147
|
-
async function checkCliTool(config) {
|
|
148
|
-
// Use special check if provided, otherwise use standard check
|
|
149
|
-
const installed = config.specialCheck
|
|
150
|
-
? await config.specialCheck()
|
|
151
|
-
: await isCliInstalled(config.command);
|
|
152
|
-
if (!installed) {
|
|
153
|
-
return {
|
|
154
|
-
name: config.name,
|
|
155
|
-
command: config.command,
|
|
156
|
-
installed: false,
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
// Try to get version - use special version check if provided
|
|
160
|
-
let version;
|
|
161
|
-
if (config.specialVersionCheck) {
|
|
162
|
-
const versionStr = await config.specialVersionCheck();
|
|
163
|
-
if (versionStr) {
|
|
164
|
-
version = versionStr;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
else if (config.versionFlag) {
|
|
168
|
-
const versionStr = await getCliVersion(config.command, config.versionFlag, config.versionParser);
|
|
169
|
-
if (versionStr) {
|
|
170
|
-
version = versionStr;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
return {
|
|
174
|
-
name: config.name,
|
|
175
|
-
command: config.command,
|
|
176
|
-
installed: true,
|
|
177
|
-
version,
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Check all configured CLI tools in parallel
|
|
182
|
-
* Returns array of CLI tool information
|
|
183
|
-
*/
|
|
184
|
-
export async function checkInstalledCliTools() {
|
|
185
|
-
try {
|
|
186
|
-
const results = await Promise.all(CLI_TOOLS.map(config => checkCliTool(config)));
|
|
187
|
-
return results;
|
|
188
|
-
}
|
|
189
|
-
catch {
|
|
190
|
-
// If something goes catastrophically wrong, return empty array
|
|
191
|
-
// This ensures status command never fails due to CLI detection
|
|
192
|
-
return CLI_TOOLS.map(config => ({
|
|
193
|
-
name: config.name,
|
|
194
|
-
command: config.command,
|
|
195
|
-
installed: false,
|
|
196
|
-
}));
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
//# sourceMappingURL=cli-tools.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-tools.js","sourceRoot":"","sources":["../../src/utils/cli-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
export interface ExecResult {
|
|
2
|
-
stdout: string;
|
|
3
|
-
stderr: string;
|
|
4
|
-
}
|
|
5
|
-
export interface ExecOptions {
|
|
6
|
-
maxBuffer?: number;
|
|
7
|
-
timeout?: number;
|
|
8
|
-
cwd?: string;
|
|
9
|
-
env?: NodeJS.ProcessEnv;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Execute a command asynchronously with proper buffer limits and timeout handling
|
|
13
|
-
*/
|
|
14
|
-
export declare function execAsync(command: string, options?: ExecOptions, isTestMode?: boolean, mockExecHandler?: (command: string) => Promise<ExecResult>): Promise<ExecResult>;
|
|
15
|
-
/**
|
|
16
|
-
* Execute a command with streaming output support
|
|
17
|
-
*/
|
|
18
|
-
export declare function execStreamAsync(command: string, onOutput?: (chunk: string) => void, isTestMode?: boolean, mockExecHandler?: (command: string) => Promise<ExecResult>, options?: {
|
|
19
|
-
timeout?: number;
|
|
20
|
-
inactivityTimeout?: number;
|
|
21
|
-
}): Promise<ExecResult>;
|
|
22
|
-
/**
|
|
23
|
-
* Execute git commit with smart timeout handling for pre-commit hooks
|
|
24
|
-
*/
|
|
25
|
-
export declare function execGitCommitAsync(commitMessage: string, onOutput?: (chunk: string) => void, isTestMode?: boolean, mockExecHandler?: (command: string) => Promise<ExecResult>): Promise<ExecResult>;
|
|
26
|
-
/**
|
|
27
|
-
* Mock execution handler for testing
|
|
28
|
-
*/
|
|
29
|
-
export declare function createMockExecHandler(addMessage?: (type: 'info' | 'error' | 'system', content: string) => void): Promise<(command: string) => Promise<ExecResult>>;
|
|
30
|
-
//# sourceMappingURL=command-execution.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-execution.d.ts","sourceRoot":"","sources":["../../src/utils/command-execution.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAID;;GAEG;AACH,wBAAsB,SAAS,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,WAAW,EACrB,UAAU,GAAE,OAAe,EAC3B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,GACxD,OAAO,CAAC,UAAU,CAAC,CAmBrB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACpC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAClC,UAAU,GAAE,OAAe,EAC3B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,EAC1D,OAAO,CAAC,EAAE;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B,GACC,OAAO,CAAC,UAAU,CAAC,CA6IrB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACvC,aAAa,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAClC,UAAU,GAAE,OAAe,EAC3B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,GACxD,OAAO,CAAC,UAAU,CAAC,CAGrB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAC1C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GACvE,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CA+FnD"}
|
|
@@ -1,264 +0,0 @@
|
|
|
1
|
-
import { exec, spawn } from 'child_process';
|
|
2
|
-
import { promisify } from 'util';
|
|
3
|
-
const execAsyncReal = promisify(exec);
|
|
4
|
-
/**
|
|
5
|
-
* Execute a command asynchronously with proper buffer limits and timeout handling
|
|
6
|
-
*/
|
|
7
|
-
export async function execAsync(command, options, isTestMode = false, mockExecHandler) {
|
|
8
|
-
if (isTestMode && mockExecHandler) {
|
|
9
|
-
return mockExecHandler(command);
|
|
10
|
-
}
|
|
11
|
-
// Set appropriate buffer limits based on command type
|
|
12
|
-
const defaultOptions = {
|
|
13
|
-
maxBuffer: 1024 * 1024 * 10, // 10MB default
|
|
14
|
-
timeout: 300000, // 5 minutes
|
|
15
|
-
...options,
|
|
16
|
-
};
|
|
17
|
-
// Increase buffer for Claude commands that may produce large outputs
|
|
18
|
-
if (command.includes('claude')) {
|
|
19
|
-
defaultOptions.maxBuffer = 1024 * 1024 * 50; // 50MB for Claude commands
|
|
20
|
-
defaultOptions.timeout = 600000; // 10 minutes for Claude
|
|
21
|
-
}
|
|
22
|
-
return execAsyncReal(command, defaultOptions);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Execute a command with streaming output support
|
|
26
|
-
*/
|
|
27
|
-
export async function execStreamAsync(command, onOutput, isTestMode = false, mockExecHandler, options) {
|
|
28
|
-
if (isTestMode && mockExecHandler) {
|
|
29
|
-
// For test mode, simulate streaming
|
|
30
|
-
const result = await mockExecHandler(command);
|
|
31
|
-
if (onOutput) {
|
|
32
|
-
// Simulate streaming by sending output in chunks
|
|
33
|
-
const lines = result.stdout.split('\n');
|
|
34
|
-
for (const line of lines) {
|
|
35
|
-
if (line.trim()) {
|
|
36
|
-
onOutput(line + '\n');
|
|
37
|
-
await new Promise(resolve => setTimeout(resolve, 200));
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return result;
|
|
42
|
-
}
|
|
43
|
-
return new Promise((resolve, reject) => {
|
|
44
|
-
// Parse command to handle quotes properly
|
|
45
|
-
let cmd;
|
|
46
|
-
let args;
|
|
47
|
-
if (command.startsWith('claude -p --dangerously-skip-permissions "')) {
|
|
48
|
-
cmd = 'claude';
|
|
49
|
-
// Extract the quoted content for non-interactive mode with skip permissions
|
|
50
|
-
const promptMatch = command.match(/^claude -p --dangerously-skip-permissions "(.*)"/s);
|
|
51
|
-
args = promptMatch ? ['-p', '--dangerously-skip-permissions', promptMatch[1]] : [];
|
|
52
|
-
}
|
|
53
|
-
else if (command.startsWith('claude -p "')) {
|
|
54
|
-
cmd = 'claude';
|
|
55
|
-
// Extract the quoted content for non-interactive mode
|
|
56
|
-
const promptMatch = command.match(/^claude -p "(.*)"/s);
|
|
57
|
-
args = promptMatch ? ['-p', promptMatch[1]] : [];
|
|
58
|
-
}
|
|
59
|
-
else if (command.startsWith('claude "')) {
|
|
60
|
-
cmd = 'claude';
|
|
61
|
-
// Extract the quoted content for interactive mode
|
|
62
|
-
const promptMatch = command.match(/^claude "(.*)"/s);
|
|
63
|
-
args = promptMatch ? [promptMatch[1]] : [];
|
|
64
|
-
}
|
|
65
|
-
else if (command.startsWith('git commit')) {
|
|
66
|
-
// Special handling for git commit to properly parse the message
|
|
67
|
-
const parts = command.match(/^git\s+commit\s+(.*)$/);
|
|
68
|
-
if (parts && parts[1]) {
|
|
69
|
-
cmd = 'git';
|
|
70
|
-
args = ['commit'];
|
|
71
|
-
// Parse the rest of the arguments, handling -m "message" properly
|
|
72
|
-
const argString = parts[1];
|
|
73
|
-
const messageMatch = argString.match(/-m\s+"([^"]+)"/);
|
|
74
|
-
if (messageMatch) {
|
|
75
|
-
args.push('-m', messageMatch[1]);
|
|
76
|
-
// Add any other arguments that might be before or after -m
|
|
77
|
-
const beforeMessage = argString.substring(0, argString.indexOf('-m')).trim();
|
|
78
|
-
const afterMessage = argString
|
|
79
|
-
.substring(argString.indexOf(messageMatch[0]) + messageMatch[0].length)
|
|
80
|
-
.trim();
|
|
81
|
-
if (beforeMessage)
|
|
82
|
-
args.unshift(...beforeMessage.split(' '));
|
|
83
|
-
if (afterMessage)
|
|
84
|
-
args.push(...afterMessage.split(' '));
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
args.push(...argString.split(' '));
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
[cmd, ...args] = command.split(' ');
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
// Simple command splitting for other commands
|
|
96
|
-
[cmd, ...args] = command.split(' ');
|
|
97
|
-
}
|
|
98
|
-
const child = spawn(cmd, args, {
|
|
99
|
-
shell: false,
|
|
100
|
-
stdio: ['inherit', 'pipe', 'pipe'],
|
|
101
|
-
});
|
|
102
|
-
let stdout = '';
|
|
103
|
-
let stderr = '';
|
|
104
|
-
// Smart timeout handling
|
|
105
|
-
const isGitCommit = cmd === 'git' && args[0] === 'commit';
|
|
106
|
-
const maxTimeout = options?.timeout || (isGitCommit ? 900000 : 300000); // 15 min for git commit, 5 min default
|
|
107
|
-
const inactivityTimeout = options?.inactivityTimeout || (isGitCommit ? 60000 : 30000); // 60s for git commit, 30s default
|
|
108
|
-
let globalTimeoutId = null;
|
|
109
|
-
let inactivityTimeoutId = null;
|
|
110
|
-
const clearTimeouts = () => {
|
|
111
|
-
if (globalTimeoutId)
|
|
112
|
-
clearTimeout(globalTimeoutId);
|
|
113
|
-
if (inactivityTimeoutId)
|
|
114
|
-
clearTimeout(inactivityTimeoutId);
|
|
115
|
-
};
|
|
116
|
-
const resetInactivityTimeout = () => {
|
|
117
|
-
if (inactivityTimeoutId)
|
|
118
|
-
clearTimeout(inactivityTimeoutId);
|
|
119
|
-
inactivityTimeoutId = setTimeout(() => {
|
|
120
|
-
clearTimeouts();
|
|
121
|
-
child.kill('SIGTERM');
|
|
122
|
-
reject(new Error(`Command timed out due to ${inactivityTimeout / 1000}s of inactivity`));
|
|
123
|
-
}, inactivityTimeout);
|
|
124
|
-
};
|
|
125
|
-
// Set global timeout
|
|
126
|
-
globalTimeoutId = setTimeout(() => {
|
|
127
|
-
clearTimeouts();
|
|
128
|
-
child.kill('SIGTERM');
|
|
129
|
-
reject(new Error(`Command exceeded maximum timeout of ${maxTimeout / 1000}s`));
|
|
130
|
-
}, maxTimeout);
|
|
131
|
-
// Start inactivity timeout
|
|
132
|
-
resetInactivityTimeout();
|
|
133
|
-
child.stdout?.on('data', data => {
|
|
134
|
-
const chunk = data.toString();
|
|
135
|
-
stdout += chunk;
|
|
136
|
-
if (onOutput) {
|
|
137
|
-
onOutput(chunk);
|
|
138
|
-
}
|
|
139
|
-
// Reset inactivity timeout on any output
|
|
140
|
-
resetInactivityTimeout();
|
|
141
|
-
});
|
|
142
|
-
child.stderr?.on('data', data => {
|
|
143
|
-
const chunk = data.toString();
|
|
144
|
-
stderr += chunk;
|
|
145
|
-
if (onOutput) {
|
|
146
|
-
onOutput(chunk);
|
|
147
|
-
}
|
|
148
|
-
// Reset inactivity timeout on any output (pre-commit hooks often write to stderr)
|
|
149
|
-
resetInactivityTimeout();
|
|
150
|
-
});
|
|
151
|
-
child.on('close', code => {
|
|
152
|
-
clearTimeouts();
|
|
153
|
-
if (code === 0) {
|
|
154
|
-
resolve({ stdout, stderr });
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
reject(new Error(`Command failed with exit code ${code}: ${stderr}`));
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
child.on('error', error => {
|
|
161
|
-
clearTimeouts();
|
|
162
|
-
reject(error);
|
|
163
|
-
});
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Execute git commit with smart timeout handling for pre-commit hooks
|
|
168
|
-
*/
|
|
169
|
-
export async function execGitCommitAsync(commitMessage, onOutput, isTestMode = false, mockExecHandler) {
|
|
170
|
-
const command = `git commit -m "${commitMessage}"`;
|
|
171
|
-
return execStreamAsync(command, onOutput, isTestMode, mockExecHandler);
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Mock execution handler for testing
|
|
175
|
-
*/
|
|
176
|
-
export async function createMockExecHandler(addMessage) {
|
|
177
|
-
return async (command) => {
|
|
178
|
-
if (addMessage) {
|
|
179
|
-
addMessage('info', `🧪 TEST MODE: Simulating command: ${command}`);
|
|
180
|
-
}
|
|
181
|
-
// Simulate delays
|
|
182
|
-
await new Promise(resolve => setTimeout(resolve, 500));
|
|
183
|
-
// Git commands
|
|
184
|
-
if (command.includes('git branch --show-current')) {
|
|
185
|
-
return { stdout: 'feature/test-branch', stderr: '' };
|
|
186
|
-
}
|
|
187
|
-
if (command.includes('gh repo view')) {
|
|
188
|
-
return { stdout: 'main', stderr: '' };
|
|
189
|
-
}
|
|
190
|
-
if (command.includes('git checkout -b')) {
|
|
191
|
-
const branchName = command.split(' ').pop();
|
|
192
|
-
return { stdout: `Switched to a new branch '${branchName}'`, stderr: '' };
|
|
193
|
-
}
|
|
194
|
-
if (command.includes('git checkout main')) {
|
|
195
|
-
return { stdout: 'Switched to branch main', stderr: '' };
|
|
196
|
-
}
|
|
197
|
-
if (command.includes('git pull')) {
|
|
198
|
-
return { stdout: 'Already up to date.', stderr: '' };
|
|
199
|
-
}
|
|
200
|
-
if (command.includes('git add .')) {
|
|
201
|
-
return { stdout: '', stderr: '' };
|
|
202
|
-
}
|
|
203
|
-
if (command.includes('git diff --cached --quiet')) {
|
|
204
|
-
throw new Error('Changes to commit'); // Simulate changes exist
|
|
205
|
-
}
|
|
206
|
-
if (command.includes('git commit')) {
|
|
207
|
-
return { stdout: '[feature/test abc123] feat: mock commit', stderr: '' };
|
|
208
|
-
}
|
|
209
|
-
if (command.includes('git push')) {
|
|
210
|
-
const branchName = command.includes('feature/') ? 'feature/test-branch' : 'current-branch';
|
|
211
|
-
return {
|
|
212
|
-
stdout: `To github.com:test/repo.git\n * [new branch] ${branchName} -> ${branchName}\nBranch '${branchName}' set up to track remote branch '${branchName}' from 'origin'.`,
|
|
213
|
-
stderr: '',
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
// CLI version checks
|
|
217
|
-
if (command.includes('claude --version')) {
|
|
218
|
-
return { stdout: 'claude version 2.1.3', stderr: '' };
|
|
219
|
-
}
|
|
220
|
-
if (command.includes('gh --version')) {
|
|
221
|
-
return { stdout: 'gh version 2.40.1', stderr: '' };
|
|
222
|
-
}
|
|
223
|
-
// GitHub commands
|
|
224
|
-
if (command.includes('gh pr create')) {
|
|
225
|
-
return { stdout: 'https://github.com/test/repo/pull/123', stderr: '' };
|
|
226
|
-
}
|
|
227
|
-
// Claude commands
|
|
228
|
-
if (command.includes('Generate a conventional commit')) {
|
|
229
|
-
const taskTitle = command.includes('login')
|
|
230
|
-
? 'login component'
|
|
231
|
-
: command.includes('JWT')
|
|
232
|
-
? 'JWT authentication'
|
|
233
|
-
: command.includes('logout')
|
|
234
|
-
? 'logout functionality'
|
|
235
|
-
: 'test feature';
|
|
236
|
-
return { stdout: `feat(auth): add ${taskTitle}`, stderr: '' };
|
|
237
|
-
}
|
|
238
|
-
if (command.includes('Generate a comprehensive GitHub Pull Request')) {
|
|
239
|
-
return {
|
|
240
|
-
stdout: `## Summary\nImplemented mock authentication system with all required functionality.\n\n## Tasks Completed\n- [x] Mock login component\n- [x] Mock JWT authentication\n- [x] Mock logout functionality\n\n## Testing\nTest the mock implementation thoroughly.\n\n## Notes\nThis is a test implementation.`,
|
|
241
|
-
stderr: '',
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
if (command.startsWith('claude -p --dangerously-skip-permissions "') ||
|
|
245
|
-
command.startsWith('claude -p "') ||
|
|
246
|
-
command.startsWith('claude "')) {
|
|
247
|
-
// Handle task content and other prompts
|
|
248
|
-
const taskTitle = command.includes('login')
|
|
249
|
-
? 'Login Component'
|
|
250
|
-
: command.includes('JWT')
|
|
251
|
-
? 'JWT Authentication'
|
|
252
|
-
: command.includes('logout')
|
|
253
|
-
? 'Logout Functionality'
|
|
254
|
-
: 'Test Feature';
|
|
255
|
-
return {
|
|
256
|
-
stdout: `# ${taskTitle} Implementation\n\n## Files Created/Modified\n- src/components/auth/${taskTitle.replace(' ', '')}.tsx\n- src/hooks/useAuth.ts\n- src/utils/auth.ts\n\n## Implementation Details\nCreated comprehensive ${taskTitle.toLowerCase()} with modern React patterns, TypeScript support, and proper error handling.\n\n## Testing\nAdded unit tests and integration tests for the ${taskTitle.toLowerCase()}.`,
|
|
257
|
-
stderr: '',
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
// Default response
|
|
261
|
-
return { stdout: 'Mock command executed successfully', stderr: '' };
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
//# sourceMappingURL=command-execution.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-execution.js","sourceRoot":"","sources":["../../src/utils/command-execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { type Status } from './status-parser.js';
|
|
2
|
-
/**
|
|
3
|
-
* Types of commands in the CLI
|
|
4
|
-
*/
|
|
5
|
-
export type CommandType = 'contextual' | 'direct' | 'global';
|
|
6
|
-
/**
|
|
7
|
-
* Represents a parsed command with its components
|
|
8
|
-
*/
|
|
9
|
-
export interface ParsedCommand {
|
|
10
|
-
/**
|
|
11
|
-
* The type of command (contextual, direct, or global)
|
|
12
|
-
*/
|
|
13
|
-
type: CommandType;
|
|
14
|
-
/**
|
|
15
|
-
* The base command (e.g., 'show', 'task', 'build')
|
|
16
|
-
*/
|
|
17
|
-
command: string;
|
|
18
|
-
/**
|
|
19
|
-
* The subcommand if any (e.g., 'list' in 'task list')
|
|
20
|
-
*/
|
|
21
|
-
subcommand?: string;
|
|
22
|
-
/**
|
|
23
|
-
* Requirement ID if specified (normalized to internal format)
|
|
24
|
-
*/
|
|
25
|
-
requirementId?: string;
|
|
26
|
-
/**
|
|
27
|
-
* Additional arguments after command/subcommand/requirementId
|
|
28
|
-
*/
|
|
29
|
-
args: string[];
|
|
30
|
-
/**
|
|
31
|
-
* Parsed status filters if any
|
|
32
|
-
*/
|
|
33
|
-
statusFilters?: Status[];
|
|
34
|
-
/**
|
|
35
|
-
* Raw input for reference
|
|
36
|
-
*/
|
|
37
|
-
rawInput: string;
|
|
38
|
-
/**
|
|
39
|
-
* Any parsing errors or warnings
|
|
40
|
-
*/
|
|
41
|
-
errors?: string[];
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Validates and normalizes a requirement ID
|
|
45
|
-
* Accepts formats: REQ-123, req-123, 123, or UUID format
|
|
46
|
-
*
|
|
47
|
-
* @param id - The requirement ID to validate
|
|
48
|
-
* @returns Normalized requirement ID or null if invalid
|
|
49
|
-
*/
|
|
50
|
-
export declare function validateRequirementId(id: string): string | null;
|
|
51
|
-
/**
|
|
52
|
-
* Extracts status filters from command arguments
|
|
53
|
-
*
|
|
54
|
-
* @param args - Command arguments
|
|
55
|
-
* @returns Object with filtered args and extracted status filters
|
|
56
|
-
*/
|
|
57
|
-
export declare function extractStatusFilters(args: string[]): {
|
|
58
|
-
filteredArgs: string[];
|
|
59
|
-
statusFilters?: Status[];
|
|
60
|
-
statusError?: string;
|
|
61
|
-
};
|
|
62
|
-
/**
|
|
63
|
-
* Parses a command string into its components
|
|
64
|
-
*
|
|
65
|
-
* @param input - The raw command input
|
|
66
|
-
* @param hasContext - Whether there's an active requirement context
|
|
67
|
-
* @returns ParsedCommand object
|
|
68
|
-
*/
|
|
69
|
-
export declare function parseCommand(input: string, hasContext?: boolean): ParsedCommand;
|
|
70
|
-
/**
|
|
71
|
-
* Formats a requirement ID for display (e.g., req_123 -> REQ-123)
|
|
72
|
-
*
|
|
73
|
-
* @param requirementId - Internal requirement ID
|
|
74
|
-
* @returns Formatted ID for display
|
|
75
|
-
*/
|
|
76
|
-
export declare function formatRequirementIdForDisplay(requirementId: string): string;
|
|
77
|
-
/**
|
|
78
|
-
* Suggests commands based on partial input
|
|
79
|
-
*
|
|
80
|
-
* @param partial - Partial command input
|
|
81
|
-
* @param hasContext - Whether there's an active context
|
|
82
|
-
* @returns Array of suggested commands
|
|
83
|
-
*/
|
|
84
|
-
export declare function suggestCommands(partial: string, hasContext?: boolean): string[];
|
|
85
|
-
//# sourceMappingURL=command-parser.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-parser.d.ts","sourceRoot":"","sources":["../../src/utils/command-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B;;OAEG;IACH,IAAI,EAAE,WAAW,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AA4CD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgC/D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IACrD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAgDA;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,GAAE,OAAe,GAAG,aAAa,CAsItF;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAM3E;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,OAAe,GAAG,MAAM,EAAE,CAyBtF"}
|