brainfile 0.21.2 → 0.22.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 (233) hide show
  1. package/README.md +1 -1
  2. package/dist/__tests__/helpers/mcp-wire.d.ts +2 -0
  3. package/dist/__tests__/helpers/mcp-wire.d.ts.map +1 -1
  4. package/dist/__tests__/helpers/mcp-wire.js +4 -2
  5. package/dist/__tests__/helpers/mcp-wire.js.map +1 -1
  6. package/dist/chunk-CWUTU5VV.mjs +5585 -0
  7. package/dist/chunk-L4WSDMK3.mjs +1973 -0
  8. package/dist/{chunk-7KU2R7QC.mjs → chunk-XFDTTLSW.mjs} +3230 -4322
  9. package/dist/cli.js +7 -1
  10. package/dist/cli.mjs +8078 -5357
  11. package/dist/commands/add.d.ts +4 -0
  12. package/dist/commands/add.d.ts.map +1 -1
  13. package/dist/commands/add.js +68 -72
  14. package/dist/commands/add.js.map +1 -1
  15. package/dist/commands/boards.d.ts +18 -0
  16. package/dist/commands/boards.d.ts.map +1 -0
  17. package/dist/commands/boards.js +166 -0
  18. package/dist/commands/boards.js.map +1 -0
  19. package/dist/commands/brief.d.ts +17 -11
  20. package/dist/commands/brief.d.ts.map +1 -1
  21. package/dist/commands/brief.js +38 -35
  22. package/dist/commands/brief.js.map +1 -1
  23. package/dist/commands/check.d.ts +47 -0
  24. package/dist/commands/check.d.ts.map +1 -0
  25. package/dist/commands/check.js +134 -0
  26. package/dist/commands/check.js.map +1 -0
  27. package/dist/commands/columns.d.ts +48 -0
  28. package/dist/commands/columns.d.ts.map +1 -0
  29. package/dist/commands/columns.js +132 -0
  30. package/dist/commands/columns.js.map +1 -0
  31. package/dist/commands/complete.js +9 -4
  32. package/dist/commands/complete.js.map +1 -1
  33. package/dist/commands/decide.d.ts +72 -0
  34. package/dist/commands/decide.d.ts.map +1 -0
  35. package/dist/commands/decide.js +264 -0
  36. package/dist/commands/decide.js.map +1 -0
  37. package/dist/commands/hooks.d.ts +5 -1
  38. package/dist/commands/hooks.d.ts.map +1 -1
  39. package/dist/commands/hooks.js +10 -11
  40. package/dist/commands/hooks.js.map +1 -1
  41. package/dist/commands/init.d.ts.map +1 -1
  42. package/dist/commands/init.js +8 -0
  43. package/dist/commands/init.js.map +1 -1
  44. package/dist/commands/lint.d.ts +27 -0
  45. package/dist/commands/lint.d.ts.map +1 -1
  46. package/dist/commands/lint.js +127 -20
  47. package/dist/commands/lint.js.map +1 -1
  48. package/dist/commands/list.d.ts +6 -0
  49. package/dist/commands/list.d.ts.map +1 -1
  50. package/dist/commands/list.js +216 -7
  51. package/dist/commands/list.js.map +1 -1
  52. package/dist/commands/log.d.ts +51 -0
  53. package/dist/commands/log.d.ts.map +1 -1
  54. package/dist/commands/log.js +113 -84
  55. package/dist/commands/log.js.map +1 -1
  56. package/dist/commands/mcp.d.ts +5 -2
  57. package/dist/commands/mcp.d.ts.map +1 -1
  58. package/dist/commands/mcp.js +44 -9
  59. package/dist/commands/mcp.js.map +1 -1
  60. package/dist/commands/memory-index.d.ts +34 -0
  61. package/dist/commands/memory-index.d.ts.map +1 -0
  62. package/dist/commands/memory-index.js +135 -0
  63. package/dist/commands/memory-index.js.map +1 -0
  64. package/dist/commands/merge-driver.d.ts +1 -15
  65. package/dist/commands/merge-driver.d.ts.map +1 -1
  66. package/dist/commands/merge-driver.js +8 -134
  67. package/dist/commands/merge-driver.js.map +1 -1
  68. package/dist/commands/migrate-tracked.d.ts +1 -1
  69. package/dist/commands/migrate-tracked.d.ts.map +1 -1
  70. package/dist/commands/migrate-tracked.js +21 -10
  71. package/dist/commands/migrate-tracked.js.map +1 -1
  72. package/dist/commands/patch.d.ts +23 -4
  73. package/dist/commands/patch.d.ts.map +1 -1
  74. package/dist/commands/patch.js +149 -91
  75. package/dist/commands/patch.js.map +1 -1
  76. package/dist/commands/plan.d.ts.map +1 -1
  77. package/dist/commands/plan.js +11 -5
  78. package/dist/commands/plan.js.map +1 -1
  79. package/dist/commands/schema.d.ts +12 -0
  80. package/dist/commands/schema.d.ts.map +1 -1
  81. package/dist/commands/schema.js +28 -10
  82. package/dist/commands/schema.js.map +1 -1
  83. package/dist/commands/search.d.ts +46 -12
  84. package/dist/commands/search.d.ts.map +1 -1
  85. package/dist/commands/search.js +89 -44
  86. package/dist/commands/search.js.map +1 -1
  87. package/dist/commands/show.d.ts.map +1 -1
  88. package/dist/commands/show.js +175 -10
  89. package/dist/commands/show.js.map +1 -1
  90. package/dist/commands/template.d.ts +2 -0
  91. package/dist/commands/template.d.ts.map +1 -1
  92. package/dist/commands/template.js +2 -1
  93. package/dist/commands/template.js.map +1 -1
  94. package/dist/commands/types.d.ts +31 -1
  95. package/dist/commands/types.d.ts.map +1 -1
  96. package/dist/commands/types.js +122 -22
  97. package/dist/commands/types.js.map +1 -1
  98. package/dist/commands/where.d.ts +20 -1
  99. package/dist/commands/where.d.ts.map +1 -1
  100. package/dist/commands/where.js +56 -6
  101. package/dist/commands/where.js.map +1 -1
  102. package/dist/hook.mjs +15 -0
  103. package/dist/hooks/session-start.d.ts +39 -0
  104. package/dist/hooks/session-start.d.ts.map +1 -0
  105. package/dist/hooks/session-start.js +181 -0
  106. package/dist/hooks/session-start.js.map +1 -0
  107. package/dist/lib/contractRunner.d.ts.map +1 -1
  108. package/dist/lib/contractRunner.js +8 -0
  109. package/dist/lib/contractRunner.js.map +1 -1
  110. package/dist/mcp/helpers.d.ts +29 -1
  111. package/dist/mcp/helpers.d.ts.map +1 -1
  112. package/dist/mcp/helpers.js +57 -2
  113. package/dist/mcp/helpers.js.map +1 -1
  114. package/dist/mcp/instructions.d.ts +5 -0
  115. package/dist/mcp/instructions.d.ts.map +1 -0
  116. package/dist/mcp/instructions.js +57 -0
  117. package/dist/mcp/instructions.js.map +1 -0
  118. package/dist/mcp/resources.d.ts +9 -0
  119. package/dist/mcp/resources.d.ts.map +1 -0
  120. package/dist/mcp/resources.js +29 -0
  121. package/dist/mcp/resources.js.map +1 -0
  122. package/dist/mcp/schemas.d.ts +600 -9
  123. package/dist/mcp/schemas.d.ts.map +1 -1
  124. package/dist/mcp/schemas.js +374 -12
  125. package/dist/mcp/schemas.js.map +1 -1
  126. package/dist/mcp/tools/adr_promote_tool.d.ts +7 -0
  127. package/dist/mcp/tools/adr_promote_tool.d.ts.map +1 -0
  128. package/dist/mcp/tools/adr_promote_tool.js +37 -0
  129. package/dist/mcp/tools/adr_promote_tool.js.map +1 -0
  130. package/dist/mcp/tools/board_tool.d.ts +7 -0
  131. package/dist/mcp/tools/board_tool.d.ts.map +1 -0
  132. package/dist/mcp/tools/board_tool.js +61 -0
  133. package/dist/mcp/tools/board_tool.js.map +1 -0
  134. package/dist/mcp/tools/brief_tool.d.ts.map +1 -1
  135. package/dist/mcp/tools/brief_tool.js +13 -5
  136. package/dist/mcp/tools/brief_tool.js.map +1 -1
  137. package/dist/mcp/tools/check_tool.d.ts +6 -0
  138. package/dist/mcp/tools/check_tool.d.ts.map +1 -0
  139. package/dist/mcp/tools/check_tool.js +54 -0
  140. package/dist/mcp/tools/check_tool.js.map +1 -0
  141. package/dist/mcp/tools/columns_tool.d.ts +7 -0
  142. package/dist/mcp/tools/columns_tool.d.ts.map +1 -0
  143. package/dist/mcp/tools/columns_tool.js +94 -0
  144. package/dist/mcp/tools/columns_tool.js.map +1 -0
  145. package/dist/mcp/tools/decide_tool.d.ts +91 -0
  146. package/dist/mcp/tools/decide_tool.d.ts.map +1 -0
  147. package/dist/mcp/tools/decide_tool.js +141 -0
  148. package/dist/mcp/tools/decide_tool.js.map +1 -0
  149. package/dist/mcp/tools/get_task_tool.d.ts.map +1 -1
  150. package/dist/mcp/tools/get_task_tool.js +62 -4
  151. package/dist/mcp/tools/get_task_tool.js.map +1 -1
  152. package/dist/mcp/tools/lint_tool.d.ts +7 -0
  153. package/dist/mcp/tools/lint_tool.d.ts.map +1 -0
  154. package/dist/mcp/tools/lint_tool.js +48 -0
  155. package/dist/mcp/tools/lint_tool.js.map +1 -0
  156. package/dist/mcp/tools/list_tasks_tool.d.ts.map +1 -1
  157. package/dist/mcp/tools/list_tasks_tool.js +132 -15
  158. package/dist/mcp/tools/list_tasks_tool.js.map +1 -1
  159. package/dist/mcp/tools/log_tool.d.ts +4 -0
  160. package/dist/mcp/tools/log_tool.d.ts.map +1 -0
  161. package/dist/mcp/tools/log_tool.js +52 -0
  162. package/dist/mcp/tools/log_tool.js.map +1 -0
  163. package/dist/mcp/tools/note_tool.d.ts +7 -0
  164. package/dist/mcp/tools/note_tool.d.ts.map +1 -0
  165. package/dist/mcp/tools/note_tool.js +39 -0
  166. package/dist/mcp/tools/note_tool.js.map +1 -0
  167. package/dist/mcp/tools/retire_tool.d.ts +4 -0
  168. package/dist/mcp/tools/retire_tool.d.ts.map +1 -0
  169. package/dist/mcp/tools/retire_tool.js +81 -0
  170. package/dist/mcp/tools/retire_tool.js.map +1 -0
  171. package/dist/mcp/tools/search_tool.d.ts.map +1 -1
  172. package/dist/mcp/tools/search_tool.js +36 -19
  173. package/dist/mcp/tools/search_tool.js.map +1 -1
  174. package/dist/mcp/tools/supersede_tool.d.ts +4 -0
  175. package/dist/mcp/tools/supersede_tool.d.ts.map +1 -0
  176. package/dist/mcp/tools/supersede_tool.js +72 -0
  177. package/dist/mcp/tools/supersede_tool.js.map +1 -0
  178. package/dist/mcp/tools/sync_tool.d.ts +9 -0
  179. package/dist/mcp/tools/sync_tool.d.ts.map +1 -0
  180. package/dist/mcp/tools/sync_tool.js +87 -0
  181. package/dist/mcp/tools/sync_tool.js.map +1 -0
  182. package/dist/mcp/tools/task_add_tool.d.ts.map +1 -1
  183. package/dist/mcp/tools/task_add_tool.js +39 -17
  184. package/dist/mcp/tools/task_add_tool.js.map +1 -1
  185. package/dist/mcp/tools/task_complete_tool.d.ts.map +1 -1
  186. package/dist/mcp/tools/task_complete_tool.js +3 -2
  187. package/dist/mcp/tools/task_complete_tool.js.map +1 -1
  188. package/dist/mcp/tools/task_patch_tool.d.ts.map +1 -1
  189. package/dist/mcp/tools/task_patch_tool.js +30 -5
  190. package/dist/mcp/tools/task_patch_tool.js.map +1 -1
  191. package/dist/mcp/tools/template_tool.d.ts +4 -0
  192. package/dist/mcp/tools/template_tool.d.ts.map +1 -0
  193. package/dist/mcp/tools/template_tool.js +70 -0
  194. package/dist/mcp/tools/template_tool.js.map +1 -0
  195. package/dist/mcp/tools/types_tool.d.ts +4 -0
  196. package/dist/mcp/tools/types_tool.d.ts.map +1 -0
  197. package/dist/mcp/tools/types_tool.js +61 -0
  198. package/dist/mcp/tools/types_tool.js.map +1 -0
  199. package/dist/mcp/tools/where_tool.d.ts +4 -0
  200. package/dist/mcp/tools/where_tool.d.ts.map +1 -0
  201. package/dist/mcp/tools/where_tool.js +73 -0
  202. package/dist/mcp/tools/where_tool.js.map +1 -0
  203. package/dist/schemas/board.json +29 -8
  204. package/dist/{tui-3Z7ZJV7M.mjs → tui-D6RMFL6X.mjs} +994 -315
  205. package/dist/utils/board-autosync.d.ts +1 -10
  206. package/dist/utils/board-autosync.d.ts.map +1 -1
  207. package/dist/utils/board-autosync.js +11 -29
  208. package/dist/utils/board-autosync.js.map +1 -1
  209. package/dist/utils/board-commit-hooks.d.ts +8 -0
  210. package/dist/utils/board-commit-hooks.d.ts.map +1 -1
  211. package/dist/utils/board-commit-hooks.js +45 -1
  212. package/dist/utils/board-commit-hooks.js.map +1 -1
  213. package/dist/utils/board-repo.d.ts +1 -119
  214. package/dist/utils/board-repo.d.ts.map +1 -1
  215. package/dist/utils/board-repo.js +43 -571
  216. package/dist/utils/board-repo.js.map +1 -1
  217. package/dist/utils/board-sync.d.ts +3 -123
  218. package/dist/utils/board-sync.d.ts.map +1 -1
  219. package/dist/utils/board-sync.js +34 -551
  220. package/dist/utils/board-sync.js.map +1 -1
  221. package/dist/utils/graph.d.ts +20 -0
  222. package/dist/utils/graph.d.ts.map +1 -0
  223. package/dist/utils/graph.js +61 -0
  224. package/dist/utils/graph.js.map +1 -0
  225. package/dist/utils/related.d.ts +21 -0
  226. package/dist/utils/related.d.ts.map +1 -0
  227. package/dist/utils/related.js +36 -0
  228. package/dist/utils/related.js.map +1 -0
  229. package/package.json +2 -2
  230. package/dist/tui/theme.d.ts +0 -98
  231. package/dist/tui/theme.d.ts.map +0 -1
  232. package/dist/tui/theme.js +0 -141
  233. package/dist/tui/theme.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"get_task_tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/get_task_tool.ts"],"names":[],"mappings":";;AAMA,kDAqCC;AA1CD,6BAAwB;AACxB,qDAAkF;AAClF,wCAAuC;AACvC,wCAAiD;AAEjD,SAAgB,mBAAmB,CAAC,MAAiB,EAAE,WAAmB;IACxE,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,sDAAsD;QACnE,WAAW,EAAE,OAAC,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YACpF,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;SACjD,CAAC;QACR,YAAY,EAAE,6BAAmB;KAClC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,IAAI,IAAI,WAAW,CAAC;QAErC,MAAM,KAAK,GAAG,IAAA,mBAAS,EAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QAExB,MAAM,IAAI,GAAG,IAAA,qBAAS,EAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,IAAA,sBAAU,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,0BAA0B,IAAI,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACzG,CAAC;QACD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;QAC7B,MAAM,WAAW,GAAG,IAAA,8BAAkB,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG;YACb,GAAG,GAAG,CAAC,IAAI;YACX,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,CAAC;YAC5D,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;YAC5D,GAAG,CAAC,KAAK,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;SACjC,CAAC;QACF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YAC3E,iBAAiB,EAAE,MAAM;SAC1B,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"get_task_tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/get_task_tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { McpServer } from "@modelcontextprotocol/server";
