@brainfile/cli 0.12.4 → 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.
Files changed (88) hide show
  1. package/dist/cli.js +32 -9
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/add.d.ts +12 -3
  4. package/dist/commands/add.d.ts.map +1 -1
  5. package/dist/commands/add.js +83 -81
  6. package/dist/commands/add.js.map +1 -1
  7. package/dist/commands/contract.d.ts +20 -0
  8. package/dist/commands/contract.d.ts.map +1 -0
  9. package/dist/commands/contract.js +62 -0
  10. package/dist/commands/contract.js.map +1 -0
  11. package/dist/commands/hooks.d.ts +7 -6
  12. package/dist/commands/hooks.d.ts.map +1 -1
  13. package/dist/commands/hooks.js +130 -124
  14. package/dist/commands/hooks.js.map +1 -1
  15. package/dist/commands/lint.d.ts +9 -1
  16. package/dist/commands/lint.d.ts.map +1 -1
  17. package/dist/commands/lint.js +74 -77
  18. package/dist/commands/lint.js.map +1 -1
  19. package/dist/commands/list.d.ts +12 -3
  20. package/dist/commands/list.d.ts.map +1 -1
  21. package/dist/commands/list.js +59 -58
  22. package/dist/commands/list.js.map +1 -1
  23. package/dist/commands/mcp.d.ts.map +1 -1
  24. package/dist/commands/mcp.js +58 -0
  25. package/dist/commands/mcp.js.map +1 -1
  26. package/dist/commands/move.d.ts +9 -1
  27. package/dist/commands/move.d.ts.map +1 -1
  28. package/dist/commands/move.js +78 -64
  29. package/dist/commands/move.js.map +1 -1
  30. package/dist/commands/template.d.ts +7 -1
  31. package/dist/commands/template.d.ts.map +1 -1
  32. package/dist/commands/template.js +105 -124
  33. package/dist/commands/template.js.map +1 -1
  34. package/dist/index.d.ts +1 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +5 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/lib/contractRunner.d.ts +54 -0
  39. package/dist/lib/contractRunner.d.ts.map +1 -0
  40. package/dist/lib/contractRunner.js +273 -0
  41. package/dist/lib/contractRunner.js.map +1 -0
  42. package/dist/tui/BrainfileTUI.d.ts.map +1 -1
  43. package/dist/tui/BrainfileTUI.js +7 -1
  44. package/dist/tui/BrainfileTUI.js.map +1 -1
  45. package/dist/tui/components/StackedTaskList.d.ts.map +1 -1
  46. package/dist/tui/components/StackedTaskList.js +4 -4
  47. package/dist/tui/components/StackedTaskList.js.map +1 -1
  48. package/dist/tui/components/TaskCard.d.ts +3 -1
  49. package/dist/tui/components/TaskCard.d.ts.map +1 -1
  50. package/dist/tui/components/TaskCard.js +33 -9
  51. package/dist/tui/components/TaskCard.js.map +1 -1
  52. package/dist/tui/components/TaskCardMeasure.d.ts +1 -1
  53. package/dist/tui/components/TaskCardMeasure.d.ts.map +1 -1
  54. package/dist/tui/components/TaskCardMeasure.js +11 -1
  55. package/dist/tui/components/TaskCardMeasure.js.map +1 -1
  56. package/dist/tui/components/TaskDetail.d.ts +14 -0
  57. package/dist/tui/components/TaskDetail.d.ts.map +1 -0
  58. package/dist/tui/components/TaskDetail.js +41 -0
  59. package/dist/tui/components/TaskDetail.js.map +1 -0
  60. package/dist/tui/components/TaskList.d.ts.map +1 -1
  61. package/dist/tui/components/TaskList.js +5 -4
  62. package/dist/tui/components/TaskList.js.map +1 -1
  63. package/dist/utils/cli-error.d.ts +44 -0
  64. package/dist/utils/cli-error.d.ts.map +1 -0
  65. package/dist/utils/cli-error.js +85 -0
  66. package/dist/utils/cli-error.js.map +1 -0
  67. package/dist/utils/errorHandler.d.ts +2 -2
  68. package/dist/utils/errorHandler.d.ts.map +1 -1
  69. package/dist/utils/errorHandler.js +8 -13
  70. package/dist/utils/errorHandler.js.map +1 -1
  71. package/dist/utils/git-helper.d.ts +8 -4
  72. package/dist/utils/git-helper.d.ts.map +1 -1
  73. package/dist/utils/git-helper.js +12 -9
  74. package/dist/utils/git-helper.js.map +1 -1
  75. package/dist/utils/logger.d.ts +34 -0
  76. package/dist/utils/logger.d.ts.map +1 -0
  77. package/dist/utils/logger.js +56 -0
  78. package/dist/utils/logger.js.map +1 -0
  79. package/package.json +2 -2
  80. package/.aider/sessions/auto-save.json +0 -23
  81. package/.aider.chat.history.md +0 -81
  82. package/.aider.input.history +0 -12
  83. package/.aider.tags.cache.v8/cache.db +0 -0
  84. package/.aider.tags.cache.v8/cache.db-shm +0 -0
  85. package/.aider.tags.cache.v8/cache.db-wal +0 -0
  86. package/.claude/settings.json +0 -7
  87. package/brainfile.md +0 -102
  88. 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":";;;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"}
