@brainfile/cli 0.12.4 → 0.12.6
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/README.md +15 -0
- package/dist/cli.js +39 -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/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 +58 -0
- 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/show.d.ts +16 -0
- package/dist/commands/show.d.ts.map +1 -0
- package/dist/commands/show.js +177 -0
- package/dist/commands/show.js.map +1 -0
- 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/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/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/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,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":"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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"}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.ErrorType = exports.ExitCode = void 0;
|
|
7
7
|
exports.isDoneColumn = isDoneColumn;
|
|
8
8
|
exports.checkIncompleteSubtasks = checkIncompleteSubtasks;
|
|
9
|
-
exports.
|
|
9
|
+
exports.getIncompleteSubtasksWarning = getIncompleteSubtasksWarning;
|
|
10
10
|
exports.fileNotFoundError = fileNotFoundError;
|
|
11
11
|
exports.parseError = parseError;
|
|
12
12
|
exports.taskNotFoundError = taskNotFoundError;
|
|
@@ -79,23 +79,18 @@ function checkIncompleteSubtasks(task) {
|
|
|
79
79
|
* Prints a warning about incomplete subtasks when moving to a done column.
|
|
80
80
|
* Returns true if warning was printed.
|
|
81
81
|
*/
|
|
82
|
-
function
|
|
82
|
+
function getIncompleteSubtasksWarning(task, targetColumn) {
|
|
83
83
|
if (!isDoneColumn(targetColumn)) {
|
|
84
|
-
return
|
|
84
|
+
return null;
|
|
85
85
|
}
|
|
86
86
|
const result = checkIncompleteSubtasks(task);
|
|
87
87
|
if (!result.hasIncomplete) {
|
|
88
|
-
return
|
|
88
|
+
return null;
|
|
89
89
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
result.incomplete.
|
|
94
|
-
console.log(chalk_1.default.gray(` - [ ] ${st.id}: ${st.title}`));
|
|
95
|
-
});
|
|
96
|
-
console.log('');
|
|
97
|
-
console.log(chalk_1.default.gray(' Consider completing subtasks before marking done.'));
|
|
98
|
-
return true;
|
|
90
|
+
const incompleteList = result.incomplete
|
|
91
|
+
.map(st => ` - [ ] ${st.id}: ${st.title}`)
|
|
92
|
+
.join('\n');
|
|
93
|
+
return `Warning: Task has ${result.incomplete.length}/${result.total} incomplete subtasks\n Incomplete:\n${incompleteList}\n\n Consider completing subtasks before marking done.`;
|
|
99
94
|
}
|
|
100
95
|
// ============================================================================
|
|
101
96
|
// Error Handlers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../src/utils/errorHandler.ts"],"names":[],"mappings":";;;;;;AA6CA,oCAIC;AAgBD,0DAiBC;AAMD,
|
|
1
|
+
{"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../src/utils/errorHandler.ts"],"names":[],"mappings":";;;;;;AA6CA,oCAIC;AAgBD,0DAiBC;AAMD,oEAkBC;AAUD,8CAMC;AAKD,gCASC;AAKD,8CAcC;AAKD,kDAOC;AAKD,oDAcC;AAKD,oDAIC;AAKD,0CAGC;AAKD,wCAGC;AAKD,kCAGC;AAmBD,4BAKC;AAMD,gEAqBC;AA9QD,kDAA0B;AAG1B,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAElE,QAAA,QAAQ,GAAG;IACtB,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,CAAC,EAAS,iDAAiD;IACvE,OAAO,EAAE,CAAC,EAAY,qCAAqC;CACnD,CAAC;AAIX,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,IAAY,SASX;AATD,WAAY,SAAS;IACnB,8CAAiC,CAAA;IACjC,wCAA2B,CAAA;IAC3B,8CAAiC,CAAA;IACjC,kDAAqC,CAAA;IACrC,oDAAuC,CAAA;IACvC,kDAAqC,CAAA;IACrC,kDAAqC,CAAA;IACrC,kDAAqC,CAAA;AACvC,CAAC,EATW,SAAS,yBAAT,SAAS,QASpB;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,MAAM,oBAAoB,GAAG;IAC3B,SAAS;IACT,eAAe;IACf,aAAa;IACb,WAAW;CACZ,CAAC;AAEF;;;GAGG;AACH,SAAgB,YAAY,CAAC,MAAqC;IAChE,OAAO,oBAAoB,CAAC,IAAI,CAC9B,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CACjE,CAAC;AACJ,CAAC;AAaD;;GAEG;AACH,SAAgB,uBAAuB,CAAC,IAAU;IAChD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC1E,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;SAC7B,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;SAC3B,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAE/C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAE3D,OAAO;QACL,aAAa,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC;QACpC,SAAS;QACT,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;QAC3B,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,4BAA4B,CAC1C,IAAU,EACV,YAA2C;IAE3C,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU;SACrC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;SAC9C,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,qBAAqB,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,0CAA0C,cAAc,2DAA2D,CAAC;AAC1L,CAAC;AAGD,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;GAEG;AACH,SAAgB,iBAAiB,CAAC,QAAgB;IAChD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,gBAAQ,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,KAAc;IACvC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAC7D,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,gBAAQ,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,MAAc,EAAE,KAAY;IAC5D,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC9C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC1B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,gBAAQ,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,QAAgB,EAAE,KAAY;IAChE,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,gBAAQ,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,SAAiB,EAAE,IAAU;IAChE,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC,CAAC;IAEnE,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACzB,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,gBAAQ,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,MAAc,EAAE,KAAa;IAChE,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,MAAM,cAAc,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,gBAAQ,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,OAAe;IAC7C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,gBAAQ,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAa;IAC1C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,gBAAQ,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,KAAc;IACxC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3F,OAAO,CAAC,IAAI,CAAC,gBAAQ,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAgBD;;GAEG;AACH,SAAgB,QAAQ,CAAC,OAAe;IACtC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;QAC/D,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,0BAA0B,CACxC,IAAU,EACV,YAA2C;IAE3C,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU;SACrC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;SAC1C,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;QACL,OAAO,EAAE,qBAAqB,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,0BAA0B,cAAc,uDAAuD;QACrK,kBAAkB,EAAE,MAAM;KAC3B,CAAC;AACJ,CAAC"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
+
export interface GitHelperOptions {
|
|
2
|
+
/** Working directory for git commands. Defaults to process.cwd() */
|
|
3
|
+
cwd?: string;
|
|
4
|
+
}
|
|
1
5
|
/**
|
|
2
|
-
* Check if
|
|
6
|
+
* Check if a directory is a git repository
|
|
3
7
|
*/
|
|
4
|
-
export declare function isGitRepo(): Promise<boolean>;
|
|
8
|
+
export declare function isGitRepo(options?: GitHelperOptions): Promise<boolean>;
|
|
5
9
|
/**
|
|
6
10
|
* Check if there are uncommitted changes (excluding specified files)
|
|
7
11
|
*/
|
|
8
|
-
export declare function hasUncommittedChanges(excludePatterns?: string[]): Promise<boolean>;
|
|
12
|
+
export declare function hasUncommittedChanges(excludePatterns?: string[], options?: GitHelperOptions): Promise<boolean>;
|
|
9
13
|
/**
|
|
10
14
|
* Get list of modified files (both staged and unstaged)
|
|
11
15
|
*/
|
|
12
|
-
export declare function getModifiedFiles(): Promise<string[]>;
|
|
16
|
+
export declare function getModifiedFiles(options?: GitHelperOptions): Promise<string[]>;
|
|
13
17
|
//# sourceMappingURL=git-helper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-helper.d.ts","sourceRoot":"","sources":["../../src/utils/git-helper.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAsB,SAAS,
|
|
1
|
+
{"version":3,"file":"git-helper.d.ts","sourceRoot":"","sources":["../../src/utils/git-helper.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,CAQhF;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,eAAe,GAAE,MAAM,EAAO,EAC9B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAexF"}
|
package/dist/utils/git-helper.js
CHANGED
|
@@ -7,11 +7,12 @@ const child_process_1 = require("child_process");
|
|
|
7
7
|
const util_1 = require("util");
|
|
8
8
|
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
9
9
|
/**
|
|
10
|
-
* Check if
|
|
10
|
+
* Check if a directory is a git repository
|
|
11
11
|
*/
|
|
12
|
-
async function isGitRepo() {
|
|
12
|
+
async function isGitRepo(options = {}) {
|
|
13
13
|
try {
|
|
14
|
-
|
|
14
|
+
const cwd = options.cwd ?? process.cwd();
|
|
15
|
+
await execAsync('git rev-parse --git-dir', { cwd });
|
|
15
16
|
return true;
|
|
16
17
|
}
|
|
17
18
|
catch {
|
|
@@ -21,9 +22,10 @@ async function isGitRepo() {
|
|
|
21
22
|
/**
|
|
22
23
|
* Check if there are uncommitted changes (excluding specified files)
|
|
23
24
|
*/
|
|
24
|
-
async function hasUncommittedChanges(excludePatterns = []) {
|
|
25
|
+
async function hasUncommittedChanges(excludePatterns = [], options = {}) {
|
|
25
26
|
try {
|
|
26
|
-
const
|
|
27
|
+
const cwd = options.cwd ?? process.cwd();
|
|
28
|
+
const isRepo = await isGitRepo({ cwd });
|
|
27
29
|
if (!isRepo)
|
|
28
30
|
return false;
|
|
29
31
|
// Build exclude arguments for git
|
|
@@ -31,7 +33,7 @@ async function hasUncommittedChanges(excludePatterns = []) {
|
|
|
31
33
|
.map(pattern => `:(exclude)${pattern}`)
|
|
32
34
|
.join(' ');
|
|
33
35
|
const cmd = `git diff --name-only -- . ${excludeArgs}`.trim();
|
|
34
|
-
const { stdout } = await execAsync(cmd);
|
|
36
|
+
const { stdout } = await execAsync(cmd, { cwd });
|
|
35
37
|
return stdout.trim().length > 0;
|
|
36
38
|
}
|
|
37
39
|
catch {
|
|
@@ -41,12 +43,13 @@ async function hasUncommittedChanges(excludePatterns = []) {
|
|
|
41
43
|
/**
|
|
42
44
|
* Get list of modified files (both staged and unstaged)
|
|
43
45
|
*/
|
|
44
|
-
async function getModifiedFiles() {
|
|
46
|
+
async function getModifiedFiles(options = {}) {
|
|
45
47
|
try {
|
|
46
|
-
const
|
|
48
|
+
const cwd = options.cwd ?? process.cwd();
|
|
49
|
+
const isRepo = await isGitRepo({ cwd });
|
|
47
50
|
if (!isRepo)
|
|
48
51
|
return [];
|
|
49
|
-
const { stdout } = await execAsync('git status --porcelain');
|
|
52
|
+
const { stdout } = await execAsync('git status --porcelain', { cwd });
|
|
50
53
|
return stdout
|
|
51
54
|
.split('\n')
|
|
52
55
|
.filter(line => line.trim().length > 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-helper.js","sourceRoot":"","sources":["../../src/utils/git-helper.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"git-helper.js","sourceRoot":"","sources":["../../src/utils/git-helper.ts"],"names":[],"mappings":";;AAaA,8BAQC;AAKD,sDAqBC;AAKD,4CAeC;AAnED,iDAAqC;AACrC,+BAAiC;AAEjC,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAOlC;;GAEG;AACI,KAAK,UAAU,SAAS,CAAC,UAA4B,EAAE;IAC5D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACzC,MAAM,SAAS,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,qBAAqB,CACzC,kBAA4B,EAAE,EAC9B,UAA4B,EAAE;IAE9B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE1B,kCAAkC;QAClC,MAAM,WAAW,GAAG,eAAe;aAChC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,OAAO,EAAE,CAAC;aACtC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEb,MAAM,GAAG,GAAG,6BAA6B,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAC9D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAEjD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,gBAAgB,CAAC,UAA4B,EAAE;IACnE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAEtE,OAAO,MAAM;aACV,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;aACtC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger interface for CLI output.
|
|
3
|
+
* Allows dependency injection for testability.
|
|
4
|
+
*/
|
|
5
|
+
export interface Logger {
|
|
6
|
+
info(...args: unknown[]): void;
|
|
7
|
+
warn(...args: unknown[]): void;
|
|
8
|
+
error(...args: unknown[]): void;
|
|
9
|
+
log(...args: unknown[]): void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Default logger implementation wrapping console.
|
|
13
|
+
*/
|
|
14
|
+
export declare const defaultLogger: Logger;
|
|
15
|
+
/**
|
|
16
|
+
* Memory logger for testing - captures all output.
|
|
17
|
+
*/
|
|
18
|
+
export declare class MemoryLogger implements Logger {
|
|
19
|
+
readonly infos: unknown[][];
|
|
20
|
+
readonly warns: unknown[][];
|
|
21
|
+
readonly errors: unknown[][];
|
|
22
|
+
readonly logs: unknown[][];
|
|
23
|
+
info(...args: unknown[]): void;
|
|
24
|
+
warn(...args: unknown[]): void;
|
|
25
|
+
error(...args: unknown[]): void;
|
|
26
|
+
log(...args: unknown[]): void;
|
|
27
|
+
/** Get all output as a single string (for assertions) */
|
|
28
|
+
getOutput(): string;
|
|
29
|
+
/** Get all error output as a single string */
|
|
30
|
+
getErrorOutput(): string;
|
|
31
|
+
/** Clear all captured output */
|
|
32
|
+
clear(): void;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,MAAM;IACnB,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChC,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACjC;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAK3B,CAAC;AAEF;;GAEG;AACH,qBAAa,YAAa,YAAW,MAAM;IACvC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAM;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAM;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAM;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAM;IAEhC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI9B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI9B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/B,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI7B,yDAAyD;IACzD,SAAS,IAAI,MAAM;IAMnB,8CAA8C;IAC9C,cAAc,IAAI,MAAM;IAMxB,gCAAgC;IAChC,KAAK,IAAI,IAAI;CAMhB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MemoryLogger = exports.defaultLogger = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Default logger implementation wrapping console.
|
|
6
|
+
*/
|
|
7
|
+
exports.defaultLogger = {
|
|
8
|
+
info: (...args) => console.log(...args),
|
|
9
|
+
warn: (...args) => console.warn(...args),
|
|
10
|
+
error: (...args) => console.error(...args),
|
|
11
|
+
log: (...args) => console.log(...args),
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Memory logger for testing - captures all output.
|
|
15
|
+
*/
|
|
16
|
+
class MemoryLogger {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.infos = [];
|
|
19
|
+
this.warns = [];
|
|
20
|
+
this.errors = [];
|
|
21
|
+
this.logs = [];
|
|
22
|
+
}
|
|
23
|
+
info(...args) {
|
|
24
|
+
this.infos.push(args);
|
|
25
|
+
}
|
|
26
|
+
warn(...args) {
|
|
27
|
+
this.warns.push(args);
|
|
28
|
+
}
|
|
29
|
+
error(...args) {
|
|
30
|
+
this.errors.push(args);
|
|
31
|
+
}
|
|
32
|
+
log(...args) {
|
|
33
|
+
this.logs.push(args);
|
|
34
|
+
}
|
|
35
|
+
/** Get all output as a single string (for assertions) */
|
|
36
|
+
getOutput() {
|
|
37
|
+
return [...this.logs, ...this.infos, ...this.warns]
|
|
38
|
+
.map(args => args.map(String).join(' '))
|
|
39
|
+
.join('\n');
|
|
40
|
+
}
|
|
41
|
+
/** Get all error output as a single string */
|
|
42
|
+
getErrorOutput() {
|
|
43
|
+
return this.errors
|
|
44
|
+
.map(args => args.map(String).join(' '))
|
|
45
|
+
.join('\n');
|
|
46
|
+
}
|
|
47
|
+
/** Clear all captured output */
|
|
48
|
+
clear() {
|
|
49
|
+
this.infos.length = 0;
|
|
50
|
+
this.warns.length = 0;
|
|
51
|
+
this.errors.length = 0;
|
|
52
|
+
this.logs.length = 0;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.MemoryLogger = MemoryLogger;
|
|
56
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;AAWA;;GAEG;AACU,QAAA,aAAa,GAAW;IACjC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACvC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACxC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC1C,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,MAAa,YAAY;IAAzB;QACa,UAAK,GAAgB,EAAE,CAAC;QACxB,UAAK,GAAgB,EAAE,CAAC;QACxB,WAAM,GAAgB,EAAE,CAAC;QACzB,SAAI,GAAgB,EAAE,CAAC;IAuCpC,CAAC;IArCG,IAAI,CAAC,GAAG,IAAe;QACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,GAAG,IAAe;QACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,GAAG,IAAe;QACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,GAAG,IAAe;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,yDAAyD;IACzD,SAAS;QACL,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;aAC9C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACvC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,8CAA8C;IAC9C,cAAc;QACV,OAAO,IAAI,CAAC,MAAM;aACb,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACvC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,gCAAgC;IAChC,KAAK;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACzB,CAAC;CACJ;AA3CD,oCA2CC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brainfile/cli",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.6",
|
|
4
4
|
"description": "Command-line interface for Brainfile task management",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"access": "public"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@brainfile/core": "^0.9.
|
|
36
|
+
"@brainfile/core": "^0.9.2",
|
|
37
37
|
"@modelcontextprotocol/sdk": "^1.22.0",
|
|
38
38
|
"chalk": "^4.1.2",
|
|
39
39
|
"chokidar": "^4.0.3",
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 1,
|
|
3
|
-
"session_name": "auto-save",
|
|
4
|
-
"model": "openrouter/anthropic/claude-sonnet-4.5",
|
|
5
|
-
"weak_model": "openrouter/anthropic/claude-sonnet-4.5",
|
|
6
|
-
"editor_model": "openrouter/anthropic/claude-sonnet-4.5",
|
|
7
|
-
"editor_edit_format": "editor-whole",
|
|
8
|
-
"edit_format": "whole",
|
|
9
|
-
"chat_history": {
|
|
10
|
-
"done_messages": [],
|
|
11
|
-
"cur_messages": []
|
|
12
|
-
},
|
|
13
|
-
"files": {
|
|
14
|
-
"editable": [],
|
|
15
|
-
"read_only": [],
|
|
16
|
-
"read_only_stubs": []
|
|
17
|
-
},
|
|
18
|
-
"settings": {
|
|
19
|
-
"auto_commits": true,
|
|
20
|
-
"auto_lint": true,
|
|
21
|
-
"auto_test": false
|
|
22
|
-
}
|
|
23
|
-
}
|
package/.aider.chat.history.md
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
# aider chat started at 2025-11-23 14:32:56
|
|
3
|
-
|
|
4
|
-
> /home/george/.local/bin/aider-ce
|
|
5
|
-
> Using openrouter/anthropic/claude-sonnet-4 model with API key from environment.
|
|
6
|
-
> You can skip this check with --no-gitignore
|
|
7
|
-
> Added .aider* to .gitignore
|
|
8
|
-
> Aider v0.88.27
|
|
9
|
-
> Main model: openrouter/anthropic/claude-sonnet-4 with diff edit format, infinite output
|
|
10
|
-
> Weak model: openrouter/anthropic/claude-3-5-haiku
|
|
11
|
-
> Git repo: .git with 39 files
|
|
12
|
-
> Repo-map: using 4096 tokens, auto refresh
|
|
13
|
-
|
|
14
|
-
#### /exit
|
|
15
|
-
|
|
16
|
-
# aider chat started at 2025-11-23 14:35:57
|
|
17
|
-
|
|
18
|
-
> /home/george/.local/bin/aider-ce
|
|
19
|
-
> Using openrouter/anthropic/claude-sonnet-4 model with API key from environment.
|
|
20
|
-
> Aider v0.88.27
|
|
21
|
-
> Main model: openrouter/anthropic/claude-sonnet-4 with diff edit format, infinite output
|
|
22
|
-
> Weak model: openrouter/anthropic/claude-3-5-haiku
|
|
23
|
-
> Git repo: .git with 39 files
|
|
24
|
-
> Repo-map: using 4096 tokens, auto refresh
|
|
25
|
-
|
|
26
|
-
#### /model
|
|
27
|
-
> Aider v0.88.27
|
|
28
|
-
Main model: openrouter/anthropic/claude-sonnet-4 with diff edit format, infinite output
|
|
29
|
-
Weak model: openrouter/anthropic/claude-3-5-haiku
|
|
30
|
-
Git repo: .git with 39 files
|
|
31
|
-
Repo-map: using 4096 tokens, auto refresh
|
|
32
|
-
|
|
33
|
-
#### /model openrouter/anthropic/claude-sonnet-4.5
|
|
34
|
-
> Aider v0.88.27
|
|
35
|
-
> Main model: openrouter/anthropic/claude-sonnet-4.5 with whole edit format, infinite output
|
|
36
|
-
> Weak model: openrouter/anthropic/claude-3-5-haiku
|
|
37
|
-
> Git repo: .git with 39 files
|
|
38
|
-
> Repo-map: using 4096 tokens, auto refresh
|
|
39
|
-
|
|
40
|
-
# aider chat started at 2025-11-23 14:36:55
|
|
41
|
-
|
|
42
|
-
> /home/george/.local/bin/aider-ce
|
|
43
|
-
> Cost estimates may be inaccurate when using streaming and caching.
|
|
44
|
-
> Session not found: auto-save
|
|
45
|
-
> Use /list-sessions to see available sessions.
|
|
46
|
-
> Aider v0.88.27
|
|
47
|
-
> Model: openrouter/anthropic/claude-sonnet-4.5 with agent edit format, infinite output
|
|
48
|
-
> Git repo: .git with 39 files
|
|
49
|
-
> Repo-map: using 4096 tokens, files refresh
|
|
50
|
-
> MCP servers configured: context7, local_tools
|
|
51
|
-
> Multiline mode: Enabled. Enter inserts newline, Alt-Enter submits text
|
|
52
|
-
|
|
53
|
-
#### /exit
|
|
54
|
-
|
|
55
|
-
# aider chat started at 2025-11-23 14:38:42
|
|
56
|
-
|
|
57
|
-
> /home/george/.local/bin/aider-ce
|
|
58
|
-
> Cost estimates may be inaccurate when using streaming and caching.
|
|
59
|
-
> Session loaded: auto-save
|
|
60
|
-
> Model: openrouter/anthropic/claude-sonnet-4.5, Edit format: agent
|
|
61
|
-
> Loaded 0 messages and 0 files
|
|
62
|
-
> Aider v0.88.27
|
|
63
|
-
> Model: openrouter/anthropic/claude-sonnet-4.5 with agent edit format, infinite output
|
|
64
|
-
> Git repo: .git with 39 files
|
|
65
|
-
> Repo-map: using 4096 tokens, files refresh
|
|
66
|
-
> MCP servers configured: context7, local_tools
|
|
67
|
-
> Multiline mode: Enabled. Enter inserts newline, Alt-Enter submits text
|
|
68
|
-
|
|
69
|
-
# aider chat started at 2025-11-23 14:39:43
|
|
70
|
-
|
|
71
|
-
> /home/george/.local/bin/aider-ce
|
|
72
|
-
> Cost estimates may be inaccurate when using streaming and caching.
|
|
73
|
-
> Session loaded: auto-save
|
|
74
|
-
> Model: openrouter/anthropic/claude-sonnet-4.5, Edit format: agent
|
|
75
|
-
> Loaded 0 messages and 0 files
|
|
76
|
-
> Aider v0.88.27
|
|
77
|
-
> Model: openrouter/anthropic/claude-sonnet-4.5 with whole edit format, infinite output
|
|
78
|
-
> Git repo: .git with 39 files
|
|
79
|
-
> Repo-map: using 4096 tokens, files refresh
|
|
80
|
-
> MCP servers configured: context7
|
|
81
|
-
> Multiline mode: Enabled. Enter inserts newline, Alt-Enter submits text
|
package/.aider.input.history
DELETED
|
Binary file
|
|
Binary file
|
|
File without changes
|
package/.claude/settings.json
DELETED
package/brainfile.md
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
schema: https://brainfile.md/v1
|
|
3
|
-
title: Brainfile CLI Project
|
|
4
|
-
agent:
|
|
5
|
-
instructions:
|
|
6
|
-
- Modify only the YAML frontmatter
|
|
7
|
-
- Preserve all IDs
|
|
8
|
-
- Keep ordering
|
|
9
|
-
- Make minimal changes
|
|
10
|
-
columns:
|
|
11
|
-
- id: todo
|
|
12
|
-
title: To Do
|
|
13
|
-
tasks:
|
|
14
|
-
- id: task-1
|
|
15
|
-
title: Implement dark mode toggle
|
|
16
|
-
description: "Add a toggle for switching between light and dark themes"
|
|
17
|
-
priority: high
|
|
18
|
-
tags:
|
|
19
|
-
- ui
|
|
20
|
-
- feature
|
|
21
|
-
subtasks:
|
|
22
|
-
- id: task-1-1
|
|
23
|
-
title: Create theme context
|
|
24
|
-
completed: true
|
|
25
|
-
- id: task-1-2
|
|
26
|
-
title: Add toggle component
|
|
27
|
-
completed: false
|
|
28
|
-
- id: task-1-3
|
|
29
|
-
title: Persist preference
|
|
30
|
-
completed: false
|
|
31
|
-
- id: task-2
|
|
32
|
-
title: Fix login timeout issue
|
|
33
|
-
description: "Users report being logged out after 5 minutes"
|
|
34
|
-
priority: critical
|
|
35
|
-
tags:
|
|
36
|
-
- bug
|
|
37
|
-
- auth
|
|
38
|
-
dueDate: "2025-12-01"
|
|
39
|
-
- id: task-3
|
|
40
|
-
title: Update API documentation
|
|
41
|
-
priority: low
|
|
42
|
-
tags:
|
|
43
|
-
- docs
|
|
44
|
-
- id: task-4
|
|
45
|
-
title: Refactor database queries
|
|
46
|
-
description: "Optimize slow queries in the dashboard module"
|
|
47
|
-
priority: medium
|
|
48
|
-
tags:
|
|
49
|
-
- performance
|
|
50
|
-
- backend
|
|
51
|
-
subtasks:
|
|
52
|
-
- id: task-4-1
|
|
53
|
-
title: Identify slow queries
|
|
54
|
-
completed: true
|
|
55
|
-
- id: task-4-2
|
|
56
|
-
title: Add indexes
|
|
57
|
-
completed: true
|
|
58
|
-
- id: task-4-3
|
|
59
|
-
title: Test performance
|
|
60
|
-
completed: false
|
|
61
|
-
- id: task-5
|
|
62
|
-
title: Add unit tests for auth module
|
|
63
|
-
priority: high
|
|
64
|
-
tags:
|
|
65
|
-
- testing
|
|
66
|
-
dueDate: "2025-12-15"
|
|
67
|
-
- id: in-progress
|
|
68
|
-
title: In Progress
|
|
69
|
-
tasks:
|
|
70
|
-
- id: task-6
|
|
71
|
-
title: Responsive TUI layout
|
|
72
|
-
description: "Implement narrow mode for terminals under 80 columns"
|
|
73
|
-
priority: high
|
|
74
|
-
tags:
|
|
75
|
-
- tui
|
|
76
|
-
- feature
|
|
77
|
-
subtasks:
|
|
78
|
-
- id: task-6-1
|
|
79
|
-
title: Add layout breakpoints
|
|
80
|
-
completed: true
|
|
81
|
-
- id: task-6-2
|
|
82
|
-
title: Create StackedTaskList
|
|
83
|
-
completed: true
|
|
84
|
-
- id: task-6-3
|
|
85
|
-
title: Update MainPanelTabs
|
|
86
|
-
completed: true
|
|
87
|
-
- id: task-6-4
|
|
88
|
-
title: Test narrow mode
|
|
89
|
-
completed: false
|
|
90
|
-
- id: done
|
|
91
|
-
title: Done
|
|
92
|
-
tasks:
|
|
93
|
-
- id: task-7
|
|
94
|
-
title: TUI borderless redesign
|
|
95
|
-
priority: medium
|
|
96
|
-
tags:
|
|
97
|
-
- tui
|
|
98
|
-
- id: task-8
|
|
99
|
-
title: Terminal resize detection
|
|
100
|
-
tags:
|
|
101
|
-
- tui
|
|
102
|
-
---
|
package/logo.png
DELETED
|
Binary file
|