2
+ /**
3
+ * `lint`: check the board, and fix what the CLI can, like `brainfile lint`.
4
+ * Issues are a result, not an error: the call succeeds with valid: false.
5
+ */
6
+ export declare function registerLintTool(server: McpServer, defaultFile: string): void;
7
+ //# sourceMappingURL=lint_tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint_tool.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/lint_tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAM9D;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAqC7E"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerLintTool = registerLintTool;
4
+ const zod_1 = require("zod");
5
+ const lint_1 = require("../../commands/lint");
6
+ const helpers_1 = require("../helpers");
7
+ const schemas_1 = require("../schemas");
8
+ /**
9
+ * `lint`: check the board, and fix what the CLI can, like `brainfile lint`.
10
+ * Issues are a result, not an error: the call succeeds with valid: false.
11
+ */
12
+ function registerLintTool(server, defaultFile) {
13
+ server.registerTool('lint', {
14
+ title: 'Lint Board',
15
+ description: 'Check the board: the config\'s YAML and shape, columns, types, dependsOn references to related boards, and the graph (missing or looping parents, off-pattern links, decisions: naming nothing or a non-decision). fix: true rewrites what can be fixed (quoting, a legacy rules: block). valid is false when there are errors; warnings do not count.',
16
+ inputSchema: zod_1.z.object({
17
+ file: zod_1.z.string().optional().describe('Path to brainfile.md (default: brainfile.md)'),
18
+ fix: zod_1.z.boolean().optional().describe('Fix what can be fixed'),
19
+ }),
20
+ outputSchema: schemas_1.lintOutputSchema,
21
+ }, (0, helpers_1.withBoardCommit)('lint', defaultFile, async ({ file, fix }) => {
22
+ const filePath = file || defaultFile;
23
+ const guard = (0, helpers_1.requireV2)(filePath);
24
+ if (guard)
25
+ return guard;
26
+ try {
27
+ const report = (0, lint_1.lintBoard)((0, helpers_1.resolveBrainfile)(filePath), { fix: fix === true });
28
+ const output = {
29
+ valid: report.errors.length === 0,
30
+ issues: report.issues,
31
+ errorCount: report.errors.length,
32
+ warningCount: report.warnings.length,
33
+ fixableCount: report.fixable.length,
34
+ fixed: report.fixed,
35
+ fixedCount: report.fixedCount,
36
+ remaining: report.remaining,
37
+ };
38
+ const head = report.issues.length === 0
39
+ ? 'No issues found'
40
+ : `${output.errorCount} error${output.errorCount === 1 ? '' : 's'}, ${output.warningCount} warning${output.warningCount === 1 ? '' : 's'}${report.fixed ? `; fixed ${report.fixedCount}` : output.fixableCount > 0 ? `; ${output.fixableCount} fixable with fix: true` : ''}`;
41
+ return (0, helpers_1.mcpResult)(`${head}\n\n${JSON.stringify(output, null, 2)}`, output);
42
+ }
43
+ catch (error) {
44
+ return (0, helpers_1.mcpErrorFrom)(error);
45
+ }
46
+ }));
47
+ }
48
+ //# sourceMappingURL=lint_tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint_tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/lint_tool.ts"],"names":[],"mappings":";;AAUA,4CAqCC;AA9CD,6BAAwB;AACxB,8CAAgD;AAChD,wCAAmG;AACnG,wCAA8C;AAE9C;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,MAAiB,EAAE,WAAmB;IACrE,MAAM,CAAC,YAAY,CACjB,MAAM,EACN;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,wVAAwV;QACrW,WAAW,EAAE,OAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YACpF,GAAG,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;SAC9D,CAAC;QACF,YAAY,EAAE,0BAAgB;KAC/B,EACD,IAAA,yBAAe,EAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE;QAC3D,MAAM,QAAQ,GAAG,IAAI,IAAI,WAAW,CAAC;QACrC,MAAM,KAAK,GAAG,IAAA,mBAAS,EAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,IAAA,0BAAgB,EAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG;gBACb,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBACjC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;gBAChC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;gBACpC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;gBACnC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBACrC,CAAC,CAAC,iBAAiB;gBACnB,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,SAAS,MAAM,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,YAAY,WAAW,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,YAAY,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAChR,OAAO,IAAA,mBAAS,EAAC,GAAG,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAA,sBAAY,EAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"list_tasks_tool.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/list_tasks_tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAM9D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CA4ClF"}
1
+ {"version":3,"file":"list_tasks_tool.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/list_tasks_tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AA6B9D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAwGlF"}
@@ -1,51 +1,168 @@
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.registerListTasksTool = registerListTasksTool;
37
+ const path = __importStar(require("path"));
4
38
  const zod_1 = require("zod");
