brainfile 0.20.0 → 0.21.1

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 (90) hide show
  1. package/dist/{chunk-UOCQBEEW.mjs → chunk-MUV7XTFA.mjs} +1345 -316
  2. package/dist/cli.mjs +2196 -1349
  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/log.d.ts.map +1 -1
  12. package/dist/commands/log.js +4 -1
  13. package/dist/commands/log.js.map +1 -1
  14. package/dist/commands/mcp.d.ts.map +1 -1
  15. package/dist/commands/mcp.js +44 -0
  16. package/dist/commands/mcp.js.map +1 -1
  17. package/dist/commands/merge-driver.d.ts +26 -0
  18. package/dist/commands/merge-driver.d.ts.map +1 -0
  19. package/dist/commands/merge-driver.js +195 -0
  20. package/dist/commands/merge-driver.js.map +1 -0
  21. package/dist/commands/migrate-tracked.d.ts +8 -0
  22. package/dist/commands/migrate-tracked.d.ts.map +1 -0
  23. package/dist/commands/migrate-tracked.js +428 -0
  24. package/dist/commands/migrate-tracked.js.map +1 -0
  25. package/dist/commands/migrate.d.ts +6 -0
  26. package/dist/commands/migrate.d.ts.map +1 -1
  27. package/dist/commands/migrate.js +9 -0
  28. package/dist/commands/migrate.js.map +1 -1
  29. package/dist/commands/sync.d.ts +18 -0
  30. package/dist/commands/sync.d.ts.map +1 -0
  31. package/dist/commands/sync.js +161 -0
  32. package/dist/commands/sync.js.map +1 -0
  33. package/dist/commands/where.d.ts +24 -0
  34. package/dist/commands/where.d.ts.map +1 -0
  35. package/dist/commands/where.js +141 -0
  36. package/dist/commands/where.js.map +1 -0
  37. package/dist/mcp/helpers.d.ts +9 -0
  38. package/dist/mcp/helpers.d.ts.map +1 -1
  39. package/dist/mcp/helpers.js +43 -0
  40. package/dist/mcp/helpers.js.map +1 -1
  41. package/dist/mcp/tools/brief_tool.d.ts.map +1 -1
  42. package/dist/mcp/tools/brief_tool.js +39 -1
  43. package/dist/mcp/tools/brief_tool.js.map +1 -1
  44. package/dist/mcp/tools/contract_tool.d.ts.map +1 -1
  45. package/dist/mcp/tools/contract_tool.js +6 -5
  46. package/dist/mcp/tools/contract_tool.js.map +1 -1
  47. package/dist/mcp/tools/subtask_tool.d.ts.map +1 -1
  48. package/dist/mcp/tools/subtask_tool.js +5 -4
  49. package/dist/mcp/tools/subtask_tool.js.map +1 -1
  50. package/dist/mcp/tools/task_add_tool.d.ts.map +1 -1
  51. package/dist/mcp/tools/task_add_tool.js +6 -5
  52. package/dist/mcp/tools/task_add_tool.js.map +1 -1
  53. package/dist/mcp/tools/task_complete_tool.d.ts.map +1 -1
  54. package/dist/mcp/tools/task_complete_tool.js +5 -4
  55. package/dist/mcp/tools/task_complete_tool.js.map +1 -1
  56. package/dist/mcp/tools/task_delete_tool.d.ts.map +1 -1
  57. package/dist/mcp/tools/task_delete_tool.js +5 -4
  58. package/dist/mcp/tools/task_delete_tool.js.map +1 -1
  59. package/dist/mcp/tools/task_move_tool.d.ts.map +1 -1
  60. package/dist/mcp/tools/task_move_tool.js +6 -5
  61. package/dist/mcp/tools/task_move_tool.js.map +1 -1
  62. package/dist/mcp/tools/task_patch_tool.d.ts.map +1 -1
  63. package/dist/mcp/tools/task_patch_tool.js +5 -4
  64. package/dist/mcp/tools/task_patch_tool.js.map +1 -1
  65. package/dist/{tui-H3RI22S4.mjs → tui-5TFQR53I.mjs} +295 -253
  66. package/dist/utils/actor.d.ts +22 -0
  67. package/dist/utils/actor.d.ts.map +1 -0
  68. package/dist/utils/actor.js +200 -0
  69. package/dist/utils/actor.js.map +1 -0
  70. package/dist/utils/board-autosync.d.ts +22 -0
  71. package/dist/utils/board-autosync.d.ts.map +1 -0
  72. package/dist/utils/board-autosync.js +166 -0
  73. package/dist/utils/board-autosync.js.map +1 -0
  74. package/dist/utils/board-commit-hooks.d.ts +12 -0
  75. package/dist/utils/board-commit-hooks.d.ts.map +1 -0
  76. package/dist/utils/board-commit-hooks.js +52 -0
  77. package/dist/utils/board-commit-hooks.js.map +1 -0
  78. package/dist/utils/board-repo.d.ts +132 -0
  79. package/dist/utils/board-repo.d.ts.map +1 -0
  80. package/dist/utils/board-repo.js +602 -0
  81. package/dist/utils/board-repo.js.map +1 -0
  82. package/dist/utils/board-sync.d.ts +126 -0
  83. package/dist/utils/board-sync.d.ts.map +1 -0
  84. package/dist/utils/board-sync.js +554 -0
  85. package/dist/utils/board-sync.js.map +1 -0
  86. package/dist/utils/brainfile-path.d.ts +11 -1
  87. package/dist/utils/brainfile-path.d.ts.map +1 -1
  88. package/dist/utils/brainfile-path.js +39 -2
  89. package/dist/utils/brainfile-path.js.map +1 -1
  90. package/package.json +2 -2
