brainfile 0.20.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.
Files changed (83) hide show
  1. package/dist/{chunk-UOCQBEEW.mjs → chunk-FOLBAGJS.mjs} +1232 -318
  2. package/dist/cli.mjs +2048 -1318
  3. package/dist/commands/brief.d.ts +1 -0
  4. package/dist/commands/brief.d.ts.map +1 -1
  5. package/dist/commands/brief.js +10 -0
  6. package/dist/commands/brief.js.map +1 -1
  7. package/dist/commands/init.d.ts +14 -0
  8. package/dist/commands/init.d.ts.map +1 -1
  9. package/dist/commands/init.js +115 -15
  10. package/dist/commands/init.js.map +1 -1
  11. package/dist/commands/mcp.d.ts.map +1 -1
  12. package/dist/commands/mcp.js +44 -0
  13. package/dist/commands/mcp.js.map +1 -1
  14. package/dist/commands/merge-driver.d.ts +26 -0
  15. package/dist/commands/merge-driver.d.ts.map +1 -0
  16. package/dist/commands/merge-driver.js +195 -0
  17. package/dist/commands/merge-driver.js.map +1 -0
  18. package/dist/commands/migrate-tracked.d.ts +8 -0
  19. package/dist/commands/migrate-tracked.d.ts.map +1 -0
  20. package/dist/commands/migrate-tracked.js +428 -0
  21. package/dist/commands/migrate-tracked.js.map +1 -0
  22. package/dist/commands/migrate.d.ts +6 -0
  23. package/dist/commands/migrate.d.ts.map +1 -1
  24. package/dist/commands/migrate.js +9 -0
  25. package/dist/commands/migrate.js.map +1 -1
  26. package/dist/commands/sync.d.ts +16 -0
  27. package/dist/commands/sync.d.ts.map +1 -0
  28. package/dist/commands/sync.js +152 -0
  29. package/dist/commands/sync.js.map +1 -0
  30. package/dist/commands/where.d.ts +21 -0
  31. package/dist/commands/where.d.ts.map +1 -0
  32. package/dist/commands/where.js +135 -0
  33. package/dist/commands/where.js.map +1 -0
  34. package/dist/mcp/helpers.d.ts +8 -0
  35. package/dist/mcp/helpers.d.ts.map +1 -1
  36. package/dist/mcp/helpers.js +44 -0
  37. package/dist/mcp/helpers.js.map +1 -1
  38. package/dist/mcp/tools/brief_tool.d.ts.map +1 -1
  39. package/dist/mcp/tools/brief_tool.js +39 -1
  40. package/dist/mcp/tools/brief_tool.js.map +1 -1
  41. package/dist/mcp/tools/contract_tool.d.ts.map +1 -1
  42. package/dist/mcp/tools/contract_tool.js +6 -5
  43. package/dist/mcp/tools/contract_tool.js.map +1 -1
  44. package/dist/mcp/tools/subtask_tool.d.ts.map +1 -1
  45. package/dist/mcp/tools/subtask_tool.js +5 -4
  46. package/dist/mcp/tools/subtask_tool.js.map +1 -1
  47. package/dist/mcp/tools/task_add_tool.d.ts.map +1 -1
  48. package/dist/mcp/tools/task_add_tool.js +6 -5
  49. package/dist/mcp/tools/task_add_tool.js.map +1 -1
  50. package/dist/mcp/tools/task_complete_tool.d.ts.map +1 -1
  51. package/dist/mcp/tools/task_complete_tool.js +5 -4
  52. package/dist/mcp/tools/task_complete_tool.js.map +1 -1
  53. package/dist/mcp/tools/task_delete_tool.d.ts.map +1 -1
  54. package/dist/mcp/tools/task_delete_tool.js +5 -4
  55. package/dist/mcp/tools/task_delete_tool.js.map +1 -1
  56. package/dist/mcp/tools/task_move_tool.d.ts.map +1 -1
  57. package/dist/mcp/tools/task_move_tool.js +6 -5
  58. package/dist/mcp/tools/task_move_tool.js.map +1 -1
  59. package/dist/mcp/tools/task_patch_tool.d.ts.map +1 -1
  60. package/dist/mcp/tools/task_patch_tool.js +5 -4
  61. package/dist/mcp/tools/task_patch_tool.js.map +1 -1
  62. package/dist/{tui-H3RI22S4.mjs → tui-M2KWIG2E.mjs} +295 -253
  63. package/dist/utils/board-autosync.d.ts +22 -0
  64. package/dist/utils/board-autosync.d.ts.map +1 -0
  65. package/dist/utils/board-autosync.js +166 -0
  66. package/dist/utils/board-autosync.js.map +1 -0
  67. package/dist/utils/board-commit-hooks.d.ts +12 -0
  68. package/dist/utils/board-commit-hooks.d.ts.map +1 -0
  69. package/dist/utils/board-commit-hooks.js +51 -0
  70. package/dist/utils/board-commit-hooks.js.map +1 -0
  71. package/dist/utils/board-repo.d.ts +108 -0
  72. package/dist/utils/board-repo.d.ts.map +1 -0
  73. package/dist/utils/board-repo.js +501 -0
  74. package/dist/utils/board-repo.js.map +1 -0
  75. package/dist/utils/board-sync.d.ts +111 -0
  76. package/dist/utils/board-sync.d.ts.map +1 -0
  77. package/dist/utils/board-sync.js +469 -0
  78. package/dist/utils/board-sync.js.map +1 -0
  79. package/dist/utils/brainfile-path.d.ts +11 -1
  80. package/dist/utils/brainfile-path.d.ts.map +1 -1
  81. package/dist/utils/brainfile-path.js +39 -2
  82. package/dist/utils/brainfile-path.js.map +1 -1
  83. package/package.json +2 -2