39
+ const core_1 = require("@brainfile/core");
40
+ const repo_1 = require("@brainfile/core/repo");
5
41
  const v2_detect_1 = require("../../utils/v2-detect");
42
+ const graph_1 = require("../../utils/graph");
6
43
  const helpers_1 = require("../helpers");
7
44
  const schemas_1 = require("../schemas");
8
45
  function registerListTasksTool(server, defaultFile) {
9
46
  server.registerTool('list_tasks', {
10
47
  title: 'List Tasks',
11
- description: 'List all board documents (tasks, epics, specs, adrs, plans), optionally filtered by column, tag, or type. Use type:"plan" to list plan documents.',
48
+ description: 'List board documents (epics, specs, plans, tasks and the board\'s own types), optionally filtered by column, tag, type or status; aliases work (issue is task, adr is decision). Decisions have no column and are left out unless type names them (type:"decision"). tree:true also returns the outline: open work nested by parentId, in reading order with depth.',
12
49
  inputSchema: zod_1.z.object({
13
50
  file: zod_1.z.string().optional().describe('Path to brainfile.md (default: brainfile.md)'),
14
51
  column: zod_1.z.string().optional().describe('Filter by column ID or name'),
15
52
  tag: zod_1.z.string().optional().describe('Filter by tag'),
16
- type: zod_1.z.string().optional().describe('Filter by document type (e.g., epic, adr, plan). Only returns tasks matching this type.'),
53
+ type: zod_1.z.string().optional().describe('Filter by document type (e.g. epic, spec, plan, task, decision; aliases issue and adr work). type:"decision" lists decisions, which are otherwise left out.'),
54
+ status: zod_1.z.string().optional().describe('Filter by status: a plan\'s free-form status (draft, active, superseded) or, with type:"decision", current, superseded, rejected or stale'),
55
+ tree: zod_1.z.boolean().optional().describe('Also return tree: the containment outline of open work (epic ▸ spec · plan · task), each entry with depth, parentId and children IDs, in reading order.'),
56
+ related: zod_1.z.union([zod_1.z.boolean(), zod_1.z.literal('all')]).optional().describe('Also list open tasks on related boards (related: in brainfile.md): true for the ones this board\'s tasks depend on, "all" for every open task there. Reference them as alias:task-id.'),
17
57
  }),
18
58
  outputSchema: schemas_1.listTasksOutputSchema
19
- }, async ({ file, column, tag, type: filterType }) => {
59
+ }, async ({ file, column, tag, type: filterType, status: filterStatus, tree, related }) => {
20
60
  const filePath = file || defaultFile;
21
61
  const guard = (0, helpers_1.requireV2)(filePath);
22
62
  if (guard)
23
63
  return guard;
24
64
  const board = (0, v2_detect_1.buildBoardFromV2)(filePath);
65
+ const types = board.types;
66
+ const isDecision = (task) => (0, core_1.resolveDocType)(task.type, types).role === 'decision';
67
+ const statusOf = (task) => {
68
+ const value = task.status;
69
+ return typeof value === 'string' ? value : undefined;
70
+ };
71
+ const summarize = (task, columnId) => ({
72
+ id: task.id,
73
+ title: task.title,
74
+ column: columnId,
75
+ ...(task.type ? { type: task.type } : {}),
76
+ ...(typeof task.parentId === 'string' && task.parentId ? { parentId: task.parentId } : {}),
77
+ // A plan's free-form status (draft, active, …); a decision's is set below.
78
+ ...(statusOf(task) ? { status: statusOf(task) } : {}),
79
+ priority: task.priority,
80
+ tags: task.tags,
81
+ assignee: task.assignee,
82
+ });
83
+ const graph = (tree || (filterType && (0, core_1.resolveDocType)(filterType, types).role === 'decision'))
84
+ ? (0, graph_1.readOrderedGraph)(filePath, board.columns.map((col) => col.id), types)
85
+ : null;
25
86
  const tasks = [];
26
- for (const col of board.columns) {
27
- if (column) {
28
- const matchesId = col.id === column;
29
- const matchesName = col.title.toLowerCase() === column.toLowerCase();
30
- if (!matchesId && !matchesName)
87
+ if (filterType && (0, core_1.resolveDocType)(filterType, types).role === 'decision') {
88
+ // Decisions have no column: list them on their own, with where they stand.
89
+ for (const task of graph.tasks) {
90
+ if (!isDecision(task) || !(0, core_1.typesMatch)(task.type, filterType))
31
91
  continue;
32
- }
33
- for (const task of col.tasks) {
34
92
  if (tag && (!task.tags || !task.tags.includes(tag)))
35
93
  continue;
36
- if (filterType) {
37
- const taskType = task.type || 'task';
38
- if (taskType !== filterType)
94
+ tasks.push({
95
+ // A decision has no column; a legacy ADR may still carry one.
96
+ ...summarize(task, task.column ?? (task.completedAt ? 'completed' : 'none')),
97
+ status: (0, core_1.decisionStatus)(task),
98
+ });
99
+ }
100
+ }
101
+ else {
102
+ for (const col of board.columns) {
103
+ if (column) {
104
+ const matchesId = col.id === column;
105
+ const matchesName = col.title.toLowerCase() === column.toLowerCase();
106
+ if (!matchesId && !matchesName)
39
107
  continue;
40
108
  }
41
- tasks.push({ id: task.id, title: task.title, column: col.id, priority: task.priority, tags: task.tags, assignee: task.assignee });
109
+ for (const task of col.tasks) {
110
+ if (isDecision(task))
111
+ continue;
112
+ if (tag && (!task.tags || !task.tags.includes(tag)))
113
+ continue;
114
+ if (filterType && !(0, core_1.typesMatch)(task.type, filterType))
115
+ continue;
116
+ tasks.push(summarize(task, col.id));
117
+ }
42
118
  }
43
119
  }
44
- const output = { tasks, count: tasks.length };
120
+ const outline = tree && graph
121
+ ? (0, core_1.flattenDocTree)(graph.tree()).map((node) => ({
122
+ id: node.task.id,
123
+ title: node.task.title,
124
+ type: node.type.name,
125
+ column: node.task.column ?? 'todo',
126
+ depth: node.depth,
127
+ ...(typeof node.task.parentId === 'string' && node.task.parentId ? { parentId: node.task.parentId } : {}),
128
+ children: node.children.map((child) => child.task.id),
129
+ ...(node.offPattern ? { offPattern: true } : {}),
130
+ ...(node.detachedFrom ? { detachedFrom: node.detachedFrom.id } : {}),
131
+ }))
132
+ : undefined;
133
+ const wanted = filterStatus?.trim().toLowerCase();
134
+ const listed = wanted ? tasks.filter((task) => (task.status ?? '').toLowerCase() === wanted) : tasks;
135
+ const output = {
136
+ tasks: listed,
137
+ count: listed.length,
138
+ ...(outline ? { tree: outline } : {}),
139
+ ...(related ? { related: listRelated(filePath, related === 'all' ? 'all' : 'depends') } : {}),
140
+ };
45
141
  return {
46
142
  content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
47
143
  structuredContent: output,
48
144
  };
49
145
  });
50
146
  }
147
+ function listRelated(filePath, mode) {
148
+ return (0, repo_1.relatedBoards)(path.resolve(filePath)).openTasks(mode).map(({ board, tasks, notFound, neededBy }) => ({
149
+ alias: board.alias,
150
+ path: board.path,
151
+ status: board.status,
152
+ note: (0, repo_1.describeRelatedBoard)(board),
153
+ ...(board.status === 'found' && board.title ? { title: board.title } : {}),
154
+ tasks: tasks.map((task) => ({
155
+ ref: `${board.alias}:${task.id}`,
156
+ id: task.id,
157
+ title: task.title,
158
+ column: task.column ?? 'todo',
159
+ priority: task.priority,
160
+ tags: task.tags,
161
+ assignee: task.assignee,
162
+ ...(neededBy[task.id] ? { neededBy: neededBy[task.id] } : {}),
163
+ })),
164
+ notFound,
165
+ neededBy,
166
+ }));
167
+ }
51
168
  //# sourceMappingURL=list_tasks_tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list_tasks_tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/list_tasks_tool.ts"],"names":[],"mappings":";;AAMA,sDA4CC;AAjDD,6BAAwB;AACxB,qDAAyD;AACzD,wCAAuC;AACvC,wCAAmD;AAEnD,SAAgB,qBAAqB,CAAC,MAAiB,EAAE,WAAmB;IAC1E,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,mJAAmJ;QAChK,WAAW,EAAE,OAAC,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YACpF,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACrE,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YACpD,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yFAAyF,CAAC;SAChI,CAAC;QACR,YAAY,EAAE,+BAAqB;KACpC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE;QAChD,MAAM,QAAQ,GAAG,IAAI,IAAI,WAAW,CAAC;QAErC,MAAM,KAAK,GAAG,IAAA,mBAAS,EAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QAExB,MAAM,KAAK,GAAG,IAAA,4BAAgB,EAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,KAAK,GAAgH,EAAE,CAAC;QAC9H,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC;gBACpC,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;gBACrE,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW;oBAAE,SAAS;YAC3C,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBAC7B,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAAE,SAAS;gBAC9D,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;oBACrC,IAAI,QAAQ,KAAK,UAAU;wBAAE,SAAS;gBACxC,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpI,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9C,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YAC3E,iBAAiB,EAAE,MAAM;SAC1B,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"list_tasks_tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/list_tasks_tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/server";
2
+ /** `log`: read completed work, like the CLI's `log`. Read-only. */
3
+ export declare function registerLogTool(server: McpServer, defaultFile: string): void;
4
+ //# sourceMappingURL=log_tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log_tool.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/log_tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAO9D,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAyC5E"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerLogTool = registerLogTool;
4
+ const zod_1 = require("zod");
5
+ const log_1 = require("../../commands/log");
6
+ const v2_detect_1 = require("../../utils/v2-detect");
7
+ const helpers_1 = require("../helpers");
8
+ const schemas_1 = require("../schemas");
9
+ /** `log`: read completed work, like the CLI's `log`. Read-only. */
10
+ function registerLogTool(server, defaultFile) {
11
+ server.registerTool('log', {
12
+ title: 'Read Logs',
13
+ description: 'Read completed work. task: one task\'s description and log (open or completed). query: search completed tasks (title, description, log) with where each matched. Neither: the most recently completed tasks, ledger-only records included. For search across the board, its history and the project\'s docs, use search.',
14
+ inputSchema: zod_1.z.object({
15
+ file: zod_1.z.string().optional().describe('Path to brainfile.md (default: brainfile.md)'),
16
+ task: zod_1.z.string().optional().describe('A task ID: its description and log'),
17
+ query: zod_1.z.string().optional().describe('Search completed tasks'),
18
+ limit: zod_1.z.number().int().positive().optional().describe('Most entries for search and recent (default 20)'),
19
+ }),
20
+ outputSchema: schemas_1.logOutputSchema,
21
+ }, async ({ file, task, query, limit }) => {
22
+ const filePath = file || defaultFile;
23
+ const guard = (0, helpers_1.requireV2)(filePath);
24
+ if (guard)
25
+ return guard;
26
+ if (task && query)
27
+ return (0, helpers_1.mcpError)('give task or query, not both');
28
+ const dirs = (0, v2_detect_1.getV2Dirs)(filePath);
29
+ const max = limit ?? 20;
30
+ try {
31
+ if (task) {
32
+ const view = (0, log_1.readTaskLog)(dirs, task);
33
+ const head = `${view.id}: ${view.title}${view.completedAt ? ` (completed ${view.completedAt})` : ''}`;
34
+ return (0, helpers_1.mcpResult)(`${head}\n\n${view.log ?? '(no log entries)'}`, { mode: 'task', task: view });
35
+ }
36
+ if (query !== undefined) {
37
+ if (!query.trim())
38
+ return (0, helpers_1.mcpError)('query is empty');
39
+ const matches = (0, log_1.searchLogEntries)(dirs, query.trim());
40
+ const output = { mode: 'search', query: query.trim(), entries: matches.slice(0, max), count: matches.length };
41
+ return (0, helpers_1.mcpResult)(JSON.stringify(output, null, 2), output);
42
+ }
43
+ const entries = (0, log_1.recentLogEntries)(dirs);
44
+ const output = { mode: 'recent', entries: entries.slice(0, max), count: entries.length };
45
+ return (0, helpers_1.mcpResult)(JSON.stringify(output, null, 2), output);
46
+ }
47
+ catch (error) {
48
+ return (0, helpers_1.mcpErrorFrom)(error);
49
+ }
50
+ });
51
+ }
52
+ //# sourceMappingURL=log_tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log_tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/log_tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { McpServer } from "@modelcontextprotocol/server";
2
+ /**
3
+ * `note`: append a timestamped line to a task's log, attributed like the
4
+ * CLI's `note` (agent, else the detected agent, else the git user).
5
+ */
6
+ export declare function registerNoteTool(server: McpServer, defaultFile: string): void;
7
+ //# sourceMappingURL=note_tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"note_tool.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/note_tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAM9D;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CA2B7E"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerNoteTool = registerNoteTool;
4
+ const zod_1 = require("zod");
5
+ const log_1 = require("../../commands/log");
6
+ const helpers_1 = require("../helpers");
7
+ const schemas_1 = require("../schemas");
8
+ /**
9
+ * `note`: append a timestamped line to a task's log, attributed like the
10
+ * CLI's `note` (agent, else the detected agent, else the git user).
11
+ */
12
+ function registerNoteTool(server, defaultFile) {
13
+ server.registerTool('note', {
14
+ title: 'Add Note',
15
+ description: 'Append a timestamped line to a task\'s log (its ## Log section): what you found, decided or did while working on it. Works on open and completed tasks. Attributed to agent, else the agent running the server, else the git user. Notes become the ledger summary when the task completes.',
16
+ inputSchema: zod_1.z.object({
17
+ file: zod_1.z.string().optional().describe('Path to brainfile.md (default: brainfile.md)'),
18
+ task: zod_1.z.string().describe('Task ID'),
19
+ message: zod_1.z.string().describe('The note: one line is best'),
20
+ agent: zod_1.z.string().optional().describe('Who wrote it (default: the detected agent, else the git user)'),
21
+ }),
22
+ outputSchema: schemas_1.noteOutputSchema,
23
+ }, (0, helpers_1.withBoardCommit)('note', defaultFile, async ({ file, task, message, agent }) => {
24
+ const filePath = file || defaultFile;
25
+ const guard = (0, helpers_1.requireV2)(filePath);
26
+ if (guard)
27
+ return guard;
28
+ if (!message.trim())
29
+ return (0, helpers_1.mcpError)('message is required');
30
+ try {
31
+ const note = (0, log_1.appendTaskNote)((0, helpers_1.resolveBrainfile)(filePath), task, message.trim(), agent);
32
+ return (0, helpers_1.mcpResult)(`Note added to ${note.taskId}\n${note.entry}`, { ...note });
33
+ }
34
+ catch (error) {
35
+ return (0, helpers_1.mcpErrorFrom)(error);
36
+ }
37
+ }));
38
+ }
39
+ //# sourceMappingURL=note_tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"note_tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/note_tool.ts"],"names":[],"mappings":";;AAUA,4CA2BC;AApCD,6BAAwB;AACxB,4CAAoD;AACpD,wCAA6G;AAC7G,wCAA8C;AAE9C;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,MAAiB,EAAE,WAAmB;IACrE,MAAM,CAAC,YAAY,CACjB,MAAM,EACN;QACE,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,6RAA6R;QAC1S,WAAW,EAAE,OAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YACpF,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;YACpC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YAC1D,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;SACvG,CAAC;QACF,YAAY,EAAE,0BAAgB;KAC/B,EACD,IAAA,yBAAe,EAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;QAC5E,MAAM,QAAQ,GAAG,IAAI,IAAI,WAAW,CAAC;QACrC,MAAM,KAAK,GAAG,IAAA,mBAAS,EAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,OAAO,IAAA,kBAAQ,EAAC,qBAAqB,CAAC,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAA,oBAAc,EAAC,IAAA,0BAAgB,EAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;YACrF,OAAO,IAAA,mBAAS,EAAC,iBAAiB,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAA,sBAAY,EAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/server";
2
+ /** `retire`: mark a decision rejected or stale and move it to logs/, like `brainfile retire`. */
3
+ export declare function registerRetireTool(server: McpServer, defaultFile: string): void;
4
+ //# sourceMappingURL=retire_tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retire_tool.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/retire_tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAS9D,iGAAiG;AACjG,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAqC/E"}
@@ -0,0 +1,81 @@
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.registerRetireTool = registerRetireTool;
37
+ const path = __importStar(require("path"));
38
+ const zod_1 = require("zod");
39
+ const core_1 = require("@brainfile/core");
40
+ const v2_detect_1 = require("../../utils/v2-detect");
41
+ const actor_1 = require("../../utils/actor");
42
+ const helpers_1 = require("../helpers");
43
+ const schemas_1 = require("../schemas");
44
+ /** `retire`: mark a decision rejected or stale and move it to logs/, like `brainfile retire`. */
45
+ function registerRetireTool(server, defaultFile) {
46
+ server.registerTool('retire', {
47
+ title: 'Retire Decision',
48
+ description: 'Mark a decision rejected (it was turned down) or stale (it no longer applies) and move it to logs/, with an optional note on why. No ledger record: a decision is not completed work. To replace a decision with a new one, use supersede.',
49
+ inputSchema: zod_1.z.object({
50
+ file: zod_1.z.string().optional().describe('Path to brainfile.md (default: brainfile.md)'),
51
+ taskId: zod_1.z.string().describe('The decision to retire, e.g. decision-4'),
52
+ as: zod_1.z.enum(['rejected', 'stale']).describe('Its new status'),
53
+ note: zod_1.z.string().optional().describe('Why, written on the decision\'s log'),
54
+ agent: zod_1.z.string().optional().describe('Who is retiring it (default: the detected agent, else the git user)'),
55
+ }),
56
+ outputSchema: schemas_1.retireOutputSchema,
57
+ }, (0, helpers_1.withBoardCommit)('retire', defaultFile, async ({ file, taskId, as: status, note, agent }) => {
58
+ const filePath = file || defaultFile;
59
+ const guard = (0, helpers_1.requireV2)(filePath);
60
+ if (guard)
61
+ return guard;
62
+ const resolved = (0, helpers_1.resolveBrainfile)(filePath);
63
+ const who = agent?.trim() || (0, actor_1.resolveActor)(path.dirname(resolved))?.name;
64
+ const result = (0, core_1.retireDecisionFile)((0, v2_detect_1.ensureV2Dirs)(resolved), taskId, status, {
65
+ types: (0, core_1.readBoardConfig)(resolved)?.config.types,
66
+ ...(note?.trim() ? { note: note.trim() } : {}),
67
+ ...(who ? { agent: who } : {}),
68
+ });
69
+ if (!result.success || !result.task || !result.filePath)
70
+ return (0, helpers_1.mcpError)(result.error ?? `Could not retire ${taskId}`);
71
+ const projectRoot = path.dirname(path.dirname(resolved));
72
+ const output = {
73
+ decision: {
74
+ ...(0, core_1.summarizeDecision)(result.task),
75
+ path: path.relative(projectRoot, result.filePath).split(path.sep).join('/'),
76
+ },
77
+ };
78
+ return (0, helpers_1.mcpResult)(`Retired ${taskId} as ${status} (moved to logs/): ${result.task.title}`, output);
79
+ }));
80
+ }
81
+ //# sourceMappingURL=retire_tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retire_tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/retire_tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,gDAqCC;AA9CD,2CAA6B;AAC7B,6BAAwB;AACxB,0CAAyF;AACzF,qDAAqD;AACrD,6CAAiD;AACjD,wCAA+F;AAC/F,wCAAgD;AAEhD,iGAAiG;AACjG,SAAgB,kBAAkB,CAAC,MAAiB,EAAE,WAAmB;IACvE,MAAM,CAAC,YAAY,CACjB,QAAQ,EACR;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,4OAA4O;QACzP,WAAW,EAAE,OAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YACpF,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YACtE,EAAE,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAC5D,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YAC3E,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;SAC7G,CAAC;QACF,YAAY,EAAE,4BAAkB;KACjC,EACD,IAAA,yBAAe,EAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QACzF,MAAM,QAAQ,GAAG,IAAI,IAAI,WAAW,CAAC;QACrC,MAAM,KAAK,GAAG,IAAA,mBAAS,EAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAA,0BAAgB,EAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,IAAA,oBAAY,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC;QACxE,MAAM,MAAM,GAAG,IAAA,yBAAkB,EAAC,IAAA,wBAAY,EAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE;YACxE,KAAK,EAAE,IAAA,sBAAe,EAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,KAAK;YAC9C,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,OAAO,IAAA,kBAAQ,EAAC,MAAM,CAAC,KAAK,IAAI,oBAAoB,MAAM,EAAE,CAAC,CAAC;QACvH,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG;YACb,QAAQ,EAAE;gBACR,GAAG,IAAA,wBAAiB,EAAC,MAAM,CAAC,IAAI,CAAC;gBACjC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;aAC5E;SACF,CAAC;QACF,OAAO,IAAA,mBAAS,EAAC,WAAW,MAAM,OAAO,MAAM,sBAAsB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;IACpG,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"search_tool.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/search_tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAY9D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAwF/E"}
1
+ {"version":3,"file":"search_tool.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/search_tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAa9D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAsG/E"}