@@ -34,11 +34,13 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.resolveCliBrainfilePath = resolveCliBrainfilePath;
37
+ exports.tryResolveBoardDir = tryResolveBoardDir;
37
38
  const fs = __importStar(require("fs"));
38
39
  const path = __importStar(require("path"));
39
40
  const core_1 = require("@brainfile/core");
40
41
  const cli_error_1 = require("./cli-error");
41
42
  const v2_only_1 = require("./v2-only");
43
+ const board_repo_1 = require("./board-repo");
42
44
  function isMigrationCommand() {
43
45
  return process.argv.includes('migrate');
44
46
  }
@@ -55,15 +57,26 @@ function rejectLegacyRuntimePath(resolvedPath) {
55
57
  }
56
58
  return resolvedPath;
57
59
  }
60
+ function isPlaceholder(filePath) {
61
+ return filePath === undefined || filePath === core_1.BRAINFILE_BASENAME || filePath === `./${core_1.BRAINFILE_BASENAME}`;
62
+ }
58
63
  /**
59
64
  * Resolve a brainfile path for CLI commands.
60
65
  *
61
66
  * Supports three input forms:
62
- * - Default (omitted): auto-discover from cwd upward
67
+ * - Default (omitted): auto-discover from cwd upward, stopping at the
68
+ * repository root; then, inside a repo, the worktree on the board branch
69
+ * (spec-9), creating it when the branch exists but has no checkout.
63
70
  * - Directory path (`cli/`, `./projects/foo`): find brainfile inside that directory
64
71
  * - File path (`path/to/brainfile.md`): use as-is
72
+ *
73
+ * `-g` / `--global` (or `BRAINFILE_GLOBAL=1`) targets the home board at
74
+ * `~/.brainfile` instead of discovering one.
65
75
  */