@@ -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 warnIncompleteSubtasks(task: Task, targetColumn: {
43
+ export declare function getIncompleteSubtasksWarning(task: Task, targetColumn: {
44
44
  id: string;
45
45
  title: string;
46
- }): boolean;
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,sBAAsB,CACpC,IAAI,EAAE,IAAI,EACV,YAAY,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1C,OAAO,CAoBT;AAMD;;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"}
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.warnIncompleteSubtasks = warnIncompleteSubtasks;
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 warnIncompleteSubtasks(task, targetColumn) {
82
+ function getIncompleteSubtasksWarning(task, targetColumn) {
83
83
  if (!isDoneColumn(targetColumn)) {
84
- return false;
84
+ return null;
85
85
  }
86
86
  const result = checkIncompleteSubtasks(task);
87
87
  if (!result.hasIncomplete) {
88
- return false;
88
+ return null;
89
89
  }
90
- console.log('');
91
- console.log(chalk_1.default.yellow(`Warning: Task has ${result.incomplete.length}/${result.total} incomplete subtasks`));
92
- console.log(chalk_1.default.gray(' Incomplete:'));
93
- result.incomplete.forEach(st => {
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":"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"}
1
+ {"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../src/utils/errorHandler.ts"],"names":[],"mappings":"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"}
@@ -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 current directory is a git repository
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,IAAI,OAAO,CAAC,OAAO,CAAC,CAOlD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,eAAe,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAiB5F;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAc1D"}
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"}
@@ -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 current directory is a git repository
10
+ * Check if a directory is a git repository
11
11
  */
12
- async function isGitRepo() {
12
+ async function isGitRepo(options = {}) {
13
13
  try {
14
- await execAsync('git rev-parse --git-dir');
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 isRepo = await isGitRepo();
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 isRepo = await isGitRepo();
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":";;AAQA,8BAOC;AAKD,sDAiBC;AAKD,4CAcC;AAxDD,iDAAqC;AACrC,+BAAiC;AAEjC,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAElC;;GAEG;AACI,KAAK,UAAU,SAAS;IAC7B,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,qBAAqB,CAAC,kBAA4B,EAAE;IACxE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,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,CAAC,CAAC;QAExC,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;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAE7D,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"}
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.4",
3
+ "version": "0.12.5",
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.0",
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
- }
@@ -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
@@ -1,12 +0,0 @@
1
-
2
- # 2025-11-23 14:33:31.764597
3
- +/exit
4
-
5
- # 2025-11-23 14:36:09.243793
6
- +/model
7
-
8
- # 2025-11-23 14:36:21.736205
9
- +/model openrouter/anthropic/claude-sonnet-4.5
10
-
11
- # 2025-11-23 14:37:46.066660
12
- +/exit
Binary file
Binary file
File without changes
@@ -1,7 +0,0 @@
1
- {
2
- "hooks": {
3
- "PostToolUse": [],
4
- "UserPromptSubmit": [],
5
- "SessionStart": []
6
- }
7
- }
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