brainfile 0.18.1 → 0.20.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 +18 -24
- package/dist/__tests__/helpers/mcp-wire.d.ts +45 -0
- package/dist/__tests__/helpers/mcp-wire.d.ts.map +1 -0
- package/dist/__tests__/helpers/mcp-wire.js +133 -0
- package/dist/__tests__/helpers/mcp-wire.js.map +1 -0
- package/dist/__tests__/helpers/mcp.d.ts +34 -0
- package/dist/__tests__/helpers/mcp.d.ts.map +1 -0
- package/dist/__tests__/helpers/mcp.js +37 -0
- package/dist/__tests__/helpers/mcp.js.map +1 -0
- package/dist/chunk-I5SJHUZK.mjs +52 -0
- package/dist/chunk-UOCQBEEW.mjs +12583 -0
- package/dist/cli.js +8 -479
- package/dist/cli.mjs +41334 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +28 -37
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/adr.d.ts +1 -9
- package/dist/commands/adr.d.ts.map +1 -1
- package/dist/commands/adr.js +11 -88
- package/dist/commands/adr.js.map +1 -1
- package/dist/commands/archive.d.ts +2 -4
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +55 -212
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/brief.d.ts +31 -0
- package/dist/commands/brief.d.ts.map +1 -0
- package/dist/commands/brief.js +151 -0
- package/dist/commands/brief.js.map +1 -0
- package/dist/commands/complete.d.ts +0 -4
- package/dist/commands/complete.d.ts.map +1 -1
- package/dist/commands/complete.js +14 -168
- package/dist/commands/complete.js.map +1 -1
- package/dist/commands/contract.d.ts.map +1 -1
- package/dist/commands/contract.js +66 -331
- package/dist/commands/contract.js.map +1 -1
- package/dist/commands/delete.d.ts.map +1 -1
- package/dist/commands/delete.js +13 -55
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +3 -54
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/log.js +33 -26
- package/dist/commands/log.js.map +1 -1
- package/dist/commands/mcp.d.ts +9 -0
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +34 -18
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +14 -15
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/move.d.ts.map +1 -1
- package/dist/commands/move.js +31 -126
- package/dist/commands/move.js.map +1 -1
- package/dist/commands/patch.d.ts.map +1 -1
- package/dist/commands/patch.js +22 -92
- package/dist/commands/patch.js.map +1 -1
- package/dist/commands/plan.d.ts +61 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +205 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +20 -146
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/show.d.ts.map +1 -1
- package/dist/commands/show.js +5 -126
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/subtask.d.ts.map +1 -1
- package/dist/commands/subtask.js +19 -135
- package/dist/commands/subtask.js.map +1 -1
- package/dist/commands/types.d.ts +2 -2
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js +8 -30
- package/dist/commands/types.js.map +1 -1
- package/dist/devtools-NE5M3KPM.mjs +92 -0
- package/dist/lib/contractRunner.d.ts.map +1 -1
- package/dist/lib/contractRunner.js +19 -205
- package/dist/lib/contractRunner.js.map +1 -1
- package/dist/mcp/helpers.d.ts +11 -16
- package/dist/mcp/helpers.d.ts.map +1 -1
- package/dist/mcp/helpers.js +9 -46
- package/dist/mcp/helpers.js.map +1 -1
- package/dist/mcp/schemas.d.ts +297 -0
- package/dist/mcp/schemas.d.ts.map +1 -0
- package/dist/mcp/schemas.js +328 -0
- package/dist/mcp/schemas.js.map +1 -0
- package/dist/mcp/tools/brief_tool.d.ts +14 -0
- package/dist/mcp/tools/brief_tool.d.ts.map +1 -0
- package/dist/mcp/tools/brief_tool.js +58 -0
- package/dist/mcp/tools/brief_tool.js.map +1 -0
- package/dist/mcp/tools/contract_tool.d.ts +1 -1
- package/dist/mcp/tools/contract_tool.d.ts.map +1 -1
- package/dist/mcp/tools/contract_tool.js +58 -186
- package/dist/mcp/tools/contract_tool.js.map +1 -1
- package/dist/mcp/tools/get_task_tool.d.ts +1 -1
- package/dist/mcp/tools/get_task_tool.d.ts.map +1 -1
- package/dist/mcp/tools/get_task_tool.js +18 -32
- package/dist/mcp/tools/get_task_tool.js.map +1 -1
- package/dist/mcp/tools/list_tasks_tool.d.ts +1 -1
- package/dist/mcp/tools/list_tasks_tool.d.ts.map +1 -1
- package/dist/mcp/tools/list_tasks_tool.js +14 -45
- package/dist/mcp/tools/list_tasks_tool.js.map +1 -1
- package/dist/mcp/tools/search_tool.d.ts +1 -1
- package/dist/mcp/tools/search_tool.d.ts.map +1 -1
- package/dist/mcp/tools/search_tool.js +33 -101
- package/dist/mcp/tools/search_tool.js.map +1 -1
- package/dist/mcp/tools/subtask_tool.d.ts +1 -1
- package/dist/mcp/tools/subtask_tool.d.ts.map +1 -1
- package/dist/mcp/tools/subtask_tool.js +95 -236
- package/dist/mcp/tools/subtask_tool.js.map +1 -1
- package/dist/mcp/tools/task_add_tool.d.ts +1 -1
- package/dist/mcp/tools/task_add_tool.d.ts.map +1 -1
- package/dist/mcp/tools/task_add_tool.js +63 -154
- package/dist/mcp/tools/task_add_tool.js.map +1 -1
- package/dist/mcp/tools/task_complete_tool.d.ts +1 -1
- package/dist/mcp/tools/task_complete_tool.d.ts.map +1 -1
- package/dist/mcp/tools/task_complete_tool.js +59 -127
- package/dist/mcp/tools/task_complete_tool.js.map +1 -1
- package/dist/mcp/tools/task_delete_tool.d.ts +1 -1
- package/dist/mcp/tools/task_delete_tool.d.ts.map +1 -1
- package/dist/mcp/tools/task_delete_tool.js +19 -33
- package/dist/mcp/tools/task_delete_tool.js.map +1 -1
- package/dist/mcp/tools/task_move_tool.d.ts +1 -1
- package/dist/mcp/tools/task_move_tool.d.ts.map +1 -1
- package/dist/mcp/tools/task_move_tool.js +53 -150
- package/dist/mcp/tools/task_move_tool.js.map +1 -1
- package/dist/mcp/tools/task_patch_tool.d.ts +1 -1
- package/dist/mcp/tools/task_patch_tool.d.ts.map +1 -1
- package/dist/mcp/tools/task_patch_tool.js +49 -113
- package/dist/mcp/tools/task_patch_tool.js.map +1 -1
- package/dist/open-ZGSQIGEH.mjs +542 -0
- package/dist/schemas/board.json +1 -1
- package/dist/tui/theme.d.ts +74 -95
- package/dist/tui/theme.d.ts.map +1 -1
- package/dist/tui/theme.js +113 -110
- package/dist/tui/theme.js.map +1 -1
- package/dist/tui-H3RI22S4.mjs +23374 -0
- package/dist/utils/cli-error.d.ts +20 -0
- package/dist/utils/cli-error.d.ts.map +1 -1
- package/dist/utils/cli-error.js +36 -0
- package/dist/utils/cli-error.js.map +1 -1
- package/dist/utils/dot-brainfile.d.ts +0 -4
- package/dist/utils/dot-brainfile.d.ts.map +1 -1
- package/dist/utils/dot-brainfile.js +0 -17
- package/dist/utils/dot-brainfile.js.map +1 -1
- package/dist/utils/errorHandler.d.ts +7 -11
- package/dist/utils/errorHandler.d.ts.map +1 -1
- package/dist/utils/errorHandler.js +8 -19
- package/dist/utils/errorHandler.js.map +1 -1
- package/package.json +24 -16
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/commands/rules.d.ts +0 -68
- package/dist/commands/rules.d.ts.map +0 -1
- package/dist/commands/rules.js +0 -322
- package/dist/commands/rules.js.map +0 -1
- package/dist/commands/tui.d.ts +0 -6
- package/dist/commands/tui.d.ts.map +0 -1
- package/dist/commands/tui.js +0 -79
- package/dist/commands/tui.js.map +0 -1
- package/dist/tui/BrainfileTUI.d.ts +0 -4
- package/dist/tui/BrainfileTUI.d.ts.map +0 -1
- package/dist/tui/BrainfileTUI.js +0 -272
- package/dist/tui/BrainfileTUI.js.map +0 -1
- package/dist/tui/actions.d.ts +0 -84
- package/dist/tui/actions.d.ts.map +0 -1
- package/dist/tui/actions.js +0 -1251
- package/dist/tui/actions.js.map +0 -1
- package/dist/tui/components/ColumnTabs.d.ts +0 -9
- package/dist/tui/components/ColumnTabs.d.ts.map +0 -1
- package/dist/tui/components/ColumnTabs.js +0 -34
- package/dist/tui/components/ColumnTabs.js.map +0 -1
- package/dist/tui/components/Header.d.ts +0 -15
- package/dist/tui/components/Header.d.ts.map +0 -1
- package/dist/tui/components/Header.js +0 -48
- package/dist/tui/components/Header.js.map +0 -1
- package/dist/tui/components/HelpOverlay.d.ts +0 -9
- package/dist/tui/components/HelpOverlay.d.ts.map +0 -1
- package/dist/tui/components/HelpOverlay.js +0 -116
- package/dist/tui/components/HelpOverlay.js.map +0 -1
- package/dist/tui/components/LogsPanel.d.ts +0 -16
- package/dist/tui/components/LogsPanel.d.ts.map +0 -1
- package/dist/tui/components/LogsPanel.js +0 -115
- package/dist/tui/components/LogsPanel.js.map +0 -1
- package/dist/tui/components/MainPanelTabs.d.ts +0 -10
- package/dist/tui/components/MainPanelTabs.d.ts.map +0 -1
- package/dist/tui/components/MainPanelTabs.js +0 -56
- package/dist/tui/components/MainPanelTabs.js.map +0 -1
- package/dist/tui/components/ManualBorder.d.ts +0 -42
- package/dist/tui/components/ManualBorder.d.ts.map +0 -1
- package/dist/tui/components/ManualBorder.js +0 -56
- package/dist/tui/components/ManualBorder.js.map +0 -1
- package/dist/tui/components/Overlays.d.ts +0 -41
- package/dist/tui/components/Overlays.d.ts.map +0 -1
- package/dist/tui/components/Overlays.js +0 -127
- package/dist/tui/components/Overlays.js.map +0 -1
- package/dist/tui/components/ProgressBar.d.ts +0 -8
- package/dist/tui/components/ProgressBar.d.ts.map +0 -1
- package/dist/tui/components/ProgressBar.js +0 -35
- package/dist/tui/components/ProgressBar.js.map +0 -1
- package/dist/tui/components/RulesPanel.d.ts +0 -25
- package/dist/tui/components/RulesPanel.d.ts.map +0 -1
- package/dist/tui/components/RulesPanel.js +0 -139
- package/dist/tui/components/RulesPanel.js.map +0 -1
- package/dist/tui/components/SearchBar.d.ts +0 -8
- package/dist/tui/components/SearchBar.d.ts.map +0 -1
- package/dist/tui/components/SearchBar.js +0 -38
- package/dist/tui/components/SearchBar.js.map +0 -1
- package/dist/tui/components/StackedTaskList.d.ts +0 -27
- package/dist/tui/components/StackedTaskList.d.ts.map +0 -1
- package/dist/tui/components/StackedTaskList.js +0 -120
- package/dist/tui/components/StackedTaskList.js.map +0 -1
- package/dist/tui/components/StatusBar.d.ts +0 -14
- package/dist/tui/components/StatusBar.d.ts.map +0 -1
- package/dist/tui/components/StatusBar.js +0 -42
- package/dist/tui/components/StatusBar.js.map +0 -1
- package/dist/tui/components/TaskCard.d.ts +0 -25
- package/dist/tui/components/TaskCard.d.ts.map +0 -1
- package/dist/tui/components/TaskCard.js +0 -221
- package/dist/tui/components/TaskCard.js.map +0 -1
- package/dist/tui/components/TaskCardMeasure.d.ts +0 -31
- package/dist/tui/components/TaskCardMeasure.d.ts.map +0 -1
- package/dist/tui/components/TaskCardMeasure.js +0 -133
- package/dist/tui/components/TaskCardMeasure.js.map +0 -1
- package/dist/tui/components/TaskDetail.d.ts +0 -13
- package/dist/tui/components/TaskDetail.d.ts.map +0 -1
- package/dist/tui/components/TaskDetail.js +0 -64
- package/dist/tui/components/TaskDetail.js.map +0 -1
- package/dist/tui/components/TaskList.d.ts +0 -12
- package/dist/tui/components/TaskList.d.ts.map +0 -1
- package/dist/tui/components/TaskList.js +0 -75
- package/dist/tui/components/TaskList.js.map +0 -1
- package/dist/tui/components/index.d.ts +0 -31
- package/dist/tui/components/index.d.ts.map +0 -1
- package/dist/tui/components/index.js +0 -43
- package/dist/tui/components/index.js.map +0 -1
- package/dist/tui/hooks/index.d.ts +0 -3
- package/dist/tui/hooks/index.d.ts.map +0 -1
- package/dist/tui/hooks/index.js +0 -8
- package/dist/tui/hooks/index.js.map +0 -1
- package/dist/tui/hooks/useBrainfileLoader.d.ts +0 -5
- package/dist/tui/hooks/useBrainfileLoader.d.ts.map +0 -1
- package/dist/tui/hooks/useBrainfileLoader.js +0 -237
- package/dist/tui/hooks/useBrainfileLoader.js.map +0 -1
- package/dist/tui/hooks/useKeyboardNavigation.d.ts +0 -20
- package/dist/tui/hooks/useKeyboardNavigation.d.ts.map +0 -1
- package/dist/tui/hooks/useKeyboardNavigation.js +0 -806
- package/dist/tui/hooks/useKeyboardNavigation.js.map +0 -1
- package/dist/tui/index.d.ts +0 -10
- package/dist/tui/index.d.ts.map +0 -1
- package/dist/tui/index.js +0 -38
- package/dist/tui/index.js.map +0 -1
- package/dist/tui/types.d.ts +0 -53
- package/dist/tui/types.d.ts.map +0 -1
- package/dist/tui/types.js +0 -12
- package/dist/tui/types.js.map +0 -1
- package/dist/tui/utils.d.ts +0 -24
- package/dist/tui/utils.d.ts.map +0 -1
- package/dist/tui/utils.js +0 -161
- package/dist/tui/utils.js.map +0 -1
- package/dist/utils/board-types.d.ts +0 -13
- package/dist/utils/board-types.d.ts.map +0 -1
- package/dist/utils/board-types.js +0 -7
- package/dist/utils/board-types.js.map +0 -1
- package/dist/utils/contractSpec.d.ts +0 -13
- package/dist/utils/contractSpec.d.ts.map +0 -1
- package/dist/utils/contractSpec.js +0 -61
- package/dist/utils/contractSpec.js.map +0 -1
- package/dist/utils/strict-validation.d.ts +0 -8
- package/dist/utils/strict-validation.d.ts.map +0 -1
- package/dist/utils/strict-validation.js +0 -41
- package/dist/utils/strict-validation.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAY7D,eAAO,MAAM,gBAAgB,QA+BlB,CAAC;AAEZ,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAsDD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,GAAE,MAAsB,GAAG,SAAS,CAWzF"}
|
package/dist/commands/add.js
CHANGED
|
@@ -43,11 +43,11 @@ const core_1 = require("@brainfile/core");
|
|
|
43
43
|
const chalk_1 = __importDefault(require("chalk"));
|
|
44
44
|
const logger_1 = require("../utils/logger");
|
|
45
45
|
const cli_error_1 = require("../utils/cli-error");
|
|
46
|
-
const
|
|
46
|
+
const core_2 = require("@brainfile/core");
|
|
47
47
|
const brainfile_path_1 = require("../utils/brainfile-path");
|
|
48
48
|
const v2_detect_1 = require("../utils/v2-detect");
|
|
49
49
|
const v2_only_1 = require("../utils/v2-only");
|
|
50
|
-
const
|
|
50
|
+
const core_3 = require("@brainfile/core");
|
|
51
51
|
const command_lint_1 = require("../validation/command-lint");
|
|
52
52
|
exports.ADD_COMMAND_HELP = `
|
|
53
53
|
Examples:
|
|
@@ -89,37 +89,24 @@ function findActiveTaskById(boardDir, taskId) {
|
|
|
89
89
|
const found = docs.find((doc) => doc.task.id === taskId);
|
|
90
90
|
return found?.task || null;
|
|
91
91
|
}
|
|
92
|
-
function nextPositionForColumn(boardDir, columnId) {
|
|
93
|
-
return (0, core_1.readTasksDir)(boardDir).filter((doc) => doc.task.column === columnId).length;
|
|
94
|
-
}
|
|
95
92
|
function createV2TaskFile(dirs, input) {
|
|
96
|
-
const
|
|
97
|
-
const taskId = (0, core_1.generateNextFileTaskId)(dirs.boardDir, dirs.logsDir, typePrefix);
|
|
98
|
-
const position = nextPositionForColumn(dirs.boardDir, input.columnId);
|
|
99
|
-
const subtasks = input.subtaskTitles?.map((title, index) => ({
|
|
100
|
-
id: `${taskId}-${index + 1}`,
|
|
101
|
-
title: title.trim(),
|
|
102
|
-
completed: false,
|
|
103
|
-
})).filter((subtask) => subtask.title.length > 0);
|
|
104
|
-
const task = {
|
|
105
|
-
id: taskId,
|
|
93
|
+
const result = (0, core_1.addTaskFile)(dirs.boardDir, {
|
|
106
94
|
title: input.title,
|
|
107
|
-
...(input.type && input.type !== 'task' && { type: input.type }),
|
|
108
95
|
column: input.columnId,
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
return task;
|
|
96
|
+
...(input.type && input.type !== 'task' && { type: input.type }),
|
|
97
|
+
priority: input.priority,
|
|
98
|
+
tags: input.tags,
|
|
99
|
+
assignee: input.assignee,
|
|
100
|
+
dueDate: input.dueDate,
|
|
101
|
+
relatedFiles: input.relatedFiles,
|
|
102
|
+
subtasks: input.subtaskTitles?.map((t) => t.trim()).filter(Boolean),
|
|
103
|
+
parentId: input.parentId,
|
|
104
|
+
contract: input.contract,
|
|
105
|
+
}, (0, v2_detect_1.composeBody)(input.description), dirs.logsDir);
|
|
106
|
+
if (!result.success || !result.task) {
|
|
107
|
+
throw (0, cli_error_1.operationFailed)(result.error || `Failed to create task: ${input.title}`);
|
|
108
|
+
}
|
|
109
|
+
return result.task;
|
|
123
110
|
}
|
|
124
111
|
/**
|
|
125
112
|
* Add a task to a brainfile.
|
|
@@ -137,9 +124,13 @@ function addCommand(options, logger = logger_1.defaultLogger) {
|
|
|
137
124
|
}
|
|
138
125
|
function addCommandV2(options, filePath, logger) {
|
|
139
126
|
const dirs = (0, v2_detect_1.ensureV2Dirs)(filePath);
|
|
140
|
-
const
|
|
127
|
+
const boardFile = (0, core_3.readBoardConfig)(filePath);
|
|
128
|
+
if (!boardFile) {
|
|
129
|
+
throw (0, cli_error_1.operationFailed)(`Failed to parse brainfile: ${filePath}`);
|
|
130
|
+
}
|
|
131
|
+
const board = boardFile.config;
|
|
141
132
|
const typeName = options.type || 'task';
|
|
142
|
-
const typeValidation = (0,
|
|
133
|
+
const typeValidation = (0, core_3.validateType)(board, typeName);
|
|
143
134
|
if (!typeValidation.valid) {
|
|
144
135
|
throw new cli_error_1.CLIError(typeValidation.error || `Invalid type: ${typeName}`);
|
|
145
136
|
}
|
|
@@ -160,12 +151,12 @@ function addCommandV2(options, filePath, logger) {
|
|
|
160
151
|
}
|
|
161
152
|
}
|
|
162
153
|
// Build and attach contract if requested
|
|
163
|
-
const deliverableSpecs = (0,
|
|
164
|
-
const validationCommands = (0,
|
|
154
|
+
const deliverableSpecs = (0, core_2.normalizeToArray)(options.deliverable);
|
|
155
|
+
const validationCommands = (0, core_2.normalizeToArray)(options.validation);
|
|
165
156
|
for (const warning of (0, command_lint_1.lintValidationCommands)(validationCommands, filePath)) {
|
|
166
157
|
logger.warn(chalk_1.default.yellow(`Warning: ${warning.message}`));
|
|
167
158
|
}
|
|
168
|
-
const constraints = (0,
|
|
159
|
+
const constraints = (0, core_2.normalizeToArray)(options.constraint);
|
|
169
160
|
const shouldAttachContract = Boolean(options.withContract) ||
|
|
170
161
|
deliverableSpecs.length > 0 ||
|
|
171
162
|
validationCommands.length > 0 ||
|
|
@@ -173,7 +164,7 @@ function addCommandV2(options, filePath, logger) {
|
|
|
173
164
|
let contract;
|
|
174
165
|
if (shouldAttachContract) {
|
|
175
166
|
try {
|
|
176
|
-
contract = (0,
|
|
167
|
+
contract = (0, core_2.buildContract)({
|
|
177
168
|
deliverableSpecs,
|
|
178
169
|
validationCommands,
|
|
179
170
|
constraints,
|
|
@@ -198,7 +189,7 @@ function addCommandV2(options, filePath, logger) {
|
|
|
198
189
|
parentId,
|
|
199
190
|
contract,
|
|
200
191
|
});
|
|
201
|
-
const childTitles = (0,
|
|
192
|
+
const childTitles = (0, core_2.normalizeToArray)(options.child).map((title) => title.trim()).filter(Boolean);
|
|
202
193
|
const createdChildren = [];
|
|
203
194
|
for (const childTitle of childTitles) {
|
|
204
195
|
const childTask = createV2TaskFile(dirs, {
|
package/dist/commands/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/adr.d.ts
CHANGED
|
@@ -1,20 +1,12 @@
|
|
|
1
1
|
import { type Logger } from '../utils/logger';
|
|
2
|
-
export type AdrRuleCategory = 'prefer' | 'always' | 'never' | 'context';
|
|
3
2
|
export interface AdrPromoteOptions {
|
|
4
3
|
file: string;
|
|
5
4
|
task?: string;
|
|
6
|
-
category?: string;
|
|
7
|
-
}
|
|
8
|
-
export interface PromotedRuleEntry {
|
|
9
|
-
id: number;
|
|
10
|
-
rule: string;
|
|
11
|
-
source: string;
|
|
12
5
|
}
|
|
13
6
|
export interface AdrPromoteResult {
|
|
14
7
|
success: true;
|
|
15
8
|
taskId: string;
|
|
16
|
-
|
|
17
|
-
rule: PromotedRuleEntry;
|
|
9
|
+
title: string;
|
|
18
10
|
completedAt: string;
|
|
19
11
|
}
|
|
20
12
|
export declare const ADR_COMMAND_HELP: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adr.d.ts","sourceRoot":"","sources":["../../src/commands/adr.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"adr.d.ts","sourceRoot":"","sources":["../../src/commands/adr.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAK7D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,QAIlB,CAAC;AAiBZ,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,iBAAiB,EAC1B,MAAM,GAAE,MAAsB,GAC7B,gBAAgB,CAkElB"}
|
package/dist/commands/adr.js
CHANGED
|
@@ -44,14 +44,12 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
44
44
|
const core_1 = require("@brainfile/core");
|
|
45
45
|
const logger_1 = require("../utils/logger");
|
|
46
46
|
const cli_error_1 = require("../utils/cli-error");
|
|
47
|
-
const errorHandler_1 = require("../utils/errorHandler");
|
|
48
47
|
const brainfile_path_1 = require("../utils/brainfile-path");
|
|
49
48
|
const v2_detect_1 = require("../utils/v2-detect");
|
|
50
|
-
const VALID_CATEGORIES = ['prefer', 'always', 'never', 'context'];
|
|
51
49
|
exports.ADR_COMMAND_HELP = `
|
|
52
50
|
Examples:
|
|
53
|
-
brainfile adr promote -t adr-1
|
|
54
|
-
brainfile adr promote -t adr-12
|
|
51
|
+
brainfile adr promote -t adr-1
|
|
52
|
+
brainfile adr promote -t adr-12 -f .brainfile/brainfile.md
|
|
55
53
|
`.trimEnd();
|
|
56
54
|
function assertSafeTaskId(taskId) {
|
|
57
55
|
const trimmed = taskId.trim();
|
|
@@ -65,74 +63,14 @@ function assertSafeTaskId(taskId) {
|
|
|
65
63
|
throw (0, cli_error_1.operationFailed)(`Invalid task ID: ${taskId}`);
|
|
66
64
|
}
|
|
67
65
|
}
|
|
68
|
-
function
|
|
69
|
-
if (!
|
|
70
|
-
throw (0, cli_error_1.missingRequired)('--
|
|
71
|
-
}
|
|
72
|
-
const normalized = category.trim().toLowerCase();
|
|
73
|
-
if (!VALID_CATEGORIES.includes(normalized)) {
|
|
74
|
-
throw new cli_error_1.CLIError(`Invalid category: ${category}`, errorHandler_1.ExitCode.USER_ERROR, `Valid categories: ${VALID_CATEGORIES.join(', ')}`);
|
|
66
|
+
function adrPromoteCommand(options, logger = logger_1.defaultLogger) {
|
|
67
|
+
if (!options.task) {
|
|
68
|
+
throw (0, cli_error_1.missingRequired)('--task', 'brainfile adr promote --task <adr-id> [--file <path>]');
|
|
75
69
|
}
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
function readBoard(filePath) {
|
|
79
|
-
const resolvedPath = (0, brainfile_path_1.resolveCliBrainfilePath)(filePath);
|
|
70
|
+
const resolvedPath = (0, brainfile_path_1.resolveCliBrainfilePath)(options.file);
|
|
80
71
|
if (!fs.existsSync(resolvedPath)) {
|
|
81
72
|
throw (0, cli_error_1.fileNotFound)(resolvedPath);
|
|
82
73
|
}
|
|
83
|
-
const content = fs.readFileSync(resolvedPath, 'utf-8');
|
|
84
|
-
const parsed = core_1.Brainfile.parseWithErrors(content);
|
|
85
|
-
if (!parsed.board) {
|
|
86
|
-
throw (0, cli_error_1.operationFailed)(parsed.error || 'Failed to parse brainfile');
|
|
87
|
-
}
|
|
88
|
-
return { board: parsed.board, resolvedPath };
|
|
89
|
-
}
|
|
90
|
-
function writeBoard(filePath, board) {
|
|
91
|
-
fs.writeFileSync(filePath, core_1.Brainfile.serialize(board), 'utf-8');
|
|
92
|
-
}
|
|
93
|
-
function extractRuleText(title) {
|
|
94
|
-
const trimmed = title.trim();
|
|
95
|
-
const withoutAdrPrefix = trimmed.replace(/^ADR-\d+\s*:\s*/i, '').trim();
|
|
96
|
-
return withoutAdrPrefix.length > 0 ? withoutAdrPrefix : trimmed;
|
|
97
|
-
}
|
|
98
|
-
function parseRuleId(id) {
|
|
99
|
-
if (typeof id === 'number' && Number.isFinite(id)) {
|
|
100
|
-
return id;
|
|
101
|
-
}
|
|
102
|
-
if (typeof id === 'string') {
|
|
103
|
-
const prefixed = id.match(/^rule-(\d+)$/i);
|
|
104
|
-
if (prefixed) {
|
|
105
|
-
return Number(prefixed[1]);
|
|
106
|
-
}
|
|
107
|
-
const numeric = id.match(/^(\d+)$/);
|
|
108
|
-
if (numeric) {
|
|
109
|
-
return Number(numeric[1]);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return null;
|
|
113
|
-
}
|
|
114
|
-
function getNextRuleId(rules) {
|
|
115
|
-
if (!rules)
|
|
116
|
-
return 1;
|
|
117
|
-
let maxId = 0;
|
|
118
|
-
for (const categoryRules of Object.values(rules)) {
|
|
119
|
-
if (!Array.isArray(categoryRules))
|
|
120
|
-
continue;
|
|
121
|
-
for (const rule of categoryRules) {
|
|
122
|
-
const parsedId = parseRuleId(rule?.id);
|
|
123
|
-
if (parsedId !== null) {
|
|
124
|
-
maxId = Math.max(maxId, parsedId);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
return maxId + 1;
|
|
129
|
-
}
|
|
130
|
-
function adrPromoteCommand(options, logger = logger_1.defaultLogger) {
|
|
131
|
-
if (!options.task) {
|
|
132
|
-
throw (0, cli_error_1.missingRequired)('--task', 'brainfile adr promote --task <adr-id> --category <prefer|always|never|context> [--file <path>]');
|
|
133
|
-
}
|
|
134
|
-
const category = validateCategory(options.category);
|
|
135
|
-
const { board, resolvedPath } = readBoard(options.file);
|
|
136
74
|
if (!(0, v2_detect_1.isV2)(resolvedPath)) {
|
|
137
75
|
throw (0, cli_error_1.operationFailed)('adr promote requires v2 per-task file architecture. Run: brainfile migrate');
|
|
138
76
|
}
|
|
@@ -147,21 +85,9 @@ function adrPromoteCommand(options, logger = logger_1.defaultLogger) {
|
|
|
147
85
|
if ((task.type || '').toLowerCase() !== 'adr') {
|
|
148
86
|
throw (0, cli_error_1.operationFailed)(`Only ADRs can be promoted. ${task.id} has type "${task.type || 'unknown'}".`);
|
|
149
87
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
id: ruleId,
|
|
154
|
-
rule: ruleText,
|
|
155
|
-
source: task.id,
|
|
156
|
-
};
|
|
157
|
-
if (!board.rules || typeof board.rules !== 'object' || Array.isArray(board.rules)) {
|
|
158
|
-
board.rules = {};
|
|
159
|
-
}
|
|
160
|
-
const categoryRules = Array.isArray(board.rules[category])
|
|
161
|
-
? board.rules[category]
|
|
162
|
-
: [];
|
|
163
|
-
board.rules[category] = [...categoryRules, promotedRule];
|
|
164
|
-
writeBoard(resolvedPath, board);
|
|
88
|
+
// adr-2 removed the `rules` block: promotion now only marks the decision
|
|
89
|
+
// accepted and archives it. `brief` reads accepted ADRs straight out of
|
|
90
|
+
// logs/, so nothing is extracted into board config any more.
|
|
165
91
|
const completedAt = new Date().toISOString();
|
|
166
92
|
const promotedTask = {
|
|
167
93
|
...task,
|
|
@@ -180,15 +106,12 @@ function adrPromoteCommand(options, logger = logger_1.defaultLogger) {
|
|
|
180
106
|
logger.log(chalk_1.default.green('ADR promoted!'));
|
|
181
107
|
logger.log('');
|
|
182
108
|
logger.log(chalk_1.default.gray(` ADR: ${task.id} - ${task.title}`));
|
|
183
|
-
logger.log(chalk_1.default.gray(`
|
|
184
|
-
logger.log(chalk_1.default.gray(` Rule: ${promotedRule.rule}`));
|
|
185
|
-
logger.log(chalk_1.default.gray(` Source: ${promotedRule.source}`));
|
|
109
|
+
logger.log(chalk_1.default.gray(` Status: promoted`));
|
|
186
110
|
logger.log(chalk_1.default.gray(` Moved to: logs/${task.id}.md`));
|
|
187
111
|
return {
|
|
188
112
|
success: true,
|
|
189
113
|
taskId: task.id,
|
|
190
|
-
|
|
191
|
-
rule: promotedRule,
|
|
114
|
+
title: task.title,
|
|
192
115
|
completedAt,
|
|
193
116
|
};
|
|
194
117
|
}
|
package/dist/commands/adr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adr.js","sourceRoot":"","sources":["../../src/commands/adr.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"adr.js","sourceRoot":"","sources":["../../src/commands/adr.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Archive command for Brainfile CLI
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* -
|
|
6
|
-
* - github: Create closed GitHub Issue
|
|
7
|
-
* - linear: Create completed Linear issue
|
|
4
|
+
* Local (`--to local`, the default): complete the task (ledger + logs/<id>.md).
|
|
5
|
+
* External: export an already-completed task from logs/ to GitHub or Linear.
|
|
8
6
|
*
|
|
9
7
|
* @packageDocumentation
|
|
10
8
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/commands/archive.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/commands/archive.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsCH,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACnC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAQD,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,iBAiE3D"}
|