66
76
  function resolveCliBrainfilePath(filePath) {
77
+ if (isPlaceholder(filePath) && (0, board_repo_1.isGlobalBoardRequested)()) {
78
+ return rejectLegacyRuntimePath(path.join((0, board_repo_1.homeBoardDir)(), core_1.BRAINFILE_BASENAME));
79
+ }
67
80
  // If a path was given and it's a directory, look for a brainfile inside it
68
81
  if (filePath) {
69
82
  const resolved = path.resolve(process.cwd(), filePath);
@@ -83,6 +96,30 @@ function resolveCliBrainfilePath(filePath) {
83
96
  // Not a directory, fall through to normal resolution
84
97
  }
85
98
  }
86
- return rejectLegacyRuntimePath((0, core_1.resolveBrainfilePath)({ filePath, startDir: process.cwd() }));
99
+ const cwd = process.cwd();
100
+ if (isPlaceholder(filePath)) {
101
+ const found = (0, core_1.findBrainfile)(cwd, { stopAtGitRoot: true });
102
+ if (found)
103
+ return rejectLegacyRuntimePath(found.absolutePath);
104
+ const tracked = (0, board_repo_1.findTrackedBoardDir)(cwd) ?? (0, board_repo_1.materializeBoardWorktree)(cwd);
105
+ if (tracked)
106
+ return rejectLegacyRuntimePath(path.join(tracked, core_1.BRAINFILE_BASENAME));
107
+ }
108
+ return rejectLegacyRuntimePath((0, core_1.resolveBrainfilePath)({ filePath, startDir: cwd, stopAtGitRoot: true }));
109
+ }
110
+ /**
111
+ * The `.brainfile/` directory a command will operate on, or null when there
112
+ * is no board (or resolution itself fails). Never throws.
113
+ */
114
+ function tryResolveBoardDir(filePath) {
115
+ try {
116
+ const resolved = resolveCliBrainfilePath(filePath);
117
+ if (!fs.existsSync(resolved))
118
+ return null;
119
+ return path.dirname(resolved);
120
+ }
121
+ catch {
122
+ return null;
123
+ }
87
124
  }
88
125
  //# sourceMappingURL=brainfile-path.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"brainfile-path.js","sourceRoot":"","sources":["../../src/utils/brainfile-path.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,0DAqBC;AAtDD,uCAAyB;AACzB,2CAA6B;AAC7B,0CAA4E;AAC5E,2CAAuC;AACvC,uCAAmD;AAEnD,SAAS,kBAAkB;IACzB,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,oBAAoB,CAAC,aAAqB;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,YAAY;QAChE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,OAAO,gCAAgC,GAAG,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,uBAAuB,CAAC,YAAoB;IACnD,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,IAAA,WAAI,EAAC,YAAY,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,oBAAQ,CAAC,gCAAsB,EAAE,SAAS,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,uBAAuB,CAAC,QAAiB;IACvD,2EAA2E;IAC3E,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxC,oEAAoE;gBACpE,MAAM,KAAK,GAAG,IAAA,oBAAa,EAAC,QAAQ,CAAC,CAAC;gBACtC,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;oBAC5C,OAAO,uBAAuB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBACrD,CAAC;gBACD,mDAAmD;gBACnD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;gBACjE,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qDAAqD;QACvD,CAAC;IACH,CAAC;IAED,OAAO,uBAAuB,CAAC,IAAA,2BAAoB,EAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9F,CAAC"}
1
+ {"version":3,"file":"brainfile-path.js","sourceRoot":"","sources":["../../src/utils/brainfile-path.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brainfile",
3
- "version": "0.20.0",
3
+ "version": "0.21.1",
4
4
  "description": "Command-line interface for Brainfile task management",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -37,7 +37,7 @@
37
37
  "access": "public"
38
38
  },
39
39
  "dependencies": {
40
- "@brainfile/core": "^0.20.0",
40
+ "@brainfile/core": "^0.21.1",
41
41
  "chalk": "^4.1.2",
42
42
  "chokidar": "^4.0.3",
43
43
  "commander": "^14.0.3",