brainfile 0.18.0
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 +222 -0
- package/dist/__tests__/helpers/v2.d.ts +12 -0
- package/dist/__tests__/helpers/v2.d.ts.map +1 -0
- package/dist/__tests__/helpers/v2.js +73 -0
- package/dist/__tests__/helpers/v2.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +480 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/add.d.ts +34 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +255 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/adr.d.ts +22 -0
- package/dist/commands/adr.d.ts.map +1 -0
- package/dist/commands/adr.js +195 -0
- package/dist/commands/adr.js.map +1 -0
- package/dist/commands/archive.d.ts +20 -0
- package/dist/commands/archive.d.ts.map +1 -0
- package/dist/commands/archive.js +590 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/auth.d.ts +26 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +245 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/complete.d.ts +30 -0
- package/dist/commands/complete.d.ts.map +1 -0
- package/dist/commands/complete.js +267 -0
- package/dist/commands/complete.js.map +1 -0
- package/dist/commands/config.d.ts +29 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +210 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/contract.d.ts +84 -0
- package/dist/commands/contract.d.ts.map +1 -0
- package/dist/commands/contract.js +715 -0
- package/dist/commands/contract.js.map +1 -0
- package/dist/commands/delete.d.ts +8 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +139 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/hooks.d.ts +35 -0
- package/dist/commands/hooks.d.ts.map +1 -0
- package/dist/commands/hooks.js +324 -0
- package/dist/commands/hooks.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +118 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/lint.d.ts +16 -0
- package/dist/commands/lint.d.ts.map +1 -0
- package/dist/commands/lint.js +123 -0
- package/dist/commands/lint.js.map +1 -0
- package/dist/commands/list.d.ts +20 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +175 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/log.d.ts +52 -0
- package/dist/commands/log.d.ts.map +1 -0
- package/dist/commands/log.js +246 -0
- package/dist/commands/log.js.map +1 -0
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +96 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/migrate.d.ts +16 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +388 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/move.d.ts +16 -0
- package/dist/commands/move.d.ts.map +1 -0
- package/dist/commands/move.js +225 -0
- package/dist/commands/move.js.map +1 -0
- package/dist/commands/patch.d.ts +17 -0
- package/dist/commands/patch.d.ts.map +1 -0
- package/dist/commands/patch.js +226 -0
- package/dist/commands/patch.js.map +1 -0
- package/dist/commands/restore.d.ts +8 -0
- package/dist/commands/restore.d.ts.map +1 -0
- package/dist/commands/restore.js +111 -0
- package/dist/commands/restore.js.map +1 -0
- package/dist/commands/rules.d.ts +68 -0
- package/dist/commands/rules.d.ts.map +1 -0
- package/dist/commands/rules.js +322 -0
- package/dist/commands/rules.js.map +1 -0
- package/dist/commands/schema.d.ts +31 -0
- package/dist/commands/schema.d.ts.map +1 -0
- package/dist/commands/schema.js +374 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/search.d.ts +33 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +209 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/show.d.ts +20 -0
- package/dist/commands/show.d.ts.map +1 -0
- package/dist/commands/show.js +272 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/subtask.d.ts +12 -0
- package/dist/commands/subtask.d.ts.map +1 -0
- package/dist/commands/subtask.js +212 -0
- package/dist/commands/subtask.js.map +1 -0
- package/dist/commands/template.d.ts +17 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +149 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/commands/tui.d.ts +6 -0
- package/dist/commands/tui.d.ts.map +1 -0
- package/dist/commands/tui.js +79 -0
- package/dist/commands/tui.js.map +1 -0
- package/dist/commands/types.d.ts +40 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +242 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/contractRunner.d.ts +59 -0
- package/dist/lib/contractRunner.d.ts.map +1 -0
- package/dist/lib/contractRunner.js +511 -0
- package/dist/lib/contractRunner.js.map +1 -0
- package/dist/mcp/helpers.d.ts +32 -0
- package/dist/mcp/helpers.d.ts.map +1 -0
- package/dist/mcp/helpers.js +125 -0
- package/dist/mcp/helpers.js.map +1 -0
- package/dist/mcp/tools/contract.d.ts +25 -0
- package/dist/mcp/tools/contract.d.ts.map +1 -0
- package/dist/mcp/tools/contract.js +33 -0
- package/dist/mcp/tools/contract.js.map +1 -0
- package/dist/mcp/tools/contract_tool.d.ts +3 -0
- package/dist/mcp/tools/contract_tool.d.ts.map +1 -0
- package/dist/mcp/tools/contract_tool.js +328 -0
- package/dist/mcp/tools/contract_tool.js.map +1 -0
- package/dist/mcp/tools/get_task_tool.d.ts +3 -0
- package/dist/mcp/tools/get_task_tool.d.ts.map +1 -0
- package/dist/mcp/tools/get_task_tool.js +55 -0
- package/dist/mcp/tools/get_task_tool.js.map +1 -0
- package/dist/mcp/tools/list_tasks_tool.d.ts +3 -0
- package/dist/mcp/tools/list_tasks_tool.d.ts.map +1 -0
- package/dist/mcp/tools/list_tasks_tool.js +82 -0
- package/dist/mcp/tools/list_tasks_tool.js.map +1 -0
- package/dist/mcp/tools/search_tool.d.ts +3 -0
- package/dist/mcp/tools/search_tool.d.ts.map +1 -0
- package/dist/mcp/tools/search_tool.js +155 -0
- package/dist/mcp/tools/search_tool.js.map +1 -0
- package/dist/mcp/tools/subtask_tool.d.ts +3 -0
- package/dist/mcp/tools/subtask_tool.d.ts.map +1 -0
- package/dist/mcp/tools/subtask_tool.js +321 -0
- package/dist/mcp/tools/subtask_tool.js.map +1 -0
- package/dist/mcp/tools/task_add_tool.d.ts +3 -0
- package/dist/mcp/tools/task_add_tool.d.ts.map +1 -0
- package/dist/mcp/tools/task_add_tool.js +196 -0
- package/dist/mcp/tools/task_add_tool.js.map +1 -0
- package/dist/mcp/tools/task_complete_tool.d.ts +3 -0
- package/dist/mcp/tools/task_complete_tool.d.ts.map +1 -0
- package/dist/mcp/tools/task_complete_tool.js +265 -0
- package/dist/mcp/tools/task_complete_tool.js.map +1 -0
- package/dist/mcp/tools/task_delete_tool.d.ts +3 -0
- package/dist/mcp/tools/task_delete_tool.d.ts.map +1 -0
- package/dist/mcp/tools/task_delete_tool.js +87 -0
- package/dist/mcp/tools/task_delete_tool.js.map +1 -0
- package/dist/mcp/tools/task_move_tool.d.ts +3 -0
- package/dist/mcp/tools/task_move_tool.d.ts.map +1 -0
- package/dist/mcp/tools/task_move_tool.js +187 -0
- package/dist/mcp/tools/task_move_tool.js.map +1 -0
- package/dist/mcp/tools/task_patch_tool.d.ts +3 -0
- package/dist/mcp/tools/task_patch_tool.d.ts.map +1 -0
- package/dist/mcp/tools/task_patch_tool.js +189 -0
- package/dist/mcp/tools/task_patch_tool.js.map +1 -0
- package/dist/schemas/base.json +159 -0
- package/dist/schemas/board.json +290 -0
- package/dist/tui/BrainfileTUI.d.ts +4 -0
- package/dist/tui/BrainfileTUI.d.ts.map +1 -0
- package/dist/tui/BrainfileTUI.js +272 -0
- package/dist/tui/BrainfileTUI.js.map +1 -0
- package/dist/tui/actions.d.ts +84 -0
- package/dist/tui/actions.d.ts.map +1 -0
- package/dist/tui/actions.js +1251 -0
- package/dist/tui/actions.js.map +1 -0
- package/dist/tui/components/ColumnTabs.d.ts +9 -0
- package/dist/tui/components/ColumnTabs.d.ts.map +1 -0
- package/dist/tui/components/ColumnTabs.js +34 -0
- package/dist/tui/components/ColumnTabs.js.map +1 -0
- package/dist/tui/components/Header.d.ts +15 -0
- package/dist/tui/components/Header.d.ts.map +1 -0
- package/dist/tui/components/Header.js +48 -0
- package/dist/tui/components/Header.js.map +1 -0
- package/dist/tui/components/HelpOverlay.d.ts +9 -0
- package/dist/tui/components/HelpOverlay.d.ts.map +1 -0
- package/dist/tui/components/HelpOverlay.js +116 -0
- package/dist/tui/components/HelpOverlay.js.map +1 -0
- package/dist/tui/components/LogsPanel.d.ts +16 -0
- package/dist/tui/components/LogsPanel.d.ts.map +1 -0
- package/dist/tui/components/LogsPanel.js +115 -0
- package/dist/tui/components/LogsPanel.js.map +1 -0
- package/dist/tui/components/MainPanelTabs.d.ts +10 -0
- package/dist/tui/components/MainPanelTabs.d.ts.map +1 -0
- package/dist/tui/components/MainPanelTabs.js +56 -0
- package/dist/tui/components/MainPanelTabs.js.map +1 -0
- package/dist/tui/components/ManualBorder.d.ts +42 -0
- package/dist/tui/components/ManualBorder.d.ts.map +1 -0
- package/dist/tui/components/ManualBorder.js +56 -0
- package/dist/tui/components/ManualBorder.js.map +1 -0
- package/dist/tui/components/Overlays.d.ts +41 -0
- package/dist/tui/components/Overlays.d.ts.map +1 -0
- package/dist/tui/components/Overlays.js +127 -0
- package/dist/tui/components/Overlays.js.map +1 -0
- package/dist/tui/components/ProgressBar.d.ts +8 -0
- package/dist/tui/components/ProgressBar.d.ts.map +1 -0
- package/dist/tui/components/ProgressBar.js +35 -0
- package/dist/tui/components/ProgressBar.js.map +1 -0
- package/dist/tui/components/RulesPanel.d.ts +25 -0
- package/dist/tui/components/RulesPanel.d.ts.map +1 -0
- package/dist/tui/components/RulesPanel.js +139 -0
- package/dist/tui/components/RulesPanel.js.map +1 -0
- package/dist/tui/components/SearchBar.d.ts +8 -0
- package/dist/tui/components/SearchBar.d.ts.map +1 -0
- package/dist/tui/components/SearchBar.js +38 -0
- package/dist/tui/components/SearchBar.js.map +1 -0
- package/dist/tui/components/StackedTaskList.d.ts +27 -0
- package/dist/tui/components/StackedTaskList.d.ts.map +1 -0
- package/dist/tui/components/StackedTaskList.js +120 -0
- package/dist/tui/components/StackedTaskList.js.map +1 -0
- package/dist/tui/components/StatusBar.d.ts +14 -0
- package/dist/tui/components/StatusBar.d.ts.map +1 -0
- package/dist/tui/components/StatusBar.js +42 -0
- package/dist/tui/components/StatusBar.js.map +1 -0
- package/dist/tui/components/TaskCard.d.ts +25 -0
- package/dist/tui/components/TaskCard.d.ts.map +1 -0
- package/dist/tui/components/TaskCard.js +221 -0
- package/dist/tui/components/TaskCard.js.map +1 -0
- package/dist/tui/components/TaskCardMeasure.d.ts +31 -0
- package/dist/tui/components/TaskCardMeasure.d.ts.map +1 -0
- package/dist/tui/components/TaskCardMeasure.js +133 -0
- package/dist/tui/components/TaskCardMeasure.js.map +1 -0
- package/dist/tui/components/TaskDetail.d.ts +13 -0
- package/dist/tui/components/TaskDetail.d.ts.map +1 -0
- package/dist/tui/components/TaskDetail.js +64 -0
- package/dist/tui/components/TaskDetail.js.map +1 -0
- package/dist/tui/components/TaskList.d.ts +12 -0
- package/dist/tui/components/TaskList.d.ts.map +1 -0
- package/dist/tui/components/TaskList.js +75 -0
- package/dist/tui/components/TaskList.js.map +1 -0
- package/dist/tui/components/index.d.ts +31 -0
- package/dist/tui/components/index.d.ts.map +1 -0
- package/dist/tui/components/index.js +43 -0
- package/dist/tui/components/index.js.map +1 -0
- package/dist/tui/hooks/index.d.ts +3 -0
- package/dist/tui/hooks/index.d.ts.map +1 -0
- package/dist/tui/hooks/index.js +8 -0
- package/dist/tui/hooks/index.js.map +1 -0
- package/dist/tui/hooks/useBrainfileLoader.d.ts +5 -0
- package/dist/tui/hooks/useBrainfileLoader.d.ts.map +1 -0
- package/dist/tui/hooks/useBrainfileLoader.js +237 -0
- package/dist/tui/hooks/useBrainfileLoader.js.map +1 -0
- package/dist/tui/hooks/useKeyboardNavigation.d.ts +20 -0
- package/dist/tui/hooks/useKeyboardNavigation.d.ts.map +1 -0
- package/dist/tui/hooks/useKeyboardNavigation.js +806 -0
- package/dist/tui/hooks/useKeyboardNavigation.js.map +1 -0
- package/dist/tui/index.d.ts +10 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +38 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/theme.d.ts +119 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +138 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/tui/types.d.ts +53 -0
- package/dist/tui/types.d.ts.map +1 -0
- package/dist/tui/types.js +12 -0
- package/dist/tui/types.js.map +1 -0
- package/dist/tui/utils.d.ts +24 -0
- package/dist/tui/utils.d.ts.map +1 -0
- package/dist/tui/utils.js +161 -0
- package/dist/tui/utils.js.map +1 -0
- 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/auth-store.d.ts +69 -0
- package/dist/utils/auth-store.d.ts.map +1 -0
- package/dist/utils/auth-store.js +308 -0
- package/dist/utils/auth-store.js.map +1 -0
- package/dist/utils/board-types.d.ts +13 -0
- package/dist/utils/board-types.d.ts.map +1 -0
- package/dist/utils/board-types.js +7 -0
- package/dist/utils/board-types.js.map +1 -0
- package/dist/utils/brainfile-finder.d.ts +12 -0
- package/dist/utils/brainfile-finder.d.ts.map +1 -0
- package/dist/utils/brainfile-finder.js +69 -0
- package/dist/utils/brainfile-finder.js.map +1 -0
- package/dist/utils/brainfile-path.d.ts +10 -0
- package/dist/utils/brainfile-path.d.ts.map +1 -0
- package/dist/utils/brainfile-path.js +88 -0
- package/dist/utils/brainfile-path.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 +119 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +304 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/contractSpec.d.ts +13 -0
- package/dist/utils/contractSpec.d.ts.map +1 -0
- package/dist/utils/contractSpec.js +61 -0
- package/dist/utils/contractSpec.js.map +1 -0
- package/dist/utils/dot-brainfile.d.ts +9 -0
- package/dist/utils/dot-brainfile.d.ts.map +1 -0
- package/dist/utils/dot-brainfile.js +74 -0
- package/dist/utils/dot-brainfile.js.map +1 -0
- package/dist/utils/errorHandler.d.ts +106 -0
- package/dist/utils/errorHandler.d.ts.map +1 -0
- package/dist/utils/errorHandler.js +223 -0
- package/dist/utils/errorHandler.js.map +1 -0
- package/dist/utils/git-helper.d.ts +17 -0
- package/dist/utils/git-helper.d.ts.map +1 -0
- package/dist/utils/git-helper.js +62 -0
- package/dist/utils/git-helper.js.map +1 -0
- package/dist/utils/github-auth.d.ts +56 -0
- package/dist/utils/github-auth.d.ts.map +1 -0
- package/dist/utils/github-auth.js +341 -0
- package/dist/utils/github-auth.js.map +1 -0
- package/dist/utils/hook-parser.d.ts +15 -0
- package/dist/utils/hook-parser.d.ts.map +1 -0
- package/dist/utils/hook-parser.js +69 -0
- package/dist/utils/hook-parser.js.map +1 -0
- package/dist/utils/hook-settings.d.ts +27 -0
- package/dist/utils/hook-settings.d.ts.map +1 -0
- package/dist/utils/hook-settings.js +364 -0
- package/dist/utils/hook-settings.js.map +1 -0
- package/dist/utils/linear-auth.d.ts +59 -0
- package/dist/utils/linear-auth.d.ts.map +1 -0
- package/dist/utils/linear-auth.js +295 -0
- package/dist/utils/linear-auth.js.map +1 -0
- 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/dist/utils/strict-validation.d.ts +8 -0
- package/dist/utils/strict-validation.d.ts.map +1 -0
- package/dist/utils/strict-validation.js +41 -0
- package/dist/utils/strict-validation.js.map +1 -0
- package/dist/utils/v2-detect.d.ts +28 -0
- package/dist/utils/v2-detect.d.ts.map +1 -0
- package/dist/utils/v2-detect.js +112 -0
- package/dist/utils/v2-detect.js.map +1 -0
- package/dist/utils/v2-only.d.ts +9 -0
- package/dist/utils/v2-only.d.ts.map +1 -0
- package/dist/utils/v2-only.js +64 -0
- package/dist/utils/v2-only.js.map +1 -0
- package/dist/utils/workspace-format.d.ts +25 -0
- package/dist/utils/workspace-format.d.ts.map +1 -0
- package/dist/utils/workspace-format.js +106 -0
- package/dist/utils/workspace-format.js.map +1 -0
- package/dist/validation/command-lint.d.ts +11 -0
- package/dist/validation/command-lint.d.ts.map +1 -0
- package/dist/validation/command-lint.js +88 -0
- package/dist/validation/command-lint.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ensureDotBrainfileGitignore = ensureDotBrainfileGitignore;
|
|
37
|
+
exports.removeLegacyStateFile = removeLegacyStateFile;
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
function getDotBrainfileDir(brainfilePath) {
|
|
41
|
+
const abs = path.resolve(brainfilePath);
|
|
42
|
+
const dir = path.dirname(abs);
|
|
43
|
+
if (path.basename(dir) === '.brainfile')
|
|
44
|
+
return dir;
|
|
45
|
+
return path.join(dir, '.brainfile');
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Ensure `.brainfile/.gitignore` exists and remove legacy `state.json` entries.
|
|
49
|
+
*/
|
|
50
|
+
function ensureDotBrainfileGitignore(brainfilePath) {
|
|
51
|
+
const dotDir = getDotBrainfileDir(brainfilePath);
|
|
52
|
+
fs.mkdirSync(dotDir, { recursive: true });
|
|
53
|
+
const gitignorePath = path.join(dotDir, '.gitignore');
|
|
54
|
+
const existing = fs.existsSync(gitignorePath) ? fs.readFileSync(gitignorePath, 'utf-8') : '';
|
|
55
|
+
const filtered = existing
|
|
56
|
+
.split(/\r?\n/)
|
|
57
|
+
.filter((line) => line.trim() !== 'state.json')
|
|
58
|
+
.join('\n')
|
|
59
|
+
.trimEnd();
|
|
60
|
+
fs.writeFileSync(gitignorePath, filtered.length > 0 ? `${filtered}\n` : '', 'utf-8');
|
|
61
|
+
return gitignorePath;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Remove legacy `.brainfile/state.json` if it exists.
|
|
65
|
+
*/
|
|
66
|
+
function removeLegacyStateFile(brainfilePath) {
|
|
67
|
+
const dotDir = getDotBrainfileDir(brainfilePath);
|
|
68
|
+
const statePath = path.join(dotDir, 'state.json');
|
|
69
|
+
if (fs.existsSync(statePath)) {
|
|
70
|
+
fs.rmSync(statePath, { force: true });
|
|
71
|
+
}
|
|
72
|
+
return statePath;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=dot-brainfile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dot-brainfile.js","sourceRoot":"","sources":["../../src/utils/dot-brainfile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,kEAeC;AAKD,sDAOC;AAxCD,uCAAyB;AACzB,2CAA6B;AAE7B,SAAS,kBAAkB,CAAC,aAAqB;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,YAAY;QAAE,OAAO,GAAG,CAAC;IACpD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAgB,2BAA2B,CAAC,aAAqB;IAC/D,MAAM,MAAM,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACjD,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7F,MAAM,QAAQ,GAAG,QAAQ;SACtB,KAAK,CAAC,OAAO,CAAC;SACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,YAAY,CAAC;SAC9C,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,EAAE,CAAC;IAEb,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACrF,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,aAAqB;IACzD,MAAM,MAAM,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type { Board, Task } from '@brainfile/core';
|
|
2
|
+
export declare const ExitCode: {
|
|
3
|
+
readonly SUCCESS: 0;
|
|
4
|
+
readonly USER_ERROR: 1;
|
|
5
|
+
readonly WARNING: 0;
|
|
6
|
+
};
|
|
7
|
+
export type ExitCodeType = typeof ExitCode[keyof typeof ExitCode];
|
|
8
|
+
export declare enum ErrorType {
|
|
9
|
+
FILE_NOT_FOUND = "FILE_NOT_FOUND",
|
|
10
|
+
PARSE_ERROR = "PARSE_ERROR",
|
|
11
|
+
TASK_NOT_FOUND = "TASK_NOT_FOUND",
|
|
12
|
+
COLUMN_NOT_FOUND = "COLUMN_NOT_FOUND",
|
|
13
|
+
SUBTASK_NOT_FOUND = "SUBTASK_NOT_FOUND",
|
|
14
|
+
VALIDATION_ERROR = "VALIDATION_ERROR",
|
|
15
|
+
MISSING_REQUIRED = "MISSING_REQUIRED",
|
|
16
|
+
OPERATION_FAILED = "OPERATION_FAILED"
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Determines if a column represents a "done" or completion state.
|
|
20
|
+
* Used for soft error warnings about incomplete subtasks.
|
|
21
|
+
*/
|
|
22
|
+
export declare function isDoneColumn(column: {
|
|
23
|
+
id: string;
|
|
24
|
+
title: string;
|
|
25
|
+
}): boolean;
|
|
26
|
+
export interface IncompleteSubtasksResult {
|
|
27
|
+
hasIncomplete: boolean;
|
|
28
|
+
completed: number;
|
|
29
|
+
total: number;
|
|
30
|
+
incomplete: Array<{
|
|
31
|
+
id: string;
|
|
32
|
+
title: string;
|
|
33
|
+
}>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Checks a task for incomplete subtasks.
|
|
37
|
+
*/
|
|
38
|
+
export declare function checkIncompleteSubtasks(task: Task): IncompleteSubtasksResult;
|
|
39
|
+
/**
|
|
40
|
+
* Prints a warning about incomplete subtasks when moving to a done column.
|
|
41
|
+
* Returns true if warning was printed.
|
|
42
|
+
*/
|
|
43
|
+
export declare function getIncompleteSubtasksWarning(task: Task, targetColumn: {
|
|
44
|
+
id: string;
|
|
45
|
+
title: string;
|
|
46
|
+
}): string | null;
|
|
47
|
+
/**
|
|
48
|
+
* Handles file not found errors with actionable guidance.
|
|
49
|
+
*/
|
|
50
|
+
export declare function fileNotFoundError(filePath: string): never;
|
|
51
|
+
/**
|
|
52
|
+
* Handles brainfile parse errors.
|
|
53
|
+
*/
|
|
54
|
+
export declare function parseError(error?: string): never;
|
|
55
|
+
/**
|
|
56
|
+
* Handles task not found errors with available tasks list.
|
|
57
|
+
*/
|
|
58
|
+
export declare function taskNotFoundError(taskId: string, board: Board): never;
|
|
59
|
+
/**
|
|
60
|
+
* Handles column not found errors with available columns list.
|
|
61
|
+
*/
|
|
62
|
+
export declare function columnNotFoundError(columnId: string, board: Board): never;
|
|
63
|
+
/**
|
|
64
|
+
* Handles subtask not found errors with available subtasks list.
|
|
65
|
+
*/
|
|
66
|
+
export declare function subtaskNotFoundError(subtaskId: string, task: Task): never;
|
|
67
|
+
/**
|
|
68
|
+
* Handles missing required option errors with usage example.
|
|
69
|
+
*/
|
|
70
|
+
export declare function missingRequiredError(option: string, usage: string): never;
|
|
71
|
+
/**
|
|
72
|
+
* Handles validation errors.
|
|
73
|
+
*/
|
|
74
|
+
export declare function validationError(message: string): never;
|
|
75
|
+
/**
|
|
76
|
+
* Handles operation failures from core functions.
|
|
77
|
+
*/
|
|
78
|
+
export declare function operationError(error: string): never;
|
|
79
|
+
/**
|
|
80
|
+
* Generic error handler for catch blocks.
|
|
81
|
+
*/
|
|
82
|
+
export declare function handleError(error: unknown): never;
|
|
83
|
+
export interface McpError {
|
|
84
|
+
content: Array<{
|
|
85
|
+
type: 'text';
|
|
86
|
+
text: string;
|
|
87
|
+
}>;
|
|
88
|
+
isError: true;
|
|
89
|
+
}
|
|
90
|
+
export interface McpWarning {
|
|
91
|
+
warning: string;
|
|
92
|
+
incompleteSubtasks?: IncompleteSubtasksResult;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Creates an MCP error response.
|
|
96
|
+
*/
|
|
97
|
+
export declare function mcpError(message: string): McpError;
|
|
98
|
+
/**
|
|
99
|
+
* Checks for incomplete subtasks warning for MCP responses.
|
|
100
|
+
* Returns warning info if applicable, undefined otherwise.
|
|
101
|
+
*/
|
|
102
|
+
export declare function mcpCheckIncompleteSubtasks(task: Task, targetColumn: {
|
|
103
|
+
id: string;
|
|
104
|
+
title: string;
|
|
105
|
+
}): McpWarning | undefined;
|
|
106
|
+
//# sourceMappingURL=errorHandler.d.ts.map
|
|
@@ -0,0 +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,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"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ErrorType = exports.ExitCode = void 0;
|
|
7
|
+
exports.isDoneColumn = isDoneColumn;
|
|
8
|
+
exports.checkIncompleteSubtasks = checkIncompleteSubtasks;
|
|
9
|
+
exports.getIncompleteSubtasksWarning = getIncompleteSubtasksWarning;
|
|
10
|
+
exports.fileNotFoundError = fileNotFoundError;
|
|
11
|
+
exports.parseError = parseError;
|
|
12
|
+
exports.taskNotFoundError = taskNotFoundError;
|
|
13
|
+
exports.columnNotFoundError = columnNotFoundError;
|
|
14
|
+
exports.subtaskNotFoundError = subtaskNotFoundError;
|
|
15
|
+
exports.missingRequiredError = missingRequiredError;
|
|
16
|
+
exports.validationError = validationError;
|
|
17
|
+
exports.operationError = operationError;
|
|
18
|
+
exports.handleError = handleError;
|
|
19
|
+
exports.mcpError = mcpError;
|
|
20
|
+
exports.mcpCheckIncompleteSubtasks = mcpCheckIncompleteSubtasks;
|
|
21
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Exit Codes
|
|
24
|
+
// ============================================================================
|
|
25
|
+
exports.ExitCode = {
|
|
26
|
+
SUCCESS: 0,
|
|
27
|
+
USER_ERROR: 1, // Invalid input, missing file, validation errors
|
|
28
|
+
WARNING: 0, // Success with warning (soft errors)
|
|
29
|
+
};
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Error Types
|
|
32
|
+
// ============================================================================
|
|
33
|
+
var ErrorType;
|
|
34
|
+
(function (ErrorType) {
|
|
35
|
+
ErrorType["FILE_NOT_FOUND"] = "FILE_NOT_FOUND";
|
|
36
|
+
ErrorType["PARSE_ERROR"] = "PARSE_ERROR";
|
|
37
|
+
ErrorType["TASK_NOT_FOUND"] = "TASK_NOT_FOUND";
|
|
38
|
+
ErrorType["COLUMN_NOT_FOUND"] = "COLUMN_NOT_FOUND";
|
|
39
|
+
ErrorType["SUBTASK_NOT_FOUND"] = "SUBTASK_NOT_FOUND";
|
|
40
|
+
ErrorType["VALIDATION_ERROR"] = "VALIDATION_ERROR";
|
|
41
|
+
ErrorType["MISSING_REQUIRED"] = "MISSING_REQUIRED";
|
|
42
|
+
ErrorType["OPERATION_FAILED"] = "OPERATION_FAILED";
|
|
43
|
+
})(ErrorType || (exports.ErrorType = ErrorType = {}));
|
|
44
|
+
// ============================================================================
|
|
45
|
+
// Done-Column Detection
|
|
46
|
+
// ============================================================================
|
|
47
|
+
const DONE_COLUMN_PATTERNS = [
|
|
48
|
+
/^done$/i,
|
|
49
|
+
/^completed?$/i,
|
|
50
|
+
/^finished$/i,
|
|
51
|
+
/^closed$/i,
|
|
52
|
+
];
|
|
53
|
+
/**
|
|
54
|
+
* Determines if a column represents a "done" or completion state.
|
|
55
|
+
* Used for soft error warnings about incomplete subtasks.
|
|
56
|
+
*/
|
|
57
|
+
function isDoneColumn(column) {
|
|
58
|
+
return DONE_COLUMN_PATTERNS.some(pattern => pattern.test(column.id) || pattern.test(column.title));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Checks a task for incomplete subtasks.
|
|
62
|
+
*/
|
|
63
|
+
function checkIncompleteSubtasks(task) {
|
|
64
|
+
if (!task.subtasks || task.subtasks.length === 0) {
|
|
65
|
+
return { hasIncomplete: false, completed: 0, total: 0, incomplete: [] };
|
|
66
|
+
}
|
|
67
|
+
const incomplete = task.subtasks
|
|
68
|
+
.filter(st => !st.completed)
|
|
69
|
+
.map(st => ({ id: st.id, title: st.title }));
|
|
70
|
+
const completed = task.subtasks.length - incomplete.length;
|
|
71
|
+
return {
|
|
72
|
+
hasIncomplete: incomplete.length > 0,
|
|
73
|
+
completed,
|
|
74
|
+
total: task.subtasks.length,
|
|
75
|
+
incomplete,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Prints a warning about incomplete subtasks when moving to a done column.
|
|
80
|
+
* Returns true if warning was printed.
|
|
81
|
+
*/
|
|
82
|
+
function getIncompleteSubtasksWarning(task, targetColumn) {
|
|
83
|
+
if (!isDoneColumn(targetColumn)) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
const result = checkIncompleteSubtasks(task);
|
|
87
|
+
if (!result.hasIncomplete) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
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.`;
|
|
94
|
+
}
|
|
95
|
+
// ============================================================================
|
|
96
|
+
// Error Handlers
|
|
97
|
+
// ============================================================================
|
|
98
|
+
/**
|
|
99
|
+
* Handles file not found errors with actionable guidance.
|
|
100
|
+
*/
|
|
101
|
+
function fileNotFoundError(filePath) {
|
|
102
|
+
console.error(chalk_1.default.red(`Error: File not found: ${filePath}`));
|
|
103
|
+
console.error('');
|
|
104
|
+
console.error(chalk_1.default.gray('To create a new brainfile, run:'));
|
|
105
|
+
console.error(chalk_1.default.cyan(' brainfile init'));
|
|
106
|
+
process.exit(exports.ExitCode.USER_ERROR);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Handles brainfile parse errors.
|
|
110
|
+
*/
|
|
111
|
+
function parseError(error) {
|
|
112
|
+
console.error(chalk_1.default.red('Error: Failed to parse brainfile'));
|
|
113
|
+
if (error) {
|
|
114
|
+
console.error(chalk_1.default.red(error));
|
|
115
|
+
}
|
|
116
|
+
console.error('');
|
|
117
|
+
console.error(chalk_1.default.gray('To validate and fix syntax issues, run:'));
|
|
118
|
+
console.error(chalk_1.default.cyan(' brainfile lint --fix'));
|
|
119
|
+
process.exit(exports.ExitCode.USER_ERROR);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Handles task not found errors with available tasks list.
|
|
123
|
+
*/
|
|
124
|
+
function taskNotFoundError(taskId, board) {
|
|
125
|
+
console.error(chalk_1.default.red(`Error: Task not found: ${taskId}`));
|
|
126
|
+
const allTasks = board.columns.flatMap(col => col.tasks);
|
|
127
|
+
if (allTasks.length > 0) {
|
|
128
|
+
console.error(chalk_1.default.gray('\nAvailable tasks:'));
|
|
129
|
+
board.columns.forEach(col => {
|
|
130
|
+
col.tasks.forEach(task => {
|
|
131
|
+
console.error(chalk_1.default.gray(` - ${task.id}: ${task.title}`));
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
process.exit(exports.ExitCode.USER_ERROR);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Handles column not found errors with available columns list.
|
|
139
|
+
*/
|
|
140
|
+
function columnNotFoundError(columnId, board) {
|
|
141
|
+
console.error(chalk_1.default.red(`Error: Column not found: ${columnId}`));
|
|
142
|
+
console.error(chalk_1.default.gray('Available columns:'));
|
|
143
|
+
board.columns.forEach(col => {
|
|
144
|
+
console.error(chalk_1.default.gray(` - ${col.id} (${col.title})`));
|
|
145
|
+
});
|
|
146
|
+
process.exit(exports.ExitCode.USER_ERROR);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Handles subtask not found errors with available subtasks list.
|
|
150
|
+
*/
|
|
151
|
+
function subtaskNotFoundError(subtaskId, task) {
|
|
152
|
+
console.error(chalk_1.default.red(`Error: Subtask not found: ${subtaskId}`));
|
|
153
|
+
if (task.subtasks && task.subtasks.length > 0) {
|
|
154
|
+
console.error(chalk_1.default.gray('\nAvailable subtasks:'));
|
|
155
|
+
task.subtasks.forEach(st => {
|
|
156
|
+
const status = st.completed ? chalk_1.default.green('[x]') : chalk_1.default.gray('[ ]');
|
|
157
|
+
console.error(chalk_1.default.gray(` ${status} ${st.id}: ${st.title}`));
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
console.error(chalk_1.default.gray(`\nTask ${task.id} has no subtasks.`));
|
|
162
|
+
}
|
|
163
|
+
process.exit(exports.ExitCode.USER_ERROR);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Handles missing required option errors with usage example.
|
|
167
|
+
*/
|
|
168
|
+
function missingRequiredError(option, usage) {
|
|
169
|
+
console.error(chalk_1.default.red(`Error: ${option} is required`));
|
|
170
|
+
console.error(chalk_1.default.gray(`Usage: ${usage}`));
|
|
171
|
+
process.exit(exports.ExitCode.USER_ERROR);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Handles validation errors.
|
|
175
|
+
*/
|
|
176
|
+
function validationError(message) {
|
|
177
|
+
console.error(chalk_1.default.red(`Error: ${message}`));
|
|
178
|
+
process.exit(exports.ExitCode.USER_ERROR);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Handles operation failures from core functions.
|
|
182
|
+
*/
|
|
183
|
+
function operationError(error) {
|
|
184
|
+
console.error(chalk_1.default.red(`Error: ${error}`));
|
|
185
|
+
process.exit(exports.ExitCode.USER_ERROR);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Generic error handler for catch blocks.
|
|
189
|
+
*/
|
|
190
|
+
function handleError(error) {
|
|
191
|
+
console.error(chalk_1.default.red('Error:'), error instanceof Error ? error.message : String(error));
|
|
192
|
+
process.exit(exports.ExitCode.USER_ERROR);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Creates an MCP error response.
|
|
196
|
+
*/
|
|
197
|
+
function mcpError(message) {
|
|
198
|
+
return {
|
|
199
|
+
content: [{ type: 'text', text: `Error: ${message}` }],
|
|
200
|
+
isError: true,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Checks for incomplete subtasks warning for MCP responses.
|
|
205
|
+
* Returns warning info if applicable, undefined otherwise.
|
|
206
|
+
*/
|
|
207
|
+
function mcpCheckIncompleteSubtasks(task, targetColumn) {
|
|
208
|
+
if (!isDoneColumn(targetColumn)) {
|
|
209
|
+
return undefined;
|
|
210
|
+
}
|
|
211
|
+
const result = checkIncompleteSubtasks(task);
|
|
212
|
+
if (!result.hasIncomplete) {
|
|
213
|
+
return undefined;
|
|
214
|
+
}
|
|
215
|
+
const incompleteList = result.incomplete
|
|
216
|
+
.map(st => ` - [ ] ${st.id}: ${st.title}`)
|
|
217
|
+
.join('\n');
|
|
218
|
+
return {
|
|
219
|
+
warning: `Warning: Task has ${result.incomplete.length}/${result.total} incomplete subtasks:\n${incompleteList}\n\nConsider completing subtasks before marking done.`,
|
|
220
|
+
incompleteSubtasks: result,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=errorHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../src/utils/errorHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface GitHelperOptions {
|
|
2
|
+
/** Working directory for git commands. Defaults to process.cwd() */
|
|
3
|
+
cwd?: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Check if a directory is a git repository
|
|
7
|
+
*/
|
|
8
|
+
export declare function isGitRepo(options?: GitHelperOptions): Promise<boolean>;
|
|
9
|
+
/**
|
|
10
|
+
* Check if there are uncommitted changes (excluding specified files)
|
|
11
|
+
*/
|
|
12
|
+
export declare function hasUncommittedChanges(excludePatterns?: string[], options?: GitHelperOptions): Promise<boolean>;
|
|
13
|
+
/**
|
|
14
|
+
* Get list of modified files (both staged and unstaged)
|
|
15
|
+
*/
|
|
16
|
+
export declare function getModifiedFiles(options?: GitHelperOptions): Promise<string[]>;
|
|
17
|
+
//# sourceMappingURL=git-helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isGitRepo = isGitRepo;
|
|
4
|
+
exports.hasUncommittedChanges = hasUncommittedChanges;
|
|
5
|
+
exports.getModifiedFiles = getModifiedFiles;
|
|
6
|
+
const child_process_1 = require("child_process");
|
|
7
|
+
const util_1 = require("util");
|
|
8
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
9
|
+
/**
|
|
10
|
+
* Check if a directory is a git repository
|
|
11
|
+
*/
|
|
12
|
+
async function isGitRepo(options = {}) {
|
|
13
|
+
try {
|
|
14
|
+
const cwd = options.cwd ?? process.cwd();
|
|
15
|
+
await execAsync('git rev-parse --git-dir', { cwd });
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Check if there are uncommitted changes (excluding specified files)
|
|
24
|
+
*/
|
|
25
|
+
async function hasUncommittedChanges(excludePatterns = [], options = {}) {
|
|
26
|
+
try {
|
|
27
|
+
const cwd = options.cwd ?? process.cwd();
|
|
28
|
+
const isRepo = await isGitRepo({ cwd });
|
|
29
|
+
if (!isRepo)
|
|
30
|
+
return false;
|
|
31
|
+
// Build exclude arguments for git
|
|
32
|
+
const excludeArgs = excludePatterns
|
|
33
|
+
.map(pattern => `:(exclude)${pattern}`)
|
|
34
|
+
.join(' ');
|
|
35
|
+
const cmd = `git diff --name-only -- . ${excludeArgs}`.trim();
|
|
36
|
+
const { stdout } = await execAsync(cmd, { cwd });
|
|
37
|
+
return stdout.trim().length > 0;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get list of modified files (both staged and unstaged)
|
|
45
|
+
*/
|
|
46
|
+
async function getModifiedFiles(options = {}) {
|
|
47
|
+
try {
|
|
48
|
+
const cwd = options.cwd ?? process.cwd();
|
|
49
|
+
const isRepo = await isGitRepo({ cwd });
|
|
50
|
+
if (!isRepo)
|
|
51
|
+
return [];
|
|
52
|
+
const { stdout } = await execAsync('git status --porcelain', { cwd });
|
|
53
|
+
return stdout
|
|
54
|
+
.split('\n')
|
|
55
|
+
.filter(line => line.trim().length > 0)
|
|
56
|
+
.map(line => line.substring(3).trim());
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=git-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Authentication for Brainfile CLI
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* 1. Piggyback on gh CLI auth (if available)
|
|
6
|
+
* 2. OAuth Device Flow (browser-based, no server needed)
|
|
7
|
+
* 3. Personal Access Token (manual entry)
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Check if GitHub is already authenticated
|
|
13
|
+
*/
|
|
14
|
+
export declare function isGitHubAuthenticated(): Promise<boolean>;
|
|
15
|
+
/**
|
|
16
|
+
* Get the current GitHub token (from any source)
|
|
17
|
+
*/
|
|
18
|
+
export declare function getGitHubToken(): Promise<string | null>;
|
|
19
|
+
/**
|
|
20
|
+
* Authenticate with GitHub using the best available method
|
|
21
|
+
*
|
|
22
|
+
* Priority:
|
|
23
|
+
* 1. Use existing gh CLI auth
|
|
24
|
+
* 2. OAuth Device Flow
|
|
25
|
+
* 3. Manual PAT entry
|
|
26
|
+
*/
|
|
27
|
+
export declare function authenticateGitHub(options: {
|
|
28
|
+
usePAT?: boolean;
|
|
29
|
+
token?: string;
|
|
30
|
+
silent?: boolean;
|
|
31
|
+
}): Promise<{
|
|
32
|
+
success: boolean;
|
|
33
|
+
username?: string;
|
|
34
|
+
error?: string;
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* Create a GitHub Issue
|
|
38
|
+
*/
|
|
39
|
+
export declare function createGitHubIssue(options: {
|
|
40
|
+
owner: string;
|
|
41
|
+
repo: string;
|
|
42
|
+
title: string;
|
|
43
|
+
body: string;
|
|
44
|
+
labels?: string[];
|
|
45
|
+
state?: 'open' | 'closed';
|
|
46
|
+
}): Promise<{
|
|
47
|
+
success: boolean;
|
|
48
|
+
issueNumber?: number;
|
|
49
|
+
issueUrl?: string;
|
|
50
|
+
error?: string;
|
|
51
|
+
}>;
|
|
52
|
+
/**
|
|
53
|
+
* Logout from GitHub
|
|
54
|
+
*/
|
|
55
|
+
export declare function logoutGitHub(): Promise<void>;
|
|
56
|
+
//# sourceMappingURL=github-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-auth.d.ts","sourceRoot":"","sources":["../../src/utils/github-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA+CH;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAE9D;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE7D;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAsCnE;AAwLD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC3B,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiEzF;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAElD"}
|