brainfile 0.19.0 → 0.21.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/{chunk-YTFLC673.mjs → chunk-FOLBAGJS.mjs} +2483 -1075
- package/dist/cli.mjs +2526 -1656
- 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 -5
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +43 -11
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/brief.d.ts +32 -0
- package/dist/commands/brief.d.ts.map +1 -0
- package/dist/commands/brief.js +161 -0
- package/dist/commands/brief.js.map +1 -0
- package/dist/commands/complete.js +1 -1
- package/dist/commands/complete.js.map +1 -1
- package/dist/commands/init.d.ts +14 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +115 -15
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/log.js +31 -18
- 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 +72 -17
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/merge-driver.d.ts +26 -0
- package/dist/commands/merge-driver.d.ts.map +1 -0
- package/dist/commands/merge-driver.js +195 -0
- package/dist/commands/merge-driver.js.map +1 -0
- package/dist/commands/migrate-tracked.d.ts +8 -0
- package/dist/commands/migrate-tracked.d.ts.map +1 -0
- package/dist/commands/migrate-tracked.js +428 -0
- package/dist/commands/migrate-tracked.js.map +1 -0
- package/dist/commands/migrate.d.ts +6 -0
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +19 -12
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/sync.d.ts +16 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +152 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/where.d.ts +21 -0
- package/dist/commands/where.d.ts.map +1 -0
- package/dist/commands/where.js +135 -0
- package/dist/commands/where.js.map +1 -0
- package/dist/mcp/helpers.d.ts +8 -0
- package/dist/mcp/helpers.d.ts.map +1 -1
- package/dist/mcp/helpers.js +44 -0
- 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 +96 -0
- package/dist/mcp/tools/brief_tool.js.map +1 -0
- package/dist/mcp/tools/contract_tool.d.ts.map +1 -1
- package/dist/mcp/tools/contract_tool.js +43 -18
- package/dist/mcp/tools/contract_tool.js.map +1 -1
- package/dist/mcp/tools/get_task_tool.d.ts.map +1 -1
- package/dist/mcp/tools/get_task_tool.js +7 -2
- package/dist/mcp/tools/get_task_tool.js.map +1 -1
- package/dist/mcp/tools/list_tasks_tool.d.ts.map +1 -1
- package/dist/mcp/tools/list_tasks_tool.js +9 -3
- package/dist/mcp/tools/list_tasks_tool.js.map +1 -1
- package/dist/mcp/tools/search_tool.d.ts.map +1 -1
- package/dist/mcp/tools/search_tool.js +17 -4
- package/dist/mcp/tools/search_tool.js.map +1 -1
- package/dist/mcp/tools/subtask_tool.d.ts.map +1 -1
- package/dist/mcp/tools/subtask_tool.js +52 -17
- package/dist/mcp/tools/subtask_tool.js.map +1 -1
- package/dist/mcp/tools/task_add_tool.d.ts.map +1 -1
- package/dist/mcp/tools/task_add_tool.js +13 -7
- package/dist/mcp/tools/task_add_tool.js.map +1 -1
- package/dist/mcp/tools/task_complete_tool.d.ts.map +1 -1
- package/dist/mcp/tools/task_complete_tool.js +39 -10
- package/dist/mcp/tools/task_complete_tool.js.map +1 -1
- package/dist/mcp/tools/task_delete_tool.d.ts.map +1 -1
- package/dist/mcp/tools/task_delete_tool.js +12 -6
- package/dist/mcp/tools/task_delete_tool.js.map +1 -1
- package/dist/mcp/tools/task_move_tool.d.ts.map +1 -1
- package/dist/mcp/tools/task_move_tool.js +21 -11
- package/dist/mcp/tools/task_move_tool.js.map +1 -1
- package/dist/mcp/tools/task_patch_tool.d.ts.map +1 -1
- package/dist/mcp/tools/task_patch_tool.js +23 -10
- package/dist/mcp/tools/task_patch_tool.js.map +1 -1
- package/dist/schemas/board.json +1 -1
- package/dist/tui/theme.d.ts +98 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +141 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/{tui-P56H4X7N.mjs → tui-M2KWIG2E.mjs} +1707 -2006
- package/dist/utils/board-autosync.d.ts +22 -0
- package/dist/utils/board-autosync.d.ts.map +1 -0
- package/dist/utils/board-autosync.js +166 -0
- package/dist/utils/board-autosync.js.map +1 -0
- package/dist/utils/board-commit-hooks.d.ts +12 -0
- package/dist/utils/board-commit-hooks.d.ts.map +1 -0
- package/dist/utils/board-commit-hooks.js +51 -0
- package/dist/utils/board-commit-hooks.js.map +1 -0
- package/dist/utils/board-repo.d.ts +108 -0
- package/dist/utils/board-repo.d.ts.map +1 -0
- package/dist/utils/board-repo.js +501 -0
- package/dist/utils/board-repo.js.map +1 -0
- package/dist/utils/board-sync.d.ts +111 -0
- package/dist/utils/board-sync.d.ts.map +1 -0
- package/dist/utils/board-sync.js +469 -0
- package/dist/utils/board-sync.js.map +1 -0
- package/dist/utils/brainfile-path.d.ts +11 -1
- package/dist/utils/brainfile-path.d.ts.map +1 -1
- package/dist/utils/brainfile-path.js +39 -2
- package/dist/utils/brainfile-path.js.map +1 -1
- 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/package.json +3 -3
- 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/init.d.ts
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
interface InitOptions {
|
|
2
2
|
file?: string;
|
|
3
3
|
force?: boolean;
|
|
4
|
+
/** Store the board as its own git branch (in a repo) or repository (elsewhere). */
|
|
5
|
+
tracked?: boolean;
|
|
6
|
+
/** Plain directory, no git tracking, even inside a repo. */
|
|
7
|
+
plain?: boolean;
|
|
8
|
+
/** Inside a repo: create the board here instead of at the repository root. */
|
|
9
|
+
here?: boolean;
|
|
10
|
+
/** The home board at ~/.brainfile. */
|
|
11
|
+
global?: boolean;
|
|
4
12
|
}
|
|
5
13
|
export declare function initCommand(options: InitOptions): void;
|
|
14
|
+
/**
|
|
15
|
+
* What a person needs right after init: where the board is, who has it, and
|
|
16
|
+
* the one command to change that. Plain words first; git terms only where
|
|
17
|
+
* they are the literal answer.
|
|
18
|
+
*/
|
|
19
|
+
export declare function printStorageStory(mode: 'plain' | 'linked' | 'standalone', dotDir: string, branch: string | null, movedToRoot: boolean): void;
|
|
6
20
|
export {};
|
|
7
21
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AA4CA,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sCAAsC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAoED,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,QA0E/C;AAOD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI,CAwB5I"}
|
package/dist/commands/init.js
CHANGED
|
@@ -37,12 +37,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.initCommand = initCommand;
|
|
40
|
+
exports.printStorageStory = printStorageStory;
|
|
40
41
|
const fs = __importStar(require("fs"));
|
|
41
42
|
const path = __importStar(require("path"));
|
|
42
43
|
const chalk_1 = __importDefault(require("chalk"));
|
|
43
44
|
const core_1 = require("@brainfile/core");
|
|
44
45
|
const dot_brainfile_1 = require("../utils/dot-brainfile");
|
|
45
46
|
const workspace_format_1 = require("../utils/workspace-format");
|
|
47
|
+
const board_repo_1 = require("../utils/board-repo");
|
|
48
|
+
const board_sync_1 = require("../utils/board-sync");
|
|
46
49
|
const DEFAULT_BRAINFILE_V2 = `---
|
|
47
50
|
schema: https://brainfile.md/v2/board.json
|
|
48
51
|
title: My Project
|
|
@@ -65,9 +68,56 @@ Add your project description here.
|
|
|
65
68
|
|
|
66
69
|
> Note: Completing a task moves it to \`logs/\` via \`brainfile complete\`.
|
|
67
70
|
`;
|
|
71
|
+
const DEFAULT_FILE = path.join('.brainfile', 'brainfile.md');
|
|
72
|
+
function planInit(options) {
|
|
73
|
+
const explicitFile = Boolean(options.file) && path.resolve(options.file) !== path.resolve(DEFAULT_FILE);
|
|
74
|
+
if (options.global || (!explicitFile && (0, board_repo_1.isGlobalBoardRequested)())) {
|
|
75
|
+
return {
|
|
76
|
+
filePath: path.join((0, board_repo_1.homeBoardDir)(), 'brainfile.md'),
|
|
77
|
+
mode: options.plain ? 'plain' : 'standalone',
|
|
78
|
+
repoRoot: null,
|
|
79
|
+
movedToRoot: false,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
if (explicitFile) {
|
|
83
|
+
return {
|
|
84
|
+
filePath: path.resolve(options.file),
|
|
85
|
+
mode: options.tracked ? 'standalone' : 'plain',
|
|
86
|
+
repoRoot: null,
|
|
87
|
+
movedToRoot: false,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
const cwd = process.cwd();
|
|
91
|
+
const repoRoot = (0, board_repo_1.gitToplevel)(cwd);
|
|
92
|
+
if (repoRoot && !options.plain) {
|
|
93
|
+
const base = options.here ? cwd : repoRoot;
|
|
94
|
+
const atRoot = path.resolve(base) === repoRoot;
|
|
95
|
+
return {
|
|
96
|
+
filePath: path.join(base, DEFAULT_FILE),
|
|
97
|
+
mode: atRoot ? 'linked' : options.tracked ? 'standalone' : 'plain',
|
|
98
|
+
repoRoot,
|
|
99
|
+
movedToRoot: base !== cwd,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
filePath: path.join(cwd, DEFAULT_FILE),
|
|
104
|
+
mode: options.tracked ? 'standalone' : 'plain',
|
|
105
|
+
repoRoot,
|
|
106
|
+
movedToRoot: false,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function isNonEmptyDir(dir) {
|
|
110
|
+
try {
|
|
111
|
+
return fs.statSync(dir).isDirectory() && fs.readdirSync(dir).length > 0;
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
68
117
|
function initCommand(options) {
|
|
69
118
|
try {
|
|
70
|
-
const
|
|
119
|
+
const plan = planInit(options);
|
|
120
|
+
const { filePath, mode } = plan;
|
|
71
121
|
const dotDir = path.dirname(filePath);
|
|
72
122
|
const workspaceRoot = (0, workspace_format_1.workspaceRootFromBrainfilePath)(filePath);
|
|
73
123
|
const probe = (0, workspace_format_1.probeWorkspaceFormat)(workspaceRoot);
|
|
@@ -82,17 +132,29 @@ function initCommand(options) {
|
|
|
82
132
|
(0, dot_brainfile_1.removeLegacyStateFile)(filePath);
|
|
83
133
|
fs.mkdirSync(path.join(dotDir, 'board'), { recursive: true });
|
|
84
134
|
fs.mkdirSync(path.join(dotDir, 'logs'), { recursive: true });
|
|
85
|
-
console.log(chalk_1.default.green(
|
|
86
|
-
|
|
135
|
+
console.log(chalk_1.default.green(`A board already exists at ${displayPath(dotDir)}/`));
|
|
136
|
+
if (mode !== 'plain' && (0, board_repo_1.boardRepoKind)(dotDir) === null) {
|
|
137
|
+
console.log(chalk_1.default.gray(' It is plain files. To keep it on its own branch and share it: ') + chalk_1.default.cyan('brainfile migrate --to-branch'));
|
|
138
|
+
}
|
|
139
|
+
console.log(chalk_1.default.gray(' Where it lives and who has it: ') + chalk_1.default.cyan('brainfile where'));
|
|
87
140
|
return;
|
|
88
141
|
}
|
|
89
|
-
// Ensure `.brainfile/.gitignore` exists
|
|
90
|
-
(0, core_1.ensureDotBrainfileGitignore)(filePath);
|
|
91
142
|
if (fs.existsSync(filePath) && !options.force) {
|
|
92
143
|
console.error(chalk_1.default.red(`Error: File already exists: ${filePath}`));
|
|
93
144
|
console.log(chalk_1.default.gray('Use --force to overwrite'));
|
|
94
145
|
process.exit(1);
|
|
95
146
|
}
|
|
147
|
+
if (mode === 'linked') {
|
|
148
|
+
if (isNonEmptyDir(dotDir)) {
|
|
149
|
+
console.error(chalk_1.default.red(`Error: ${dotDir} exists and is not empty.`));
|
|
150
|
+
console.log(chalk_1.default.gray('To move an existing board onto its own branch: ') + chalk_1.default.cyan('brainfile migrate --to-branch'));
|
|
151
|
+
process.exit(1);
|
|
152
|
+
}
|
|
153
|
+
// The worktree must be created before any file lands in the directory.
|
|
154
|
+
(0, board_repo_1.createOrphanBoardWorktree)(plan.repoRoot, dotDir, (0, board_repo_1.boardBranch)(plan.repoRoot));
|
|
155
|
+
}
|
|
156
|
+
// Ensure `.brainfile/.gitignore` exists
|
|
157
|
+
(0, core_1.ensureDotBrainfileGitignore)(filePath);
|
|
96
158
|
fs.mkdirSync(dotDir, { recursive: true });
|
|
97
159
|
const boardDir = path.join(dotDir, 'board');
|
|
98
160
|
const logsDir = path.join(dotDir, 'logs');
|
|
@@ -100,20 +162,58 @@ function initCommand(options) {
|
|
|
100
162
|
fs.mkdirSync(logsDir, { recursive: true });
|
|
101
163
|
fs.writeFileSync(filePath, DEFAULT_BRAINFILE_V2, 'utf-8');
|
|
102
164
|
(0, dot_brainfile_1.removeLegacyStateFile)(filePath);
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
165
|
+
if (mode === 'standalone') {
|
|
166
|
+
(0, board_repo_1.initStandaloneBoardRepo)(dotDir);
|
|
167
|
+
}
|
|
168
|
+
if (mode !== 'plain') {
|
|
169
|
+
if (mode === 'linked')
|
|
170
|
+
(0, board_repo_1.ensureExcludeEntry)(plan.repoRoot);
|
|
171
|
+
(0, board_sync_1.ensureBoardAttributes)(dotDir);
|
|
172
|
+
(0, board_sync_1.registerMergeDriver)(dotDir);
|
|
173
|
+
(0, board_repo_1.commitBoard)(dotDir, { message: 'init board' });
|
|
174
|
+
}
|
|
175
|
+
printStorageStory(mode, dotDir, plan.repoRoot ? (0, board_repo_1.boardBranch)(plan.repoRoot) : null, plan.movedToRoot === true);
|
|
113
176
|
}
|
|
114
177
|
catch (error) {
|
|
115
178
|
console.error(chalk_1.default.red('Error:'), error instanceof Error ? error.message : String(error));
|
|
116
179
|
process.exit(1);
|
|
117
180
|
}
|
|
118
181
|
}
|
|
182
|
+
function displayPath(dir) {
|
|
183
|
+
const relative = path.relative(process.cwd(), dir);
|
|
184
|
+
return relative && !relative.startsWith('..') ? relative : dir;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* What a person needs right after init: where the board is, who has it, and
|
|
188
|
+
* the one command to change that. Plain words first; git terms only where
|
|
189
|
+
* they are the literal answer.
|
|
190
|
+
*/
|
|
191
|
+
function printStorageStory(mode, dotDir, branch, movedToRoot) {
|
|
192
|
+
const say = (text = '') => console.log(text ? ` ${text}` : '');
|
|
193
|
+
console.log(chalk_1.default.green(`Board created at ${displayPath(dotDir)}/`));
|
|
194
|
+
say();
|
|
195
|
+
if (mode === 'plain') {
|
|
196
|
+
say('Plain files on this machine. Read and edit them directly, or use the commands below.');
|
|
197
|
+
}
|
|
198
|
+
else if (mode === 'linked') {
|
|
199
|
+
say('Only on this machine for now. Every change is a git commit on a');
|
|
200
|
+
say(`separate '${branch}' branch, kept out of your code and pull requests.`);
|
|
201
|
+
say(chalk_1.default.gray(`(A plain git push never sends it; git push --all or --mirror would.)`));
|
|
202
|
+
if (movedToRoot)
|
|
203
|
+
say(chalk_1.default.gray('Created at the repository root so every checkout finds it. Use --plain for a folder board in this directory.'));
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
say('Only on this machine for now. Every change is a git commit in its');
|
|
207
|
+
say(`own small repository inside ${displayPath(dotDir)}/.`);
|
|
208
|
+
}
|
|
209
|
+
say();
|
|
210
|
+
if (mode !== 'plain') {
|
|
211
|
+
say(`${chalk_1.default.gray('Share it:')} ${chalk_1.default.cyan('brainfile sync --set-remote origin')}`);
|
|
212
|
+
say(`${chalk_1.default.gray('Check it:')} ${chalk_1.default.cyan('brainfile where')}`);
|
|
213
|
+
say();
|
|
214
|
+
}
|
|
215
|
+
console.log(chalk_1.default.gray('Next:'));
|
|
216
|
+
say(chalk_1.default.cyan('brainfile add --title "Your first task"'));
|
|
217
|
+
say(chalk_1.default.cyan('brainfile list'));
|
|
218
|
+
}
|
|
119
219
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/log.js
CHANGED
|
@@ -50,6 +50,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
50
50
|
exports.logCommand = logCommand;
|
|
51
51
|
exports.logNoteCommand = logNoteCommand;
|
|
52
52
|
const fs = __importStar(require("fs"));
|
|
53
|
+
const path = __importStar(require("path"));
|
|
53
54
|
const chalk_1 = __importDefault(require("chalk"));
|
|
54
55
|
const logger_1 = require("../utils/logger");
|
|
55
56
|
const cli_error_1 = require("../utils/cli-error");
|
|
@@ -206,35 +207,47 @@ function searchLogs(dirs, query, logger) {
|
|
|
206
207
|
}
|
|
207
208
|
function listRecentLogs(dirs, logger) {
|
|
208
209
|
const logDocs = (0, core_1.readTasksDir)(dirs.logsDir);
|
|
209
|
-
//
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
210
|
+
// Union in ledger records that have no markdown archive. Under the
|
|
211
|
+
// dual-artifact model both always exist, but boards touched by the
|
|
212
|
+
// pre-2026-08-13 destructive --logs-to-ledger may have ledger-only history.
|
|
213
|
+
const seenIds = new Set(logDocs.map((d) => d.task.id));
|
|
214
|
+
const entries = logDocs.map((d) => ({ id: d.task.id, title: d.task.title, completedAt: d.task.completedAt }));
|
|
215
|
+
const ledgerPath = path.join(dirs.logsDir, 'ledger.jsonl');
|
|
216
|
+
if (fs.existsSync(ledgerPath)) {
|
|
217
|
+
for (const line of fs.readFileSync(ledgerPath, 'utf-8').split('\n')) {
|
|
218
|
+
const trimmed = line.trim();
|
|
219
|
+
if (!trimmed)
|
|
220
|
+
continue;
|
|
221
|
+
try {
|
|
222
|
+
const record = JSON.parse(trimmed);
|
|
223
|
+
if (record?.id && !seenIds.has(record.id)) {
|
|
224
|
+
seenIds.add(record.id);
|
|
225
|
+
entries.push({ id: record.id, title: record.title ?? record.id, completedAt: record.completedAt, ledgerOnly: true });
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
catch { /* skip malformed lines */ }
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
entries.sort((a, b) => (b.completedAt || '').localeCompare(a.completedAt || ''));
|
|
215
232
|
logger.log('');
|
|
216
|
-
logger.log(chalk_1.default.bold(`Recently completed tasks (${
|
|
233
|
+
logger.log(chalk_1.default.bold(`Recently completed tasks (${entries.length})`));
|
|
217
234
|
logger.log(chalk_1.default.gray('─'.repeat(50)));
|
|
218
|
-
if (
|
|
235
|
+
if (entries.length === 0) {
|
|
219
236
|
logger.log(chalk_1.default.gray(' No completed tasks found.'));
|
|
220
237
|
}
|
|
221
238
|
else {
|
|
222
|
-
for (const
|
|
223
|
-
const
|
|
224
|
-
logger.log(` ${chalk_1.default.gray(`[${
|
|
225
|
-
if (
|
|
226
|
-
logger.log(` ${chalk_1.default.gray('Completed:')} ${
|
|
239
|
+
for (const entry of entries.slice(0, 20)) {
|
|
240
|
+
const marker = entry.ledgerOnly ? chalk_1.default.gray(' (ledger only)') : '';
|
|
241
|
+
logger.log(` ${chalk_1.default.gray(`[${entry.id}]`)} ${chalk_1.default.white(entry.title)}${marker}`);
|
|
242
|
+
if (entry.completedAt) {
|
|
243
|
+
logger.log(` ${chalk_1.default.gray('Completed:')} ${entry.completedAt}`);
|
|
227
244
|
}
|
|
228
245
|
logger.log('');
|
|
229
246
|
}
|
|
230
247
|
}
|
|
231
248
|
return {
|
|
232
249
|
success: true,
|
|
233
|
-
tasks:
|
|
234
|
-
id: doc.task.id,
|
|
235
|
-
title: doc.task.title,
|
|
236
|
-
completedAt: doc.task.completedAt,
|
|
237
|
-
})),
|
|
250
|
+
tasks: entries.map(({ id, title, completedAt }) => ({ id, title, completedAt })),
|
|
238
251
|
};
|
|
239
252
|
}
|
|
240
253
|
//# sourceMappingURL=log.js.map
|
package/dist/commands/log.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/commands/log.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDH,gCAwBC;AAMD,wCA0CC;AAtHD,uCAAyB;
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/commands/log.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/mcp.d.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/server";
|
|
1
2
|
import { type McpOptions } from '../mcp/helpers';
|
|
3
|
+
/**
|
|
4
|
+
* Builds the MCP server with all 11 consolidated tools registered.
|
|
5
|
+
*
|
|
6
|
+
* Exported so tests can serve the exact production registration over an
|
|
7
|
+
* in-memory transport instead of re-listing the tools (which would drift).
|
|
8
|
+
* The same factory serves both protocol eras.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createBrainfileMcpServer(defaultFile: string): McpServer;
|
|
2
11
|
export declare function mcpCommand(options: McpOptions): Promise<void>;
|
|
3
12
|
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAUzD,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAe9D;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAmBvE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,iBA2EnD"}
|
package/dist/commands/mcp.js
CHANGED
|
@@ -1,12 +1,48 @@
|
|
|
1
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
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.createBrainfileMcpServer = createBrainfileMcpServer;
|
|
3
37
|
exports.mcpCommand = mcpCommand;
|
|
4
38
|
const stdio_1 = require("@modelcontextprotocol/server/stdio");
|
|
5
39
|
const server_1 = require("@modelcontextprotocol/server");
|
|
40
|
+
const path = __importStar(require("path"));
|
|
6
41
|
// Resolved at runtime from dist/commands/ — avoids widening tsc rootDir for a JSON import.
|
|
7
42
|
const cliVersion = require('../../package.json').version;
|
|
8
43
|
const core_1 = require("@brainfile/core");
|
|
9
44
|
const helpers_1 = require("../mcp/helpers");
|
|
45
|
+
const board_repo_1 = require("../utils/board-repo");
|
|
10
46
|
const v2_only_1 = require("../utils/v2-only");
|
|
11
47
|
const list_tasks_tool_1 = require("../mcp/tools/list_tasks_tool");
|
|
12
48
|
const get_task_tool_1 = require("../mcp/tools/get_task_tool");
|
|
@@ -18,6 +54,32 @@ const task_delete_tool_1 = require("../mcp/tools/task_delete_tool");
|
|
|
18
54
|
const subtask_tool_1 = require("../mcp/tools/subtask_tool");
|
|
19
55
|
const contract_tool_1 = require("../mcp/tools/contract_tool");
|
|
20
56
|
const task_complete_tool_1 = require("../mcp/tools/task_complete_tool");
|
|
57
|
+
const brief_tool_1 = require("../mcp/tools/brief_tool");
|
|
58
|
+
/**
|
|
59
|
+
* Builds the MCP server with all 11 consolidated tools registered.
|
|
60
|
+
*
|
|
61
|
+
* Exported so tests can serve the exact production registration over an
|
|
62
|
+
* in-memory transport instead of re-listing the tools (which would drift).
|
|
63
|
+
* The same factory serves both protocol eras.
|
|
64
|
+
*/
|
|
65
|
+
function createBrainfileMcpServer(defaultFile) {
|
|
66
|
+
const server = new server_1.McpServer({
|
|
67
|
+
name: 'brainfile',
|
|
68
|
+
version: cliVersion
|
|
69
|
+
});
|
|
70
|
+
(0, list_tasks_tool_1.registerListTasksTool)(server, defaultFile);
|
|
71
|
+
(0, get_task_tool_1.registerGetTaskTool)(server, defaultFile);
|
|
72
|
+
(0, search_tool_1.registerSearchTool)(server, defaultFile);
|
|
73
|
+
(0, task_add_tool_1.registerTaskAddTool)(server, defaultFile);
|
|
74
|
+
(0, task_move_tool_1.registerTaskMoveTool)(server, defaultFile);
|
|
75
|
+
(0, task_patch_tool_1.registerTaskPatchTool)(server, defaultFile);
|
|
76
|
+
(0, task_delete_tool_1.registerTaskDeleteTool)(server, defaultFile);
|
|
77
|
+
(0, subtask_tool_1.registerSubtaskTool)(server, defaultFile);
|
|
78
|
+
(0, contract_tool_1.registerContractTool)(server, defaultFile);
|
|
79
|
+
(0, task_complete_tool_1.registerTaskCompleteTool)(server, defaultFile);
|
|
80
|
+
(0, brief_tool_1.registerBriefTool)(server, defaultFile);
|
|
81
|
+
return server;
|
|
82
|
+
}
|
|
21
83
|
async function mcpCommand(options) {
|
|
22
84
|
// Auto-discover brainfile if not specified
|
|
23
85
|
let defaultFile = options.file;
|
|
@@ -59,6 +121,15 @@ async function mcpCommand(options) {
|
|
|
59
121
|
}
|
|
60
122
|
}
|
|
61
123
|
}
|
|
124
|
+
// Strategy 2b: the board lives on its own branch (spec-9) — the worktree
|
|
125
|
+
// checked out on it, created from the local or origin branch if needed.
|
|
126
|
+
if (defaultFile === 'brainfile.md') {
|
|
127
|
+
const tracked = (0, board_repo_1.findTrackedBoardDir)(process.cwd()) ?? (0, board_repo_1.materializeBoardWorktree)(process.cwd());
|
|
128
|
+
if (tracked) {
|
|
129
|
+
defaultFile = path.join(tracked, 'brainfile.md');
|
|
130
|
+
console.error(`[brainfile-mcp] Found tracked board: ${defaultFile}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
62
133
|
// Strategy 3: discovery from cwd
|
|
63
134
|
if (defaultFile === 'brainfile.md') {
|
|
64
135
|
const found = (0, core_1.findBrainfile)();
|
|
@@ -80,22 +151,6 @@ async function mcpCommand(options) {
|
|
|
80
151
|
(0, v2_only_1.assertV2Brainfile)(defaultFile);
|
|
81
152
|
// The same factory serves both protocol eras: 2026-07-28 (stateless)
|
|
82
153
|
// natively, and pre-2026 clients through serveStdio's legacy shim.
|
|
83
|
-
(0, stdio_1.serveStdio)(() =>
|
|
84
|
-
const server = new server_1.McpServer({
|
|
85
|
-
name: 'brainfile',
|
|
86
|
-
version: cliVersion
|
|
87
|
-
});
|
|
88
|
-
(0, list_tasks_tool_1.registerListTasksTool)(server, defaultFile);
|
|
89
|
-
(0, get_task_tool_1.registerGetTaskTool)(server, defaultFile);
|
|
90
|
-
(0, search_tool_1.registerSearchTool)(server, defaultFile);
|
|
91
|
-
(0, task_add_tool_1.registerTaskAddTool)(server, defaultFile);
|
|
92
|
-
(0, task_move_tool_1.registerTaskMoveTool)(server, defaultFile);
|
|
93
|
-
(0, task_patch_tool_1.registerTaskPatchTool)(server, defaultFile);
|
|
94
|
-
(0, task_delete_tool_1.registerTaskDeleteTool)(server, defaultFile);
|
|
95
|
-
(0, subtask_tool_1.registerSubtaskTool)(server, defaultFile);
|
|
96
|
-
(0, contract_tool_1.registerContractTool)(server, defaultFile);
|
|
97
|
-
(0, task_complete_tool_1.registerTaskCompleteTool)(server, defaultFile);
|
|
98
|
-
return server;
|
|
99
|
-
});
|
|
154
|
+
(0, stdio_1.serveStdio)(() => createBrainfileMcpServer(defaultFile));
|
|
100
155
|
}
|
|
101
156
|
//# sourceMappingURL=mcp.js.map
|
package/dist/commands/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
type Fields = Record<string, unknown>;
|
|
2
|
+
export interface MergeOutcome {
|
|
3
|
+
content: string;
|
|
4
|
+
/** False when conflict markers remain in the body. */
|
|
5
|
+
clean: boolean;
|
|
6
|
+
}
|
|
7
|
+
/** Field-level last-writer-wins; exported for tests. */
|
|
8
|
+
export declare function mergeFields(base: Fields, ours: Fields, theirs: Fields): Fields;
|
|
9
|
+
/** Three-way text merge through git, then union-resolve list conflicts. */
|
|
10
|
+
export declare function mergeBodies(base: string, ours: string, theirs: string): MergeOutcome;
|
|
11
|
+
/** Merge two board documents against their common base. */
|
|
12
|
+
export declare function mergeBoardDocuments(base: string, ours: string, theirs: string): MergeOutcome;
|
|
13
|
+
/** "column: todo → review; title: …" for the fields that differ; exported for sync. */
|
|
14
|
+
export declare function summarizeFieldChanges(before: string, after: string): string;
|
|
15
|
+
export interface MergeDriverOptions {
|
|
16
|
+
base: string;
|
|
17
|
+
ours: string;
|
|
18
|
+
theirs: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Entry point for git: reads the three files, writes the result over `ours`,
|
|
22
|
+
* returns the exit code (0 clean, 1 conflicts remain, 2 usage).
|
|
23
|
+
*/
|
|
24
|
+
export declare function mergeDriverCommand(options: MergeDriverOptions): number;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=merge-driver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-driver.d.ts","sourceRoot":"","sources":["../../src/commands/merge-driver.ts"],"names":[],"mappings":"AAkBA,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtC,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,KAAK,EAAE,OAAO,CAAC;CAChB;AAsBD,wDAAwD;AACxD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAoB9E;AAsBD,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CA+BpF;AAED,2DAA2D;AAC3D,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAQ5F;AAED,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAU3E;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAMtE"}
|