@brainfile/cli 0.12.3 → 0.12.5
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 +24 -0
- package/dist/cli.js +32 -9
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts +12 -3
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +83 -81
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +70 -47
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/contract.d.ts +20 -0
- package/dist/commands/contract.d.ts.map +1 -0
- package/dist/commands/contract.js +62 -0
- package/dist/commands/contract.js.map +1 -0
- package/dist/commands/hooks.d.ts +7 -6
- package/dist/commands/hooks.d.ts.map +1 -1
- package/dist/commands/hooks.js +130 -124
- package/dist/commands/hooks.js.map +1 -1
- package/dist/commands/lint.d.ts +9 -1
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +74 -77
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/list.d.ts +12 -3
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +59 -58
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +104 -17
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/move.d.ts +9 -1
- package/dist/commands/move.d.ts.map +1 -1
- package/dist/commands/move.js +78 -64
- package/dist/commands/move.js.map +1 -1
- package/dist/commands/restore.d.ts.map +1 -1
- package/dist/commands/restore.js +15 -13
- package/dist/commands/restore.js.map +1 -1
- package/dist/commands/template.d.ts +7 -1
- package/dist/commands/template.d.ts.map +1 -1
- package/dist/commands/template.js +105 -124
- package/dist/commands/template.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/contractRunner.d.ts +54 -0
- package/dist/lib/contractRunner.d.ts.map +1 -0
- package/dist/lib/contractRunner.js +273 -0
- package/dist/lib/contractRunner.js.map +1 -0
- package/dist/tui/BrainfileTUI.d.ts.map +1 -1
- package/dist/tui/BrainfileTUI.js +7 -1
- package/dist/tui/BrainfileTUI.js.map +1 -1
- package/dist/tui/actions.d.ts +5 -0
- package/dist/tui/actions.d.ts.map +1 -1
- package/dist/tui/actions.js +122 -0
- package/dist/tui/actions.js.map +1 -1
- package/dist/tui/components/StackedTaskList.d.ts.map +1 -1
- package/dist/tui/components/StackedTaskList.js +4 -4
- package/dist/tui/components/StackedTaskList.js.map +1 -1
- package/dist/tui/components/TaskCard.d.ts +3 -1
- package/dist/tui/components/TaskCard.d.ts.map +1 -1
- package/dist/tui/components/TaskCard.js +33 -9
- package/dist/tui/components/TaskCard.js.map +1 -1
- package/dist/tui/components/TaskCardMeasure.d.ts +1 -1
- package/dist/tui/components/TaskCardMeasure.d.ts.map +1 -1
- package/dist/tui/components/TaskCardMeasure.js +11 -1
- package/dist/tui/components/TaskCardMeasure.js.map +1 -1
- package/dist/tui/components/TaskDetail.d.ts +14 -0
- package/dist/tui/components/TaskDetail.d.ts.map +1 -0
- package/dist/tui/components/TaskDetail.js +41 -0
- package/dist/tui/components/TaskDetail.js.map +1 -0
- package/dist/tui/components/TaskList.d.ts.map +1 -1
- package/dist/tui/components/TaskList.js +5 -4
- package/dist/tui/components/TaskList.js.map +1 -1
- package/dist/tui/hooks/useKeyboardNavigation.d.ts.map +1 -1
- package/dist/tui/hooks/useKeyboardNavigation.js +15 -9
- package/dist/tui/hooks/useKeyboardNavigation.js.map +1 -1
- package/dist/utils/archive.d.ts +57 -0
- package/dist/utils/archive.d.ts.map +1 -0
- package/dist/utils/archive.js +304 -0
- package/dist/utils/archive.js.map +1 -0
- package/dist/utils/cli-error.d.ts +44 -0
- package/dist/utils/cli-error.d.ts.map +1 -0
- package/dist/utils/cli-error.js +85 -0
- package/dist/utils/cli-error.js.map +1 -0
- package/dist/utils/config.d.ts +30 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +80 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/errorHandler.d.ts +2 -2
- package/dist/utils/errorHandler.d.ts.map +1 -1
- package/dist/utils/errorHandler.js +8 -13
- package/dist/utils/errorHandler.js.map +1 -1
- package/dist/utils/git-helper.d.ts +8 -4
- package/dist/utils/git-helper.d.ts.map +1 -1
- package/dist/utils/git-helper.js +12 -9
- package/dist/utils/git-helper.js.map +1 -1
- package/dist/utils/logger.d.ts +34 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +56 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +2 -2
- package/.aider/sessions/auto-save.json +0 -23
- package/.aider.chat.history.md +0 -81
- package/.aider.input.history +0 -12
- package/.aider.tags.cache.v8/cache.db +0 -0
- package/.aider.tags.cache.v8/cache.db-shm +0 -0
- package/.aider.tags.cache.v8/cache.db-wal +0 -0
- package/.claude/settings.json +0 -7
- package/brainfile.md +0 -102
- package/logo.png +0 -0
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Archive utilities for Brainfile CLI
|
|
4
|
+
*
|
|
5
|
+
* Per protocol spec, archived tasks go to a separate brainfile-archive.md file,
|
|
6
|
+
* NOT to an inline archive array in the main brainfile.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.getArchivePath = getArchivePath;
|
|
45
|
+
exports.createEmptyArchiveBoard = createEmptyArchiveBoard;
|
|
46
|
+
exports.loadArchivedTasks = loadArchivedTasks;
|
|
47
|
+
exports.readArchiveBoard = readArchiveBoard;
|
|
48
|
+
exports.archiveTaskToFile = archiveTaskToFile;
|
|
49
|
+
exports.removeFromArchive = removeFromArchive;
|
|
50
|
+
exports.restoreFromArchive = restoreFromArchive;
|
|
51
|
+
const fs = __importStar(require("fs"));
|
|
52
|
+
const path = __importStar(require("path"));
|
|
53
|
+
const core_1 = require("@brainfile/core");
|
|
54
|
+
// ============================================================================
|
|
55
|
+
// Path Helpers
|
|
56
|
+
// ============================================================================
|
|
57
|
+
/**
|
|
58
|
+
* Get the archive file path for a given brainfile
|
|
59
|
+
* brainfile.md -> brainfile-archive.md
|
|
60
|
+
*/
|
|
61
|
+
function getArchivePath(filePath) {
|
|
62
|
+
const dir = path.dirname(filePath);
|
|
63
|
+
const filename = path.basename(filePath);
|
|
64
|
+
const archiveFilename = filename.replace(/\.md$/, '-archive.md');
|
|
65
|
+
return path.join(dir, archiveFilename);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Create an empty archive board structure
|
|
69
|
+
*/
|
|
70
|
+
function createEmptyArchiveBoard() {
|
|
71
|
+
return {
|
|
72
|
+
title: 'Archive',
|
|
73
|
+
columns: [],
|
|
74
|
+
archive: [],
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
// ============================================================================
|
|
78
|
+
// Read Operations
|
|
79
|
+
// ============================================================================
|
|
80
|
+
/**
|
|
81
|
+
* Load archived tasks from the separate archive file
|
|
82
|
+
*/
|
|
83
|
+
function loadArchivedTasks(filePath) {
|
|
84
|
+
const archivePath = getArchivePath(filePath);
|
|
85
|
+
if (!fs.existsSync(archivePath)) {
|
|
86
|
+
return { tasks: [], archivePath };
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
const archiveContent = fs.readFileSync(archivePath, 'utf-8');
|
|
90
|
+
const parseResult = core_1.Brainfile.parseWithErrors(archiveContent);
|
|
91
|
+
if (parseResult.board && Array.isArray(parseResult.board.archive)) {
|
|
92
|
+
return { tasks: parseResult.board.archive, archivePath };
|
|
93
|
+
}
|
|
94
|
+
return { tasks: [], archivePath };
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
return {
|
|
98
|
+
tasks: [],
|
|
99
|
+
archivePath,
|
|
100
|
+
error: `Failed to read archive: ${err instanceof Error ? err.message : String(err)}`,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Read the archive board (full structure)
|
|
106
|
+
*/
|
|
107
|
+
function readArchiveBoard(filePath) {
|
|
108
|
+
const archivePath = getArchivePath(filePath);
|
|
109
|
+
if (!fs.existsSync(archivePath)) {
|
|
110
|
+
return { board: null, archivePath };
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
const archiveContent = fs.readFileSync(archivePath, 'utf-8');
|
|
114
|
+
const parseResult = core_1.Brainfile.parseWithErrors(archiveContent);
|
|
115
|
+
if (parseResult.board) {
|
|
116
|
+
return { board: parseResult.board, archivePath };
|
|
117
|
+
}
|
|
118
|
+
return { board: null, archivePath, error: parseResult.error };
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
return {
|
|
122
|
+
board: null,
|
|
123
|
+
archivePath,
|
|
124
|
+
error: `Failed to read archive: ${err instanceof Error ? err.message : String(err)}`,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// ============================================================================
|
|
129
|
+
// Write Operations
|
|
130
|
+
// ============================================================================
|
|
131
|
+
/**
|
|
132
|
+
* Archive a task to the separate archive file
|
|
133
|
+
*
|
|
134
|
+
* 1. Removes task from main board
|
|
135
|
+
* 2. Adds task to brainfile-archive.md
|
|
136
|
+
*/
|
|
137
|
+
function archiveTaskToFile(filePath, board, columnId, taskId) {
|
|
138
|
+
const taskInfo = board.columns.find((c) => c.id === columnId)?.tasks.find((t) => t.id === taskId);
|
|
139
|
+
if (!taskInfo) {
|
|
140
|
+
return { success: false, error: `Task ${taskId} not found in column ${columnId}` };
|
|
141
|
+
}
|
|
142
|
+
const task = taskInfo;
|
|
143
|
+
// Remove task from the main board
|
|
144
|
+
const result = (0, core_1.deleteTask)(board, columnId, taskId);
|
|
145
|
+
if (!result.success) {
|
|
146
|
+
return { success: false, error: result.error };
|
|
147
|
+
}
|
|
148
|
+
// Save the main board without the task
|
|
149
|
+
try {
|
|
150
|
+
const mainContent = core_1.Brainfile.serialize(result.board);
|
|
151
|
+
fs.writeFileSync(filePath, mainContent, 'utf-8');
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
return {
|
|
155
|
+
success: false,
|
|
156
|
+
error: `Failed to write main file: ${err instanceof Error ? err.message : String(err)}`,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
// Add task to separate archive file
|
|
160
|
+
const archivePath = getArchivePath(filePath);
|
|
161
|
+
let archiveBoard;
|
|
162
|
+
if (fs.existsSync(archivePath)) {
|
|
163
|
+
try {
|
|
164
|
+
const archiveContent = fs.readFileSync(archivePath, 'utf-8');
|
|
165
|
+
const parseResult = core_1.Brainfile.parseWithErrors(archiveContent);
|
|
166
|
+
archiveBoard = parseResult.board || createEmptyArchiveBoard();
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
archiveBoard = createEmptyArchiveBoard();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
archiveBoard = createEmptyArchiveBoard();
|
|
174
|
+
}
|
|
175
|
+
// Add task to archive (at beginning)
|
|
176
|
+
if (!archiveBoard.archive) {
|
|
177
|
+
archiveBoard.archive = [];
|
|
178
|
+
}
|
|
179
|
+
archiveBoard.archive.unshift(task);
|
|
180
|
+
// Save archive file
|
|
181
|
+
try {
|
|
182
|
+
const archiveContent = core_1.Brainfile.serialize(archiveBoard);
|
|
183
|
+
fs.writeFileSync(archivePath, archiveContent, 'utf-8');
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
return {
|
|
187
|
+
success: false,
|
|
188
|
+
error: `Task removed from board but failed to write archive: ${err instanceof Error ? err.message : String(err)}`,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
return { success: true, board: result.board, archiveBoard };
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Remove a task from the archive file (after exporting to external service)
|
|
195
|
+
*/
|
|
196
|
+
function removeFromArchive(filePath, taskId) {
|
|
197
|
+
const archivePath = getArchivePath(filePath);
|
|
198
|
+
if (!fs.existsSync(archivePath)) {
|
|
199
|
+
return { success: false, error: 'Archive file not found' };
|
|
200
|
+
}
|
|
201
|
+
let archiveBoard;
|
|
202
|
+
try {
|
|
203
|
+
const archiveContent = fs.readFileSync(archivePath, 'utf-8');
|
|
204
|
+
const parseResult = core_1.Brainfile.parseWithErrors(archiveContent);
|
|
205
|
+
if (!parseResult.board) {
|
|
206
|
+
return { success: false, error: 'Failed to parse archive file' };
|
|
207
|
+
}
|
|
208
|
+
archiveBoard = parseResult.board;
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
return {
|
|
212
|
+
success: false,
|
|
213
|
+
error: `Failed to read archive: ${err instanceof Error ? err.message : String(err)}`,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
// Remove task from archive
|
|
217
|
+
const originalLength = archiveBoard.archive?.length || 0;
|
|
218
|
+
archiveBoard.archive = (archiveBoard.archive || []).filter((t) => t.id !== taskId);
|
|
219
|
+
if (archiveBoard.archive.length === originalLength) {
|
|
220
|
+
return { success: false, error: `Task ${taskId} not found in archive` };
|
|
221
|
+
}
|
|
222
|
+
// Save updated archive
|
|
223
|
+
try {
|
|
224
|
+
const archiveContent = core_1.Brainfile.serialize(archiveBoard);
|
|
225
|
+
fs.writeFileSync(archivePath, archiveContent, 'utf-8');
|
|
226
|
+
}
|
|
227
|
+
catch (err) {
|
|
228
|
+
return {
|
|
229
|
+
success: false,
|
|
230
|
+
error: `Failed to write archive: ${err instanceof Error ? err.message : String(err)}`,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
return { success: true, archiveBoard };
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Restore a task from archive to a column in the main brainfile
|
|
237
|
+
*/
|
|
238
|
+
function restoreFromArchive(filePath, taskId, toColumnId) {
|
|
239
|
+
const archivePath = getArchivePath(filePath);
|
|
240
|
+
// Read archive
|
|
241
|
+
if (!fs.existsSync(archivePath)) {
|
|
242
|
+
return { success: false, error: 'Archive file not found' };
|
|
243
|
+
}
|
|
244
|
+
let archiveBoard;
|
|
245
|
+
try {
|
|
246
|
+
const archiveContent = fs.readFileSync(archivePath, 'utf-8');
|
|
247
|
+
const parseResult = core_1.Brainfile.parseWithErrors(archiveContent);
|
|
248
|
+
if (!parseResult.board) {
|
|
249
|
+
return { success: false, error: 'Failed to parse archive file' };
|
|
250
|
+
}
|
|
251
|
+
archiveBoard = parseResult.board;
|
|
252
|
+
}
|
|
253
|
+
catch (err) {
|
|
254
|
+
return {
|
|
255
|
+
success: false,
|
|
256
|
+
error: `Failed to read archive: ${err instanceof Error ? err.message : String(err)}`,
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
// Find task in archive
|
|
260
|
+
const task = archiveBoard.archive?.find((t) => t.id === taskId);
|
|
261
|
+
if (!task) {
|
|
262
|
+
return { success: false, error: `Task ${taskId} not found in archive` };
|
|
263
|
+
}
|
|
264
|
+
// Read main brainfile
|
|
265
|
+
let board;
|
|
266
|
+
try {
|
|
267
|
+
const mainContent = fs.readFileSync(filePath, 'utf-8');
|
|
268
|
+
const parseResult = core_1.Brainfile.parseWithErrors(mainContent);
|
|
269
|
+
if (!parseResult.board) {
|
|
270
|
+
return { success: false, error: 'Failed to parse main brainfile' };
|
|
271
|
+
}
|
|
272
|
+
board = parseResult.board;
|
|
273
|
+
}
|
|
274
|
+
catch (err) {
|
|
275
|
+
return {
|
|
276
|
+
success: false,
|
|
277
|
+
error: `Failed to read main file: ${err instanceof Error ? err.message : String(err)}`,
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
// Find target column
|
|
281
|
+
const targetColumn = board.columns.find((c) => c.id === toColumnId);
|
|
282
|
+
if (!targetColumn) {
|
|
283
|
+
return { success: false, error: `Column ${toColumnId} not found` };
|
|
284
|
+
}
|
|
285
|
+
// Add task to column
|
|
286
|
+
targetColumn.tasks.push(task);
|
|
287
|
+
// Remove from archive
|
|
288
|
+
archiveBoard.archive = archiveBoard.archive.filter((t) => t.id !== taskId);
|
|
289
|
+
// Save both files
|
|
290
|
+
try {
|
|
291
|
+
const mainContent = core_1.Brainfile.serialize(board);
|
|
292
|
+
fs.writeFileSync(filePath, mainContent, 'utf-8');
|
|
293
|
+
const archiveContent = core_1.Brainfile.serialize(archiveBoard);
|
|
294
|
+
fs.writeFileSync(archivePath, archiveContent, 'utf-8');
|
|
295
|
+
}
|
|
296
|
+
catch (err) {
|
|
297
|
+
return {
|
|
298
|
+
success: false,
|
|
299
|
+
error: `Failed to save files: ${err instanceof Error ? err.message : String(err)}`,
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
return { success: true, board, archiveBoard };
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=archive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/utils/archive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type ExitCodeType } from './errorHandler';
|
|
2
|
+
/**
|
|
3
|
+
* Custom error class for CLI errors.
|
|
4
|
+
* Thrown by commands to signal failure without calling process.exit directly.
|
|
5
|
+
* The CLI entry point catches this and handles exit codes.
|
|
6
|
+
*/
|
|
7
|
+
export declare class CLIError extends Error {
|
|
8
|
+
readonly exitCode: ExitCodeType;
|
|
9
|
+
readonly details?: string;
|
|
10
|
+
constructor(message: string, exitCode?: ExitCodeType, details?: string);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create a CLIError for file not found.
|
|
14
|
+
*/
|
|
15
|
+
export declare function fileNotFound(filePath: string): CLIError;
|
|
16
|
+
/**
|
|
17
|
+
* Create a CLIError for parse errors.
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseFailure(error?: string): CLIError;
|
|
20
|
+
/**
|
|
21
|
+
* Create a CLIError for missing required options.
|
|
22
|
+
*/
|
|
23
|
+
export declare function missingRequired(option: string, usage: string): CLIError;
|
|
24
|
+
/**
|
|
25
|
+
* Create a CLIError from a core operation failure.
|
|
26
|
+
*/
|
|
27
|
+
export declare function operationFailed(error: string): CLIError;
|
|
28
|
+
/**
|
|
29
|
+
* Create a CLIError for column not found.
|
|
30
|
+
*/
|
|
31
|
+
export declare function columnNotFound(columnId: string, availableColumns: string[]): CLIError;
|
|
32
|
+
/**
|
|
33
|
+
* Create a CLIError for task not found.
|
|
34
|
+
*/
|
|
35
|
+
export declare function taskNotFound(taskId: string, availableTasks?: string[]): CLIError;
|
|
36
|
+
/**
|
|
37
|
+
* Create a CLIError for subtask not found.
|
|
38
|
+
*/
|
|
39
|
+
export declare function subtaskNotFound(subtaskId: string, availableSubtasks?: string[]): CLIError;
|
|
40
|
+
/**
|
|
41
|
+
* Create a CLIError for validation errors.
|
|
42
|
+
*/
|
|
43
|
+
export declare function validationError(message: string): CLIError;
|
|
44
|
+
//# sourceMappingURL=cli-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-error.d.ts","sourceRoot":"","sources":["../../src/utils/cli-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE7D;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,KAAK;IAC/B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAEd,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,YAAkC,EAAE,OAAO,CAAC,EAAE,MAAM;CAM9F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAMvD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAOrD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAMvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAEvD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,QAAQ,CAOrF;AACD;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,GAAE,MAAM,EAAO,GAAG,QAAQ,CAMpF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,GAAE,MAAM,EAAO,GAAG,QAAQ,CAM7F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAEzD"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CLIError = void 0;
|
|
4
|
+
exports.fileNotFound = fileNotFound;
|
|
5
|
+
exports.parseFailure = parseFailure;
|
|
6
|
+
exports.missingRequired = missingRequired;
|
|
7
|
+
exports.operationFailed = operationFailed;
|
|
8
|
+
exports.columnNotFound = columnNotFound;
|
|
9
|
+
exports.taskNotFound = taskNotFound;
|
|
10
|
+
exports.subtaskNotFound = subtaskNotFound;
|
|
11
|
+
exports.validationError = validationError;
|
|
12
|
+
const errorHandler_1 = require("./errorHandler");
|
|
13
|
+
/**
|
|
14
|
+
* Custom error class for CLI errors.
|
|
15
|
+
* Thrown by commands to signal failure without calling process.exit directly.
|
|
16
|
+
* The CLI entry point catches this and handles exit codes.
|
|
17
|
+
*/
|
|
18
|
+
class CLIError extends Error {
|
|
19
|
+
constructor(message, exitCode = errorHandler_1.ExitCode.USER_ERROR, details) {
|
|
20
|
+
super(message);
|
|
21
|
+
this.name = 'CLIError';
|
|
22
|
+
this.exitCode = exitCode;
|
|
23
|
+
this.details = details;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.CLIError = CLIError;
|
|
27
|
+
/**
|
|
28
|
+
* Create a CLIError for file not found.
|
|
29
|
+
*/
|
|
30
|
+
function fileNotFound(filePath) {
|
|
31
|
+
return new CLIError(`File not found: ${filePath}`, errorHandler_1.ExitCode.USER_ERROR, 'To create a new brainfile, run: brainfile init');
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Create a CLIError for parse errors.
|
|
35
|
+
*/
|
|
36
|
+
function parseFailure(error) {
|
|
37
|
+
const msg = error ? `Failed to parse brainfile: ${error}` : 'Failed to parse brainfile';
|
|
38
|
+
return new CLIError(msg, errorHandler_1.ExitCode.USER_ERROR, 'To validate and fix syntax issues, run: brainfile lint --fix');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Create a CLIError for missing required options.
|
|
42
|
+
*/
|
|
43
|
+
function missingRequired(option, usage) {
|
|
44
|
+
return new CLIError(`${option} is required`, errorHandler_1.ExitCode.USER_ERROR, `Usage: ${usage}`);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create a CLIError from a core operation failure.
|
|
48
|
+
*/
|
|
49
|
+
function operationFailed(error) {
|
|
50
|
+
return new CLIError(error, errorHandler_1.ExitCode.USER_ERROR);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Create a CLIError for column not found.
|
|
54
|
+
*/
|
|
55
|
+
function columnNotFound(columnId, availableColumns) {
|
|
56
|
+
const listStr = availableColumns.join(', ');
|
|
57
|
+
return new CLIError(`Column not found: ${columnId}`, errorHandler_1.ExitCode.USER_ERROR, `Available columns: ${listStr}`);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create a CLIError for task not found.
|
|
61
|
+
*/
|
|
62
|
+
function taskNotFound(taskId, availableTasks = []) {
|
|
63
|
+
let details;
|
|
64
|
+
if (availableTasks.length > 0) {
|
|
65
|
+
details = `Available tasks:\n${availableTasks.map(t => ` - ${t}`).join('\n')}`;
|
|
66
|
+
}
|
|
67
|
+
return new CLIError(`Task not found: ${taskId}`, errorHandler_1.ExitCode.USER_ERROR, details);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Create a CLIError for subtask not found.
|
|
71
|
+
*/
|
|
72
|
+
function subtaskNotFound(subtaskId, availableSubtasks = []) {
|
|
73
|
+
let details;
|
|
74
|
+
if (availableSubtasks.length > 0) {
|
|
75
|
+
details = `Available subtasks:\n${availableSubtasks.map(t => ` - ${t}`).join('\n')}`;
|
|
76
|
+
}
|
|
77
|
+
return new CLIError(`Subtask not found: ${subtaskId}`, errorHandler_1.ExitCode.USER_ERROR, details);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Create a CLIError for validation errors.
|
|
81
|
+
*/
|
|
82
|
+
function validationError(message) {
|
|
83
|
+
return new CLIError(`Validation error: ${message}`, errorHandler_1.ExitCode.USER_ERROR);
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=cli-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-error.js","sourceRoot":"","sources":["../../src/utils/cli-error.ts"],"names":[],"mappings":";;;AAsBA,oCAMC;AAKD,oCAOC;AAKD,0CAMC;AAKD,0CAEC;AAKD,wCAOC;AAID,oCAMC;AAKD,0CAMC;AAKD,0CAEC;AAlGD,iDAA6D;AAE7D;;;;GAIG;AACH,MAAa,QAAS,SAAQ,KAAK;IAI/B,YAAY,OAAe,EAAE,WAAyB,uBAAQ,CAAC,UAAU,EAAE,OAAgB;QACvF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;CACJ;AAVD,4BAUC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,QAAgB;IACzC,OAAO,IAAI,QAAQ,CACf,mBAAmB,QAAQ,EAAE,EAC7B,uBAAQ,CAAC,UAAU,EACnB,gDAAgD,CACnD,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,KAAc;IACvC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC;IACxF,OAAO,IAAI,QAAQ,CACf,GAAG,EACH,uBAAQ,CAAC,UAAU,EACnB,8DAA8D,CACjE,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,MAAc,EAAE,KAAa;IACzD,OAAO,IAAI,QAAQ,CACf,GAAG,MAAM,cAAc,EACvB,uBAAQ,CAAC,UAAU,EACnB,UAAU,KAAK,EAAE,CACpB,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAa;IACzC,OAAO,IAAI,QAAQ,CAAC,KAAK,EAAE,uBAAQ,CAAC,UAAU,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,QAAgB,EAAE,gBAA0B;IACvE,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,IAAI,QAAQ,CACf,qBAAqB,QAAQ,EAAE,EAC/B,uBAAQ,CAAC,UAAU,EACnB,sBAAsB,OAAO,EAAE,CAClC,CAAC;AACN,CAAC;AACD;;GAEG;AACH,SAAgB,YAAY,CAAC,MAAc,EAAE,iBAA2B,EAAE;IACtE,IAAI,OAA2B,CAAC;IAChC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,GAAG,qBAAqB,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACpF,CAAC;IACD,OAAO,IAAI,QAAQ,CAAC,mBAAmB,MAAM,EAAE,EAAE,uBAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACnF,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,SAAiB,EAAE,oBAA8B,EAAE;IAC/E,IAAI,OAA2B,CAAC;IAChC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,wBAAwB,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1F,CAAC;IACD,OAAO,IAAI,QAAQ,CAAC,sBAAsB,SAAS,EAAE,EAAE,uBAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACzF,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,OAAe;IAC3C,OAAO,IAAI,QAAQ,CAAC,qBAAqB,OAAO,EAAE,EAAE,uBAAQ,CAAC,UAAU,CAAC,CAAC;AAC7E,CAAC"}
|
package/dist/utils/config.d.ts
CHANGED
|
@@ -86,4 +86,34 @@ export declare function setLinearConfig(linear: LinearConfig): void;
|
|
|
86
86
|
* @returns The effective destination
|
|
87
87
|
*/
|
|
88
88
|
export declare function getEffectiveArchiveDestination(brainfileDestination?: string): 'local' | 'github' | 'linear';
|
|
89
|
+
export interface ParsedDestination {
|
|
90
|
+
type: 'local' | 'github' | 'linear';
|
|
91
|
+
/** GitHub owner (from github:owner/repo) */
|
|
92
|
+
owner?: string;
|
|
93
|
+
/** GitHub repo (from github:owner/repo) */
|
|
94
|
+
repo?: string;
|
|
95
|
+
/** Linear team key (from linear:TEAM) */
|
|
96
|
+
teamKey?: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Parse an archive destination string
|
|
100
|
+
*
|
|
101
|
+
* Formats:
|
|
102
|
+
* - `local` → local archive
|
|
103
|
+
* - `github` → GitHub with config defaults
|
|
104
|
+
* - `github:owner/repo` → GitHub with explicit owner/repo
|
|
105
|
+
* - `linear` → Linear with config defaults
|
|
106
|
+
* - `linear:TEAM` → Linear with explicit team key
|
|
107
|
+
*
|
|
108
|
+
* @param destination - Destination string from brainfile.md or CLI
|
|
109
|
+
* @returns Parsed destination with type and optional target info
|
|
110
|
+
*/
|
|
111
|
+
export declare function parseArchiveDestination(destination: string): ParsedDestination | null;
|
|
112
|
+
/**
|
|
113
|
+
* Get effective archive destination with full config resolution
|
|
114
|
+
*
|
|
115
|
+
* @param brainfileDestination - Destination from brainfile.md (may include target)
|
|
116
|
+
* @returns Fully resolved destination with type and target info
|
|
117
|
+
*/
|
|
118
|
+
export declare function getEffectiveDestination(brainfileDestination?: string): ParsedDestination;
|
|
89
119
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH,MAAM,WAAW,YAAY;IAC3B,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACxC,+BAA+B;IAC/B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAaD;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,eAAe,CAW5C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAMxD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAK/E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAGhD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAKlF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAK1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAK1D;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,oBAAoB,CAAC,EAAE,MAAM,GAC5B,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAc/B"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH,MAAM,WAAW,YAAY;IAC3B,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACxC,+BAA+B;IAC/B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAaD;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,eAAe,CAW5C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAMxD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAK/E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAGhD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAKlF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAK1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAK1D;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,oBAAoB,CAAC,EAAE,MAAM,GAC5B,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAc/B;AAMD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAsCrF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,iBAAiB,CA6BxF"}
|
package/dist/utils/config.js
CHANGED
|
@@ -55,6 +55,8 @@ exports.setArchiveDefault = setArchiveDefault;
|
|
|
55
55
|
exports.setGitHubConfig = setGitHubConfig;
|
|
56
56
|
exports.setLinearConfig = setLinearConfig;
|
|
57
57
|
exports.getEffectiveArchiveDestination = getEffectiveArchiveDestination;
|
|
58
|
+
exports.parseArchiveDestination = parseArchiveDestination;
|
|
59
|
+
exports.getEffectiveDestination = getEffectiveDestination;
|
|
58
60
|
const fs = __importStar(require("fs"));
|
|
59
61
|
const path = __importStar(require("path"));
|
|
60
62
|
const os = __importStar(require("os"));
|
|
@@ -178,6 +180,84 @@ function getEffectiveArchiveDestination(brainfileDestination) {
|
|
|
178
180
|
// Priority 3: fallback to local
|
|
179
181
|
return 'local';
|
|
180
182
|
}
|
|
183
|
+
/**
|
|
184
|
+
* Parse an archive destination string
|
|
185
|
+
*
|
|
186
|
+
* Formats:
|
|
187
|
+
* - `local` → local archive
|
|
188
|
+
* - `github` → GitHub with config defaults
|
|
189
|
+
* - `github:owner/repo` → GitHub with explicit owner/repo
|
|
190
|
+
* - `linear` → Linear with config defaults
|
|
191
|
+
* - `linear:TEAM` → Linear with explicit team key
|
|
192
|
+
*
|
|
193
|
+
* @param destination - Destination string from brainfile.md or CLI
|
|
194
|
+
* @returns Parsed destination with type and optional target info
|
|
195
|
+
*/
|
|
196
|
+
function parseArchiveDestination(destination) {
|
|
197
|
+
if (!destination)
|
|
198
|
+
return null;
|
|
199
|
+
// Simple destinations
|
|
200
|
+
if (destination === 'local') {
|
|
201
|
+
return { type: 'local' };
|
|
202
|
+
}
|
|
203
|
+
if (destination === 'github') {
|
|
204
|
+
return { type: 'github' };
|
|
205
|
+
}
|
|
206
|
+
if (destination === 'linear') {
|
|
207
|
+
return { type: 'linear' };
|
|
208
|
+
}
|
|
209
|
+
// Extended format: github:owner/repo
|
|
210
|
+
if (destination.startsWith('github:')) {
|
|
211
|
+
const target = destination.slice(7); // Remove 'github:'
|
|
212
|
+
const parts = target.split('/');
|
|
213
|
+
if (parts.length === 2 && parts[0] && parts[1]) {
|
|
214
|
+
return { type: 'github', owner: parts[0], repo: parts[1] };
|
|
215
|
+
}
|
|
216
|
+
// Invalid format, treat as plain github
|
|
217
|
+
return { type: 'github' };
|
|
218
|
+
}
|
|
219
|
+
// Extended format: linear:TEAM
|
|
220
|
+
if (destination.startsWith('linear:')) {
|
|
221
|
+
const teamKey = destination.slice(7); // Remove 'linear:'
|
|
222
|
+
if (teamKey) {
|
|
223
|
+
return { type: 'linear', teamKey };
|
|
224
|
+
}
|
|
225
|
+
// Invalid format, treat as plain linear
|
|
226
|
+
return { type: 'linear' };
|
|
227
|
+
}
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Get effective archive destination with full config resolution
|
|
232
|
+
*
|
|
233
|
+
* @param brainfileDestination - Destination from brainfile.md (may include target)
|
|
234
|
+
* @returns Fully resolved destination with type and target info
|
|
235
|
+
*/
|
|
236
|
+
function getEffectiveDestination(brainfileDestination) {
|
|
237
|
+
// Priority 1: brainfile.md setting (may have inline target)
|
|
238
|
+
if (brainfileDestination) {
|
|
239
|
+
const parsed = parseArchiveDestination(brainfileDestination);
|
|
240
|
+
if (parsed) {
|
|
241
|
+
// Fill in missing config from global config
|
|
242
|
+
const config = getArchiveConfig();
|
|
243
|
+
if (parsed.type === 'github' && !parsed.owner) {
|
|
244
|
+
parsed.owner = config.github?.owner;
|
|
245
|
+
parsed.repo = config.github?.repo;
|
|
246
|
+
}
|
|
247
|
+
if (parsed.type === 'linear' && !parsed.teamKey) {
|
|
248
|
+
// We'll resolve teamKey to teamId later in the archive command
|
|
249
|
+
}
|
|
250
|
+
return parsed;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// Priority 2: config default
|
|
254
|
+
const config = getArchiveConfig();
|
|
255
|
+
if (config.default && isValidDestination(config.default)) {
|
|
256
|
+
return { type: config.default };
|
|
257
|
+
}
|
|
258
|
+
// Priority 3: fallback to local
|
|
259
|
+
return { type: 'local' };
|
|
260
|
+
}
|
|
181
261
|
// ============================================================================
|
|
182
262
|
// Helper Functions
|
|
183
263
|
// ============================================================================
|
package/dist/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDH,oCAEC;AAKD,sCAEC;AAKD,0CAIC;AAMD,gCAWC;AAMD,gCAMC;AAMD,oCAKC;AAKD,4CAGC;AAKD,8CAKC;AAKD,0CAKC;AAKD,0CAKC;AASD,wEAgBC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,10 +40,10 @@ export declare function checkIncompleteSubtasks(task: Task): IncompleteSubtasksR
|
|
|
40
40
|
* Prints a warning about incomplete subtasks when moving to a done column.
|
|
41
41
|
* Returns true if warning was printed.
|
|
42
42
|
*/
|
|
43
|
-
export declare function
|
|
43
|
+
export declare function getIncompleteSubtasksWarning(task: Task, targetColumn: {
|
|
44
44
|
id: string;
|
|
45
45
|
title: string;
|
|
46
|
-
}):
|
|
46
|
+
}): string | null;
|
|
47
47
|
/**
|
|
48
48
|
* Handles file not found errors with actionable guidance.
|
|
49
49
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../src/utils/errorHandler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAU,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAM3D,eAAO,MAAM,QAAQ;;;;CAIX,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,OAAO,QAAQ,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAMlE,oBAAY,SAAS;IACnB,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;IACvC,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;CACtC;AAaD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAI3E;AAMD,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,wBAAwB,CAiB5E;AAED;;;GAGG;AACH,wBAAgB,
|
|
1
|
+
{"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../src/utils/errorHandler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAU,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAM3D,eAAO,MAAM,QAAQ;;;;CAIX,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,OAAO,QAAQ,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAMlE,oBAAY,SAAS;IACnB,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;IACvC,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;CACtC;AAaD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAI3E;AAMD,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,wBAAwB,CAiB5E;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,IAAI,EACV,YAAY,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1C,MAAM,GAAG,IAAI,CAef;AAOD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAMzD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAShD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAcrE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAOzE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,CAczE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAIzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAGtD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAGnD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAGjD;AAMD,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,EAAE,IAAI,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;CAC/C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAKlD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,IAAI,EACV,YAAY,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1C,UAAU,GAAG,SAAS,CAkBxB"}
|