@@ -20,6 +20,7 @@ export interface BriefOptions {
20
20
  file?: string;
21
21
  agent?: string;
22
22
  peek?: boolean;
23
+ offline?: boolean;
23
24
  json?: boolean;
24
25
  }
25
26
  /** `--json` envelope version. Bump only on a breaking payload change. */
@@ -1 +1 @@
1
- {"version":3,"file":"brief.d.ts","sourceRoot":"","sources":["../../src/commands/brief.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAK7D,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAExC,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,EACrB,MAAM,GAAE,MAAsB,GAC7B,kBAAkB,GAAG,SAAS,CAkChC"}
1
+ {"version":3,"file":"brief.d.ts","sourceRoot":"","sources":["../../src/commands/brief.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAO7D,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAExC,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,EACrB,MAAM,GAAE,MAAsB,GAC7B,kBAAkB,GAAG,SAAS,CAkChC"}
@@ -63,6 +63,8 @@ const logger_1 = require("../utils/logger");
63
63
  const cli_error_1 = require("../utils/cli-error");
64
64
  const brainfile_path_1 = require("../utils/brainfile-path");
65
65
  const errorHandler_1 = require("../utils/errorHandler");
66
+ const board_sync_1 = require("../utils/board-sync");
67
+ const path = __importStar(require("path"));
66
68
  /** `--json` envelope version. Bump only on a breaking payload change. */
67
69
  exports.BRIEF_JSON_VERSION = '0.1';
68
70
  function briefCommand(options, logger = logger_1.defaultLogger) {
@@ -108,6 +110,14 @@ function runBrief(options) {
108
110
  if (!(0, v2_detect_1.isV2)(filePath)) {
109
111
  throw (0, cli_error_1.operationFailed)('Brief requires v2 per-task file architecture. Run: brainfile migrate');
110
112
  }
113
+ // A shared board syncs first so the brief reflects other machines. Sync
114
+ // failures are a one-line warning: the brief itself never fails over them.
115
+ if (!options.offline) {
116
+ const sync = (0, board_sync_1.syncBoard)(path.dirname(filePath), { agent });
117
+ if (!sync.skipped && !sync.ok) {
118
+ process.stderr.write(`${(0, board_sync_1.syncMessage)(sync).text}\n`);
119
+ }
120
+ }
111
121
  const dirs = (0, v2_detect_1.getV2Dirs)(filePath);
112
122
  const peek = options.peek === true;
113
123
  const state = (0, core_1.readBriefState)(filePath, agent);
@@ -1 +1 @@
1
- {"version":3,"file":"brief.js","sourceRoot":"","sources":["../../src/commands/brief.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"brief.js","sourceRoot":"","sources":["../../src/commands/brief.ts"],"names":[],"mappings":"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"}
@@ -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":"AA8BA,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,QA2D/C"}
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"}
@@ -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 filePath = path.resolve(options.file || path.join('.brainfile', 'brainfile.md'));
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('Brainfile already initialized (v2).'));
86
- console.log(chalk_1.default.gray(` ${filePath}`));
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
- console.log(chalk_1.default.green('Brainfile initialized successfully!'));
104
- console.log('');
105
- console.log(chalk_1.default.gray(` Created: ${filePath}`));
106
- console.log(chalk_1.default.gray(` Created: ${boardDir}/`));
107
- console.log(chalk_1.default.gray(` Created: ${logsDir}/`));
108
- console.log('');
109
- console.log(chalk_1.default.gray('Next steps:'));
110
- console.log(chalk_1.default.gray(' 1. Edit your brainfile to customize your project'));
111
- console.log(chalk_1.default.gray(' 2. Add tasks: brainfile add --title "Your task"'));
112
- console.log(chalk_1.default.gray(' 3. View tasks: brainfile list'));
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":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AASzD,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAc9D;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAmBvE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,iBAiEnD"}
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"}
@@ -1,13 +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 });
3
36
  exports.createBrainfileMcpServer = createBrainfileMcpServer;
4
37
  exports.mcpCommand = mcpCommand;
5
38
  const stdio_1 = require("@modelcontextprotocol/server/stdio");
6
39
  const server_1 = require("@modelcontextprotocol/server");
40
+ const path = __importStar(require("path"));
7
41
  // Resolved at runtime from dist/commands/ — avoids widening tsc rootDir for a JSON import.
8
42
  const cliVersion = require('../../package.json').version;
9
43
  const core_1 = require("@brainfile/core");
10
44
  const helpers_1 = require("../mcp/helpers");
45
+ const board_repo_1 = require("../utils/board-repo");
11
46
  const v2_only_1 = require("../utils/v2-only");
12
47
  const list_tasks_tool_1 = require("../mcp/tools/list_tasks_tool");
13
48
  const get_task_tool_1 = require("../mcp/tools/get_task_tool");
@@ -86,6 +121,15 @@ async function mcpCommand(options) {
86
121
  }
87
122
  }
88
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
+ }
89
133
  // Strategy 3: discovery from cwd
