@braingrid/cli 0.2.0 → 0.2.2
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 +60 -0
- package/README.md +55 -39
- 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
|
@@ -1,287 +0,0 @@
|
|
|
1
|
-
import { parseAndValidateStatus } from './status-parser.js';
|
|
2
|
-
/**
|
|
3
|
-
* Commands that can work with context (no requirement ID needed when context is active)
|
|
4
|
-
*/
|
|
5
|
-
const CONTEXTUAL_COMMANDS = new Set([
|
|
6
|
-
'show',
|
|
7
|
-
'task',
|
|
8
|
-
'tasks',
|
|
9
|
-
'build',
|
|
10
|
-
'assign',
|
|
11
|
-
'unassign',
|
|
12
|
-
'close',
|
|
13
|
-
'reopen',
|
|
14
|
-
]);
|
|
15
|
-
/**
|
|
16
|
-
* Commands that are always global (never use context)
|
|
17
|
-
*/
|
|
18
|
-
const GLOBAL_COMMANDS = new Set([
|
|
19
|
-
'help',
|
|
20
|
-
'version',
|
|
21
|
-
'login',
|
|
22
|
-
'logout',
|
|
23
|
-
'whoami',
|
|
24
|
-
'status',
|
|
25
|
-
'clear',
|
|
26
|
-
'exit',
|
|
27
|
-
'quit',
|
|
28
|
-
'use',
|
|
29
|
-
'context',
|
|
30
|
-
'list',
|
|
31
|
-
'my',
|
|
32
|
-
'mine',
|
|
33
|
-
'assigned',
|
|
34
|
-
'req',
|
|
35
|
-
'requirements',
|
|
36
|
-
'github',
|
|
37
|
-
'claude',
|
|
38
|
-
'logs',
|
|
39
|
-
'log',
|
|
40
|
-
'debug:assigned',
|
|
41
|
-
]);
|
|
42
|
-
/**
|
|
43
|
-
* Validates and normalizes a requirement ID
|
|
44
|
-
* Accepts formats: REQ-123, req-123, 123, or UUID format
|
|
45
|
-
*
|
|
46
|
-
* @param id - The requirement ID to validate
|
|
47
|
-
* @returns Normalized requirement ID or null if invalid
|
|
48
|
-
*/
|
|
49
|
-
export function validateRequirementId(id) {
|
|
50
|
-
if (!id || typeof id !== 'string') {
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
const trimmedId = id.trim();
|
|
54
|
-
// Handle REQ-XXX format
|
|
55
|
-
const reqMatch = trimmedId.match(/^req[-_]?(\d+)$/i);
|
|
56
|
-
if (reqMatch) {
|
|
57
|
-
return `req_${reqMatch[1]}`;
|
|
58
|
-
}
|
|
59
|
-
// Handle numeric ID only
|
|
60
|
-
const numMatch = trimmedId.match(/^(\d+)$/);
|
|
61
|
-
if (numMatch) {
|
|
62
|
-
return `req_${numMatch[1]}`;
|
|
63
|
-
}
|
|
64
|
-
// Handle UUID format (req_abc123 style)
|
|
65
|
-
const uuidMatch = trimmedId.match(/^req_[a-zA-Z0-9]+$/);
|
|
66
|
-
if (uuidMatch) {
|
|
67
|
-
return trimmedId;
|
|
68
|
-
}
|
|
69
|
-
// Handle UUID without req_ prefix (must contain numbers to be valid)
|
|
70
|
-
const bareUuidMatch = trimmedId.match(/^[a-zA-Z]*[0-9]+[a-zA-Z0-9]*$/);
|
|
71
|
-
if (bareUuidMatch && trimmedId.length >= 6) {
|
|
72
|
-
return `req_${trimmedId}`;
|
|
73
|
-
}
|
|
74
|
-
return null;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Extracts status filters from command arguments
|
|
78
|
-
*
|
|
79
|
-
* @param args - Command arguments
|
|
80
|
-
* @returns Object with filtered args and extracted status filters
|
|
81
|
-
*/
|
|
82
|
-
export function extractStatusFilters(args) {
|
|
83
|
-
const filteredArgs = [];
|
|
84
|
-
let statusArg = null;
|
|
85
|
-
let skipNext = false;
|
|
86
|
-
for (let i = 0; i < args.length; i++) {
|
|
87
|
-
if (skipNext) {
|
|
88
|
-
skipNext = false;
|
|
89
|
-
continue;
|
|
90
|
-
}
|
|
91
|
-
const arg = args[i];
|
|
92
|
-
// Check for --status flag
|
|
93
|
-
if (arg === '--status' || arg === '-s') {
|
|
94
|
-
if (i + 1 < args.length) {
|
|
95
|
-
statusArg = args[i + 1];
|
|
96
|
-
skipNext = true;
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
return {
|
|
100
|
-
filteredArgs: args,
|
|
101
|
-
statusError: 'Status flag requires a value (e.g., --status todo,doing)',
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
else if (arg.startsWith('--status=')) {
|
|
106
|
-
statusArg = arg.substring('--status='.length);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
filteredArgs.push(arg);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// Parse status if found
|
|
113
|
-
if (statusArg) {
|
|
114
|
-
const statusResult = parseAndValidateStatus(statusArg);
|
|
115
|
-
if (statusResult.hasErrors) {
|
|
116
|
-
return {
|
|
117
|
-
filteredArgs: args,
|
|
118
|
-
statusError: statusResult.errorMessage,
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
return {
|
|
122
|
-
filteredArgs,
|
|
123
|
-
statusFilters: statusResult.statuses,
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
return { filteredArgs };
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Parses a command string into its components
|
|
130
|
-
*
|
|
131
|
-
* @param input - The raw command input
|
|
132
|
-
* @param hasContext - Whether there's an active requirement context
|
|
133
|
-
* @returns ParsedCommand object
|
|
134
|
-
*/
|
|
135
|
-
export function parseCommand(input, hasContext = false) {
|
|
136
|
-
const trimmedInput = input.trim();
|
|
137
|
-
const parts = trimmedInput.split(/\s+/).filter(p => p.length > 0);
|
|
138
|
-
if (parts.length === 0) {
|
|
139
|
-
return {
|
|
140
|
-
type: 'global',
|
|
141
|
-
command: '',
|
|
142
|
-
args: [],
|
|
143
|
-
rawInput: input,
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
const [firstPart, ...restParts] = parts;
|
|
147
|
-
const command = firstPart.toLowerCase();
|
|
148
|
-
// Check if it's a global command
|
|
149
|
-
if (GLOBAL_COMMANDS.has(command)) {
|
|
150
|
-
// Special handling for 'use' command
|
|
151
|
-
if (command === 'use' && restParts.length > 0) {
|
|
152
|
-
const reqId = validateRequirementId(restParts[0]);
|
|
153
|
-
if (!reqId) {
|
|
154
|
-
return {
|
|
155
|
-
type: 'global',
|
|
156
|
-
command,
|
|
157
|
-
args: restParts,
|
|
158
|
-
rawInput: input,
|
|
159
|
-
errors: [`Invalid requirement ID: ${restParts[0]}`],
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
return {
|
|
163
|
-
type: 'global',
|
|
164
|
-
command,
|
|
165
|
-
requirementId: reqId,
|
|
166
|
-
args: restParts.slice(1),
|
|
167
|
-
rawInput: input,
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
// Extract status filters for list commands
|
|
171
|
-
const { filteredArgs, statusFilters, statusError } = extractStatusFilters(restParts);
|
|
172
|
-
const result = {
|
|
173
|
-
type: 'global',
|
|
174
|
-
command,
|
|
175
|
-
args: filteredArgs,
|
|
176
|
-
rawInput: input,
|
|
177
|
-
};
|
|
178
|
-
if (statusFilters) {
|
|
179
|
-
result.statusFilters = statusFilters;
|
|
180
|
-
}
|
|
181
|
-
if (statusError) {
|
|
182
|
-
result.errors = [statusError];
|
|
183
|
-
}
|
|
184
|
-
return result;
|
|
185
|
-
}
|
|
186
|
-
// Check if it's a contextual command
|
|
187
|
-
if (CONTEXTUAL_COMMANDS.has(command)) {
|
|
188
|
-
// Determine if this is contextual or direct based on arguments
|
|
189
|
-
let requirementId = null;
|
|
190
|
-
let subcommand;
|
|
191
|
-
let remainingArgs = restParts;
|
|
192
|
-
// Check if first argument could be a subcommand
|
|
193
|
-
if (restParts.length > 0) {
|
|
194
|
-
const possibleSubcommand = restParts[0].toLowerCase();
|
|
195
|
-
// For task/tasks command, check for subcommands
|
|
196
|
-
if ((command === 'task' || command === 'tasks') &&
|
|
197
|
-
['list', 'show', 'update', 'complete', 'search', 'for', 'assigned'].includes(possibleSubcommand)) {
|
|
198
|
-
subcommand = possibleSubcommand;
|
|
199
|
-
remainingArgs = restParts.slice(1);
|
|
200
|
-
}
|
|
201
|
-
// Check if next argument is a requirement ID
|
|
202
|
-
if (remainingArgs.length > 0) {
|
|
203
|
-
const possibleReqId = validateRequirementId(remainingArgs[0]);
|
|
204
|
-
if (possibleReqId) {
|
|
205
|
-
requirementId = possibleReqId;
|
|
206
|
-
remainingArgs = remainingArgs.slice(1);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
// Determine command type
|
|
211
|
-
const isContextual = hasContext && !requirementId;
|
|
212
|
-
const isDirect = !hasContext || requirementId !== null;
|
|
213
|
-
// Extract status filters
|
|
214
|
-
const { filteredArgs, statusFilters, statusError } = extractStatusFilters(remainingArgs);
|
|
215
|
-
const result = {
|
|
216
|
-
type: isContextual ? 'contextual' : 'direct',
|
|
217
|
-
command,
|
|
218
|
-
subcommand,
|
|
219
|
-
requirementId: requirementId || undefined,
|
|
220
|
-
args: filteredArgs,
|
|
221
|
-
rawInput: input,
|
|
222
|
-
};
|
|
223
|
-
if (statusFilters) {
|
|
224
|
-
result.statusFilters = statusFilters;
|
|
225
|
-
}
|
|
226
|
-
if (statusError) {
|
|
227
|
-
result.errors = result.errors || [];
|
|
228
|
-
result.errors.push(statusError);
|
|
229
|
-
}
|
|
230
|
-
// Add error if direct command without requirement ID and no context
|
|
231
|
-
if (isDirect && !requirementId && !hasContext) {
|
|
232
|
-
result.errors = result.errors || [];
|
|
233
|
-
result.errors.push(`Command '${command}' requires a requirement ID or active context`);
|
|
234
|
-
}
|
|
235
|
-
return result;
|
|
236
|
-
}
|
|
237
|
-
// Unknown command - treat as global
|
|
238
|
-
return {
|
|
239
|
-
type: 'global',
|
|
240
|
-
command,
|
|
241
|
-
args: restParts,
|
|
242
|
-
rawInput: input,
|
|
243
|
-
errors: [`Unknown command: ${command}`],
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Formats a requirement ID for display (e.g., req_123 -> REQ-123)
|
|
248
|
-
*
|
|
249
|
-
* @param requirementId - Internal requirement ID
|
|
250
|
-
* @returns Formatted ID for display
|
|
251
|
-
*/
|
|
252
|
-
export function formatRequirementIdForDisplay(requirementId) {
|
|
253
|
-
const match = requirementId.match(/^req_(\d+)$/);
|
|
254
|
-
if (match) {
|
|
255
|
-
return `REQ-${match[1]}`;
|
|
256
|
-
}
|
|
257
|
-
return requirementId;
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* Suggests commands based on partial input
|
|
261
|
-
*
|
|
262
|
-
* @param partial - Partial command input
|
|
263
|
-
* @param hasContext - Whether there's an active context
|
|
264
|
-
* @returns Array of suggested commands
|
|
265
|
-
*/
|
|
266
|
-
export function suggestCommands(partial, hasContext = false) {
|
|
267
|
-
const allCommands = new Set([...GLOBAL_COMMANDS, ...CONTEXTUAL_COMMANDS]);
|
|
268
|
-
const normalizedPartial = partial.toLowerCase();
|
|
269
|
-
if (!normalizedPartial) {
|
|
270
|
-
return Array.from(allCommands).sort();
|
|
271
|
-
}
|
|
272
|
-
const suggestions = Array.from(allCommands)
|
|
273
|
-
.filter(cmd => cmd.startsWith(normalizedPartial))
|
|
274
|
-
.sort();
|
|
275
|
-
// Add context-specific suggestions
|
|
276
|
-
if (hasContext && suggestions.length === 0) {
|
|
277
|
-
// Suggest contextual commands if user might be trying to use them
|
|
278
|
-
const contextualSuggestions = Array.from(CONTEXTUAL_COMMANDS)
|
|
279
|
-
.filter(cmd => cmd.includes(normalizedPartial))
|
|
280
|
-
.sort();
|
|
281
|
-
if (contextualSuggestions.length > 0) {
|
|
282
|
-
return contextualSuggestions;
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
return suggestions;
|
|
286
|
-
}
|
|
287
|
-
//# sourceMappingURL=command-parser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-parser.js","sourceRoot":"","sources":["../../src/utils/command-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAe,MAAM,oBAAoB,CAAC;AAoDzE;;GAEG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IACnC,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,UAAU;IACV,OAAO;IACP,QAAQ;CACR,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC/B,MAAM;IACN,SAAS;IACT,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,MAAM;IACN,MAAM;IACN,KAAK;IACL,SAAS;IACT,MAAM;IACN,IAAI;IACJ,MAAM;IACN,UAAU;IACV,KAAK;IACL,cAAc;IACd,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,KAAK;IACL,gBAAgB;CAChB,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAU;IAC/C,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IAE5B,wBAAwB;IACxB,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACrD,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7B,CAAC;IAED,yBAAyB;IACzB,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7B,CAAC;IAED,wCAAwC;IACxC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxD,IAAI,SAAS,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,qEAAqE;IACrE,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACvE,IAAI,aAAa,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5C,OAAO,OAAO,SAAS,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAc;IAKlD,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,KAAK,CAAC;YACjB,SAAS;QACV,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,0BAA0B;QAC1B,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACzB,SAAS,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxB,QAAQ,GAAG,IAAI,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACP,OAAO;oBACN,YAAY,EAAE,IAAI;oBAClB,WAAW,EAAE,0DAA0D;iBACvE,CAAC;YACH,CAAC;QACF,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACxC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACP,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACF,CAAC;IAED,wBAAwB;IACxB,IAAI,SAAS,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;YAC5B,OAAO;gBACN,YAAY,EAAE,IAAI;gBAClB,WAAW,EAAE,YAAY,CAAC,YAAY;aACtC,CAAC;QACH,CAAC;QAED,OAAO;YACN,YAAY;YACZ,aAAa,EAAE,YAAY,CAAC,QAAQ;SACpC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,CAAC;AACzB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,aAAsB,KAAK;IACtE,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAElE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;YACN,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,KAAK;SACf,CAAC;IACH,CAAC;IAED,MAAM,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC;IACxC,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAExC,iCAAiC;IACjC,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,qCAAqC;QACrC,IAAI,OAAO,KAAK,KAAK,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,OAAO;oBACN,IAAI,EAAE,QAAQ;oBACd,OAAO;oBACP,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,KAAK;oBACf,MAAM,EAAE,CAAC,2BAA2B,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;iBACnD,CAAC;YACH,CAAC;YACD,OAAO;gBACN,IAAI,EAAE,QAAQ;gBACd,OAAO;gBACP,aAAa,EAAE,KAAK;gBACpB,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;gBACxB,QAAQ,EAAE,KAAK;aACf,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAErF,MAAM,MAAM,GAAkB;YAC7B,IAAI,EAAE,QAAQ;YACd,OAAO;YACP,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,KAAK;SACf,CAAC;QAEF,IAAI,aAAa,EAAE,CAAC;YACnB,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;QACtC,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YACjB,MAAM,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAED,qCAAqC;IACrC,IAAI,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,+DAA+D;QAC/D,IAAI,aAAa,GAAkB,IAAI,CAAC;QACxC,IAAI,UAA8B,CAAC;QACnC,IAAI,aAAa,GAAa,SAAS,CAAC;QAExC,gDAAgD;QAChD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,kBAAkB,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAEtD,gDAAgD;YAChD,IACC,CAAC,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,OAAO,CAAC;gBAC3C,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,QAAQ,CAC3E,kBAAkB,CAClB,EACA,CAAC;gBACF,UAAU,GAAG,kBAAkB,CAAC;gBAChC,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;YAED,6CAA6C;YAC7C,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,aAAa,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9D,IAAI,aAAa,EAAE,CAAC;oBACnB,aAAa,GAAG,aAAa,CAAC;oBAC9B,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxC,CAAC;YACF,CAAC;QACF,CAAC;QAED,yBAAyB;QACzB,MAAM,YAAY,GAAG,UAAU,IAAI,CAAC,aAAa,CAAC;QAClD,MAAM,QAAQ,GAAG,CAAC,UAAU,IAAI,aAAa,KAAK,IAAI,CAAC;QAEvD,yBAAyB;QACzB,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAEzF,MAAM,MAAM,GAAkB;YAC7B,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ;YAC5C,OAAO;YACP,UAAU;YACV,aAAa,EAAE,aAAa,IAAI,SAAS;YACzC,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,KAAK;SACf,CAAC;QAEF,IAAI,aAAa,EAAE,CAAC;YACnB,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;QACtC,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YACjB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;QAED,oEAAoE;QACpE,IAAI,QAAQ,IAAI,CAAC,aAAa,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/C,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,OAAO,+CAA+C,CAAC,CAAC;QACxF,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAED,oCAAoC;IACpC,OAAO;QACN,IAAI,EAAE,QAAQ;QACd,OAAO;QACP,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,CAAC,oBAAoB,OAAO,EAAE,CAAC;KACvC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAAC,aAAqB;IAClE,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACjD,IAAI,KAAK,EAAE,CAAC;QACX,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1B,CAAC;IACD,OAAO,aAAa,CAAC;AACtB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,aAAsB,KAAK;IAC3E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC;IAC1E,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEhD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;SACzC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;SAChD,IAAI,EAAE,CAAC;IAET,mCAAmC;IACnC,IAAI,UAAU,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,kEAAkE;QAClE,MAAM,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC;aAC3D,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;aAC9C,IAAI,EAAE,CAAC;QAET,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,qBAAqB,CAAC;QAC9B,CAAC;IACF,CAAC;IAED,OAAO,WAAW,CAAC;AACpB,CAAC"}
|
package/dist/utils/config.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export interface BrainGridConfig {
|
|
2
|
-
apiUrl: string;
|
|
3
|
-
organizationId?: string;
|
|
4
|
-
clientId?: string;
|
|
5
|
-
oauthClientId?: string;
|
|
6
|
-
getWorkOSAuthUrl(): string;
|
|
7
|
-
getWebAppUrl(): string;
|
|
8
|
-
}
|
|
9
|
-
export declare function getConfig(): BrainGridConfig;
|
|
10
|
-
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,IAAI,MAAM,CAAC;IAC3B,YAAY,IAAI,MAAM,CAAC;CACvB;AAED,wBAAgB,SAAS,IAAI,eAAe,CAoF3C"}
|
package/dist/utils/config.js
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { BUILD_ENV, PRODUCTION_CONFIG, DEVELOPMENT_CONFIG } from '../build-config.js';
|
|
2
|
-
export function getConfig() {
|
|
3
|
-
// Determine base config based on BUILD_ENV
|
|
4
|
-
const baseConfig = BUILD_ENV === 'production' ? PRODUCTION_CONFIG : DEVELOPMENT_CONFIG;
|
|
5
|
-
// In development builds, allow NODE_ENV to override
|
|
6
|
-
let apiUrl = baseConfig.apiUrl;
|
|
7
|
-
if (BUILD_ENV === 'development') {
|
|
8
|
-
if (process.env.NODE_ENV === 'local' || process.env.NODE_ENV === 'test') {
|
|
9
|
-
// In local/test environment, use localhost
|
|
10
|
-
apiUrl = 'http://localhost:3377';
|
|
11
|
-
}
|
|
12
|
-
else if (process.env.NODE_ENV === 'development') {
|
|
13
|
-
// In development, use dev server
|
|
14
|
-
apiUrl = DEVELOPMENT_CONFIG.apiUrl;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
// Determine WorkOS AuthKit URL based on environment
|
|
18
|
-
const getWorkOSAuthUrl = () => {
|
|
19
|
-
// Allow override via environment variable
|
|
20
|
-
if (process.env.WORKOS_AUTH_URL) {
|
|
21
|
-
return process.env.WORKOS_AUTH_URL;
|
|
22
|
-
}
|
|
23
|
-
// In production builds, always use production URL
|
|
24
|
-
if (BUILD_ENV === 'production') {
|
|
25
|
-
return PRODUCTION_CONFIG.workosAuthUrl;
|
|
26
|
-
}
|
|
27
|
-
// In development builds, respect NODE_ENV
|
|
28
|
-
const env = process.env.NODE_ENV || 'development';
|
|
29
|
-
if (env === 'local' || env === 'test' || env === 'development' || env === 'staging') {
|
|
30
|
-
return DEVELOPMENT_CONFIG.workosAuthUrl;
|
|
31
|
-
}
|
|
32
|
-
return PRODUCTION_CONFIG.workosAuthUrl;
|
|
33
|
-
};
|
|
34
|
-
// Determine WorkOS OAuth client ID based on environment
|
|
35
|
-
const getOAuthClientId = () => {
|
|
36
|
-
// Allow override via environment variable
|
|
37
|
-
if (process.env.WORKOS_CLIENT_ID) {
|
|
38
|
-
return process.env.WORKOS_CLIENT_ID;
|
|
39
|
-
}
|
|
40
|
-
// In production builds, always use production client ID
|
|
41
|
-
if (BUILD_ENV === 'production') {
|
|
42
|
-
return PRODUCTION_CONFIG.workosClientId;
|
|
43
|
-
}
|
|
44
|
-
// In development builds, respect NODE_ENV
|
|
45
|
-
const env = process.env.NODE_ENV || 'development';
|
|
46
|
-
if (env === 'local' || env === 'test' || env === 'development' || env === 'staging') {
|
|
47
|
-
return DEVELOPMENT_CONFIG.workosClientId;
|
|
48
|
-
}
|
|
49
|
-
return PRODUCTION_CONFIG.workosClientId;
|
|
50
|
-
};
|
|
51
|
-
// Determine web app URL based on environment
|
|
52
|
-
const getWebAppUrl = () => {
|
|
53
|
-
// Allow override via environment variable
|
|
54
|
-
if (process.env.BRAINGRID_WEB_URL) {
|
|
55
|
-
return process.env.BRAINGRID_WEB_URL;
|
|
56
|
-
}
|
|
57
|
-
// In production builds, always use production URL
|
|
58
|
-
if (BUILD_ENV === 'production') {
|
|
59
|
-
return PRODUCTION_CONFIG.apiUrl;
|
|
60
|
-
}
|
|
61
|
-
// In development builds, respect NODE_ENV
|
|
62
|
-
const env = process.env.NODE_ENV || 'development';
|
|
63
|
-
if (env === 'local' || env === 'test') {
|
|
64
|
-
return 'http://localhost:3377';
|
|
65
|
-
}
|
|
66
|
-
return DEVELOPMENT_CONFIG.apiUrl;
|
|
67
|
-
};
|
|
68
|
-
return {
|
|
69
|
-
apiUrl: process.env.BRAINGRID_API_URL || apiUrl,
|
|
70
|
-
organizationId: process.env.BRAINGRID_ORG_ID,
|
|
71
|
-
clientId: process.env.BRAINGRID_CLIENT_ID || 'braingrid-cli',
|
|
72
|
-
oauthClientId: getOAuthClientId(),
|
|
73
|
-
getWorkOSAuthUrl,
|
|
74
|
-
getWebAppUrl,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=config.js.map
|
package/dist/utils/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Error Formatter Utility
|
|
3
|
-
*
|
|
4
|
-
* Extracts user-friendly error messages from API errors (AxiosError)
|
|
5
|
-
* and provides context-aware error messages for common scenarios.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Format an error for display to the user
|
|
9
|
-
* Extracts API error details from AxiosError responses
|
|
10
|
-
*/
|
|
11
|
-
export declare function formatError(error: unknown, context?: string): string;
|
|
12
|
-
/**
|
|
13
|
-
* Format context string for error messages
|
|
14
|
-
* Converts resource names to user-friendly format
|
|
15
|
-
*/
|
|
16
|
-
export declare function getResourceContext(resourceType: string, id?: string): string;
|
|
17
|
-
//# sourceMappingURL=error-formatter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-formatter.d.ts","sourceRoot":"","sources":["../../src/utils/error-formatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAapE;AAyGD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAG5E"}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Error Formatter Utility
|
|
3
|
-
*
|
|
4
|
-
* Extracts user-friendly error messages from API errors (AxiosError)
|
|
5
|
-
* and provides context-aware error messages for common scenarios.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Format an error for display to the user
|
|
9
|
-
* Extracts API error details from AxiosError responses
|
|
10
|
-
*/
|
|
11
|
-
export function formatError(error, context) {
|
|
12
|
-
// Handle AxiosError specifically
|
|
13
|
-
if (isAxiosError(error)) {
|
|
14
|
-
return formatAxiosError(error, context);
|
|
15
|
-
}
|
|
16
|
-
// Handle regular Error objects
|
|
17
|
-
if (error instanceof Error) {
|
|
18
|
-
return error.message;
|
|
19
|
-
}
|
|
20
|
-
// Fallback for unknown error types
|
|
21
|
-
return String(error);
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Type guard to check if error is an AxiosError
|
|
25
|
-
*/
|
|
26
|
-
function isAxiosError(error) {
|
|
27
|
-
return (typeof error === 'object' &&
|
|
28
|
-
error !== null &&
|
|
29
|
-
'isAxiosError' in error &&
|
|
30
|
-
error.isAxiosError === true);
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Format AxiosError with API response details
|
|
34
|
-
*/
|
|
35
|
-
function formatAxiosError(error, context) {
|
|
36
|
-
const status = error.response?.status;
|
|
37
|
-
const data = error.response?.data;
|
|
38
|
-
// Try to extract structured error from API response
|
|
39
|
-
if (data && typeof data === 'object' && 'error' in data) {
|
|
40
|
-
const errorResponse = data;
|
|
41
|
-
if (errorResponse.error?.message) {
|
|
42
|
-
// Use API error message if available
|
|
43
|
-
return errorResponse.error.message;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// Handle specific HTTP status codes with context-aware messages
|
|
47
|
-
if (status) {
|
|
48
|
-
return getStatusMessage(status, context, error);
|
|
49
|
-
}
|
|
50
|
-
// Handle network errors (no response)
|
|
51
|
-
if (error.code === 'ECONNREFUSED') {
|
|
52
|
-
return 'Could not connect to BrainGrid API. Please check your network connection.';
|
|
53
|
-
}
|
|
54
|
-
if (error.code === 'ETIMEDOUT') {
|
|
55
|
-
return 'Request timed out. Please try again.';
|
|
56
|
-
}
|
|
57
|
-
// Fallback to error message
|
|
58
|
-
return error.message;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Get user-friendly message for HTTP status codes
|
|
62
|
-
*/
|
|
63
|
-
function getStatusMessage(status, context, error) {
|
|
64
|
-
switch (status) {
|
|
65
|
-
case 400: {
|
|
66
|
-
// Bad Request - try to extract details from response
|
|
67
|
-
const data = error?.response?.data;
|
|
68
|
-
if (data && typeof data === 'object') {
|
|
69
|
-
// Check for validation errors or detailed message
|
|
70
|
-
if ('message' in data && typeof data.message === 'string') {
|
|
71
|
-
return data.message;
|
|
72
|
-
}
|
|
73
|
-
if ('detail' in data && typeof data.detail === 'string') {
|
|
74
|
-
return data.detail;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return context
|
|
78
|
-
? `Invalid ${context} - please check your input and try again`
|
|
79
|
-
: 'Invalid request - please check your input and try again';
|
|
80
|
-
}
|
|
81
|
-
case 401:
|
|
82
|
-
return 'Authentication required. Please run "braingrid login" to authenticate.';
|
|
83
|
-
case 403:
|
|
84
|
-
return context
|
|
85
|
-
? `You don't have permission to access this ${context}`
|
|
86
|
-
: "You don't have permission to perform this action";
|
|
87
|
-
case 404:
|
|
88
|
-
return context ? `${context} not found` : 'Resource not found';
|
|
89
|
-
case 409:
|
|
90
|
-
return context
|
|
91
|
-
? `${context} already exists or conflicts with existing data`
|
|
92
|
-
: 'Resource already exists or conflicts with existing data';
|
|
93
|
-
case 422:
|
|
94
|
-
return 'Validation failed - please check your input';
|
|
95
|
-
case 429:
|
|
96
|
-
return 'Too many requests. Please wait a moment and try again.';
|
|
97
|
-
case 500:
|
|
98
|
-
return 'Server error. Please try again later.';
|
|
99
|
-
case 502:
|
|
100
|
-
case 503:
|
|
101
|
-
case 504:
|
|
102
|
-
return 'BrainGrid service is temporarily unavailable. Please try again later.';
|
|
103
|
-
default:
|
|
104
|
-
return `Request failed with status ${status}`;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Format context string for error messages
|
|
109
|
-
* Converts resource names to user-friendly format
|
|
110
|
-
*/
|
|
111
|
-
export function getResourceContext(resourceType, id) {
|
|
112
|
-
const formatted = resourceType.charAt(0).toUpperCase() + resourceType.slice(1);
|
|
113
|
-
return id ? `${formatted} '${id}'` : formatted;
|
|
114
|
-
}
|
|
115
|
-
//# sourceMappingURL=error-formatter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-formatter.js","sourceRoot":"","sources":["../../src/utils/error-formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Requirement, RequirementTask as Task } from '../types/requirement.js';
|
|
2
|
-
export declare function formatRequirementsList(requirements: Requirement[], total: number): string;
|
|
3
|
-
export declare function formatRequirementDetail(requirement: Requirement): string;
|
|
4
|
-
export declare function formatTasksList(tasks: Task[], total?: number): string;
|
|
5
|
-
export declare function formatTaskDetail(task: Task): string;
|
|
6
|
-
export declare function formatErrorMessage(message: string): string;
|
|
7
|
-
export declare function formatSuccessMessage(message: string): string;
|
|
8
|
-
export declare function formatInfoMessage(message: string): string;
|
|
9
|
-
export declare function formatWarningMessage(message: string): string;
|
|
10
|
-
//# sourceMappingURL=formatting.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../src/utils/formatting.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,eAAe,IAAI,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAI/E,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAyBzF;AAED,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAuBxE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CA0BrE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAwBnD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D"}
|