90
134
  if (defaultFile === 'brainfile.md') {
91
135
  const found = (0, core_1.findBrainfile)();
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
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"}
@@ -0,0 +1,195 @@
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.mergeFields = mergeFields;
37
+ exports.mergeBodies = mergeBodies;
38
+ exports.mergeBoardDocuments = mergeBoardDocuments;
39
+ exports.summarizeFieldChanges = summarizeFieldChanges;
40
+ exports.mergeDriverCommand = mergeDriverCommand;
41
+ /**
42
+ * `brainfile merge-driver <base> <ours> <theirs>` — git merge driver for
43
+ * board documents (spec-9). Registered by init/migrate/sync as
44
+ * `merge.brainfile.driver`, selected by `.gitattributes` on the board branch.
45
+ *
46
+ * Frontmatter merges field by field: a field changed on one side takes that
47
+ * side; changed on both, the later `updatedAt` wins and a tie goes to theirs,
48
+ * so both machines converge on the same answer. The body goes through git's
49
+ * own three-way text merge; a conflict whose two sides are both list items
50
+ * (log entries, notes) resolves by union ordered by timestamp. Anything else
51
+ * keeps git's markers and exits 1 so `sync` can name the file.
52
+ */
53
+ const fs = __importStar(require("fs"));
54
+ const os = __importStar(require("os"));
55
+ const path = __importStar(require("path"));
56
+ const child_process_1 = require("child_process");
57
+ const core_1 = require("@brainfile/core");
58
+ function parseDoc(content) {
59
+ const parsed = (0, core_1.parseFrontmatter)(content);
60
+ if (!parsed)
61
+ return null;
62
+ return { data: parsed.data, body: parsed.body };
63
+ }
64
+ function same(a, b) {
65
+ return JSON.stringify(a ?? null) === JSON.stringify(b ?? null);
66
+ }
67
+ function stamp(data) {
68
+ const value = data.updatedAt;
69
+ return typeof value === 'string' ? value : '';
70
+ }
71
+ /** Field-level last-writer-wins; exported for tests. */
72
+ function mergeFields(base, ours, theirs) {
73
+ const keys = [];
74
+ for (const key of [...Object.keys(ours), ...Object.keys(theirs), ...Object.keys(base)]) {
75
+ if (!keys.includes(key))
76
+ keys.push(key);
77
+ }
78
+ const oursWins = stamp(ours) > stamp(theirs);
79
+ const out = {};
80
+ for (const key of keys) {
81
+ const b = base[key];
82
+ const o = ours[key];
83
+ const t = theirs[key];
84
+ let pick;
85
+ if (same(o, t))
86
+ pick = o;
87
+ else if (same(b, o))
88
+ pick = t;
89
+ else if (same(b, t))
90
+ pick = o;
91
+ else if (key === 'updatedAt')
92
+ pick = String(o ?? '') > String(t ?? '') ? o : t;
93
+ else
94
+ pick = oursWins ? o : t;
95
+ if (pick !== undefined)
96
+ out[key] = pick;
97
+ }
98
+ return out;
99
+ }
100
+ const CONFLICT = /^<{7}[^\n]*\n([\s\S]*?)^={7}\n([\s\S]*?)^>{7}[^\n]*\n?/gm;
101
+ const LIST_ITEM = /^\s*[-*]\s+/;
102
+ const LEADING_STAMP = /^\s*[-*]\s+(\d{4}-\d{2}-\d{2}T[0-9:.]+Z?)\b/;
103
+ function unionLists(ours, theirs) {
104
+ const a = ours.split('\n').filter((l) => l.trim().length > 0);
105
+ const b = theirs.split('\n').filter((l) => l.trim().length > 0);
106
+ if (![...a, ...b].every((l) => LIST_ITEM.test(l)))
107
+ return null;
108
+ const merged = [...a];
109
+ for (const line of b)
110
+ if (!merged.includes(line))
111
+ merged.push(line);
112
+ if (merged.every((l) => LEADING_STAMP.test(l))) {
113
+ merged.sort((x, y) => {
114
+ const sx = LEADING_STAMP.exec(x)?.[1] ?? '';
115
+ const sy = LEADING_STAMP.exec(y)?.[1] ?? '';
116
+ return sx < sy ? -1 : sx > sy ? 1 : 0;
117
+ });
118
+ }
119
+ return `${merged.join('\n')}\n`;
120
+ }
121
+ /** Three-way text merge through git, then union-resolve list conflicts. */
122
+ function mergeBodies(base, ours, theirs) {
123
+ if (ours === theirs)
124
+ return { content: ours, clean: true };
125
+ if (base === ours)
126
+ return { content: theirs, clean: true };
127
+ if (base === theirs)
128
+ return { content: ours, clean: true };
129
+ const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'brainfile-merge-'));
130
+ try {
131
+ const files = { base: path.join(dir, 'base'), ours: path.join(dir, 'ours'), theirs: path.join(dir, 'theirs') };
132
+ fs.writeFileSync(files.base, base);
133
+ fs.writeFileSync(files.ours, ours);
134
+ fs.writeFileSync(files.theirs, theirs);
135
+ const r = (0, child_process_1.spawnSync)('git', ['merge-file', '-p', '-L', 'ours', '-L', 'base', '-L', 'theirs', files.ours, files.base, files.theirs], {
136
+ encoding: 'utf-8',
137
+ stdio: ['ignore', 'pipe', 'pipe'],
138
+ });
139
+ if (r.status === null || r.status < 0) {
140
+ return { content: `<<<<<<< ours\n${ours}=======\n${theirs}>>>>>>> theirs\n`, clean: false };
141
+ }
142
+ if (r.status === 0)
143
+ return { content: r.stdout, clean: true };
144
+ let clean = true;
145
+ const content = r.stdout.replace(CONFLICT, (whole, oursHunk, theirsHunk) => {
146
+ const union = unionLists(oursHunk, theirsHunk);
147
+ if (union === null) {
148
+ clean = false;
149
+ return whole;
150
+ }
151
+ return union;
152
+ });
153
+ return { content, clean };
154
+ }
155
+ finally {
156
+ fs.rmSync(dir, { recursive: true, force: true });
157
+ }
158
+ }
159
+ /** Merge two board documents against their common base. */
160
+ function mergeBoardDocuments(base, ours, theirs) {
161
+ const b = parseDoc(base);
162
+ const o = parseDoc(ours);
163
+ const t = parseDoc(theirs);
164
+ if (!o || !t)
165
+ return mergeBodies(base, ours, theirs);
166
+ const data = mergeFields(b?.data ?? {}, o.data, t.data);
167
+ const body = mergeBodies(b?.body ?? '', o.body, t.body);
168
+ return { content: (0, core_1.serializeFrontmatter)(data, body.content), clean: body.clean };
169
+ }
170
+ /** "column: todo → review; title: …" for the fields that differ; exported for sync. */
171
+ function summarizeFieldChanges(before, after) {
172
+ const b = parseDoc(before)?.data ?? {};
173
+ const a = parseDoc(after)?.data ?? {};
174
+ const parts = [];
175
+ for (const key of Object.keys(a)) {
176
+ if (key === 'updatedAt' || same(b[key], a[key]))
177
+ continue;
178
+ const render = (v) => (typeof v === 'string' ? v : JSON.stringify(v));
179
+ parts.push(`${key}: ${b[key] === undefined ? '∅' : render(b[key])} → ${render(a[key])}`);
180
+ }
181
+ return parts.join('; ');
182
+ }
183
+ /**
184
+ * Entry point for git: reads the three files, writes the result over `ours`,
185
+ * returns the exit code (0 clean, 1 conflicts remain, 2 usage).
186
+ */
187
+ function mergeDriverCommand(options) {
188
+ const read = (p) => (fs.existsSync(p) ? fs.readFileSync(p, 'utf-8') : '');
189
+ if (!options.ours || !options.theirs)
190
+ return 2;
191
+ const outcome = mergeBoardDocuments(read(options.base), read(options.ours), read(options.theirs));
192
+ fs.writeFileSync(options.ours, outcome.content, 'utf-8');
193
+ return outcome.clean ? 0 : 1;
194
+ }
195
+ //# sourceMappingURL=merge-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-driver.js","sourceRoot":"","sources":["../../src/commands/merge-driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface MigrateTrackedOptions {
2
+ dir?: string;
3
+ /** After `--to-branch` on a committed board, also commit its removal from the code branch. */
4
+ commit?: boolean;
5
+ }
6
+ export declare function migrateToBranch(options?: MigrateTrackedOptions): void;
7
+ export declare function migrateToPlain(options?: MigrateTrackedOptions): void;
8
+ //# sourceMappingURL=migrate-tracked.d.ts.map