brainfile 0.21.1 → 0.22.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 (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-BNE7R5GK.mjs +5489 -0
  7. package/dist/chunk-L4WSDMK3.mjs +1973 -0
  8. package/dist/{chunk-MUV7XTFA.mjs → chunk-XFDTTLSW.mjs} +3277 -4340
  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-5TFQR53I.mjs → tui-IR3JKS4Y.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,17 +1,21 @@
1
1
  "use strict";
2
2
  /**
3
- * Brief command — per-agent "what changed that I should care about?".
3
+ * Brief command: the session-start block (spec-11, recoil's `wake`).
4
4
  *
5
- * brainfile brief --agent codex Delta since this agent's last brief
6
- * brainfile brief --agent codex --peek Same, without advancing the checkpoint
7
- * brainfile brief --agent codex --json Machine-readable envelope
5
+ * brainfile brief --agent codex Budgeted block (~1,600 chars)
6
+ * brainfile brief --agent codex --max-chars 0 Everything
7
+ * brainfile brief --agent codex --peek Same, without advancing the checkpoint
8
+ * brainfile brief --agent codex --json Machine-readable envelope
8
9
  *
9
- * The first brief for an agent is a full orientation (board rules, assigned
10
- * tasks, latest notes, recent completions). Every later brief is a delta.
10
+ * The block has lanes: heads up (work resting on a superseded decision,
11
+ * decisions whose predicates broke), current decisions, your tasks (or the
12
+ * work in flight), what changed since this agent's checkpoint, and the docs
13
+ * that bear on the tasks (from the local index, when there is one). The
14
+ * SessionStart hook injects the same block.
11
15
  *
12
- * Rendering is plain chalk, matching the rest of the non-TUI command surface.
13
- * It borrows only the dependency-free glyph vocabulary from the TUI theme so
14
- * the v3 design language stays consistent; no TUI file is modified.
16
+ * `--json` keeps the checkpoint lanes (`lanes`: a first brief's orientation,
17
+ * later the delta) and adds the block's `sections`, `text`, `maxChars` and
18
+ * `truncated`.
15
19
  *
16
20
  * @packageDocumentation
17
21
  */
@@ -57,8 +61,8 @@ exports.briefCommand = briefCommand;
57
61
  const fs = __importStar(require("fs"));
58
62
  const chalk_1 = __importDefault(require("chalk"));
59
63
  const core_1 = require("@brainfile/core");
64
+ const memory_1 = require("@brainfile/core/memory");
60
65
  const v2_detect_1 = require("../utils/v2-detect");
61
- const theme_1 = require("../tui/theme");
62
66
  const logger_1 = require("../utils/logger");
63
67
  const cli_error_1 = require("../utils/cli-error");
64
68
  const brainfile_path_1 = require("../utils/brainfile-path");
@@ -121,7 +125,7 @@ function runBrief(options) {
121
125
  const dirs = (0, v2_detect_1.getV2Dirs)(filePath);
122
126
  const peek = options.peek === true;
123
127
  const state = (0, core_1.readBriefState)(filePath, agent);
124
- const result = (0, core_1.buildBrief)(dirs, agent, { lastBriefAt: state.lastBriefAt });
128
+ const result = (0, memory_1.composeBrief)(dirs, agent, { lastBriefAt: state.lastBriefAt, maxChars: parseMaxChars(options.maxChars) });
125
129
  // Peek is a caller-side no-op on the write step only — the brief itself is
126
130
  // identical either way, and no state file is created on a first-ever peek.
127
131
  if (!peek) {
@@ -129,33 +133,32 @@ function runBrief(options) {
129
133
  }
130
134
  return { ...result, peek };
131
135
  }
136
+ function parseMaxChars(value) {
137
+ if (value === undefined)
138
+ return memory_1.DEFAULT_BRIEF_MAX_CHARS;
139
+ const n = typeof value === 'number' ? value : Number.parseInt(String(value), 10);
140
+ if (!Number.isFinite(n) || n < 0) {
141
+ throw new cli_error_1.CLIError(`--max-chars must be a number of characters, 0 for no limit (got '${value}')`);
142
+ }
143
+ return n;
144
+ }
132
145
  // ============================================================================
133
146
  // Rendering
134
147
  // ============================================================================
148
+ /** The block as plain text, lightly styled on a terminal (chalk is a no-op when piped). */
135
149
  function renderBrief(result, logger) {
136
- const modeLabel = result.mode === 'full' ? 'first brief' : 'since last brief';
137
- const header = `${chalk_1.default.bold(result.agent)} ${chalk_1.default.gray('·')} ${chalk_1.default.gray(modeLabel)}`;
138
- logger.log(header + (result.peek ? chalk_1.default.gray(' (peek)') : ''));
139
- if ((0, core_1.isEmptyBrief)(result)) {
140
- logger.log('');
141
- logger.log(chalk_1.default.gray(` ${theme_1.GLYPHS.success} Nothing new since your last brief.`));
142
- return;
143
- }
144
- for (const lane of result.lanes) {
145
- if (lane.items.length === 0)
146
- continue;
147
- logger.log('');
148
- logger.log(chalk_1.default.bold(lane.label));
149
- // Align the why-column so the eye can scan reasons independently of text.
150
- const width = Math.max(...lane.items.map((item) => laneKey(item.taskId).length));
151
- for (const item of lane.items) {
152
- const key = laneKey(item.taskId).padEnd(width);
153
- const prefix = key.trim().length > 0 ? chalk_1.default.cyan(key) : key;
154
- logger.log(` ${prefix} ${item.text} ${chalk_1.default.gray(`(${item.why})`)}`);
155
- }
156
- }
157
- }
158
- function laneKey(taskId) {
159
- return taskId ? `${theme_1.GLYPHS.pointer} ${taskId}` : '';
150
+ const lines = result.text.split('\n');
151
+ lines.forEach((line, index) => {
152
+ if (index === 0)
153
+ logger.log(chalk_1.default.bold(line) + (result.peek ? chalk_1.default.gray(' (peek)') : ''));
154
+ else if (line.startsWith('## '))
155
+ logger.log(chalk_1.default.bold(line.slice(3)));
156
+ else if (line.startsWith('! '))
157
+ logger.log(chalk_1.default.yellow(line));
158
+ else if (line.startsWith('(+'))
159
+ logger.log(chalk_1.default.gray(line));
160
+ else
161
+ logger.log(line);
162
+ });
160
163
  }
161
164
  //# sourceMappingURL=brief.js.map
@@ -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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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * `brainfile check`: is a decision on the board still safe to act on? (spec-11)
3
+ *
4
+ * brainfile check "use axios for the retry client"
5
+ * brainfile check decision-3
6
+ * brainfile check --claim-key dependency.http-client
7
+ * brainfile check --claim-key-prefix dependency "add axios"
8
+ *
9
+ * Finds the claim family the action touches (a decision ID, a claim key, or
10
+ * its words: the local index when there is one, a scan of the decisions
11
+ * when there is not) and answers in recoil's verdict order:
12
+ *
13
+ * use act on the current decision
14
+ * review ask first: two current decisions, a broken predicate
15
+ * (validUntil passed, the source file changed, the package
16
+ * moved), a contradiction of the decision's stance, or no
17
+ * current decision left
18
+ * use_replacement the action matched a superseded decision; use the
19
+ * current one instead
20
+ * no_decision nothing on the board speaks to it
21
+ *
22
+ * Exit codes, for scripts: 0 use or no_decision, 2 review, 3 use_replacement,
23
+ * 1 an error (no board, bad arguments).
24
+ *
25
+ * @packageDocumentation
26
+ */
27
+ import { type CheckPrefixResult } from '@brainfile/core/memory';
28
+ import type { CheckResult } from '@brainfile/core';
29
+ import { type Logger } from '../utils/logger';
30
+ export declare const CHECK_COMMAND_HELP: string;
31
+ export interface CheckCommandOptions {
32
+ file?: string;
33
+ claimKey?: string;
34
+ claimKeyPrefix?: string;
35
+ json?: boolean;
36
+ /** The action, joined, or a decision ID. */
37
+ query?: string;
38
+ }
39
+ export type CheckCommandResult = (CheckResult & {
40
+ matchedBy: string;
41
+ exitCode: number;
42
+ }) | (CheckPrefixResult & {
43
+ exitCode: number;
44
+ });
45
+ /** Run a check and print it. Sets `process.exitCode` from the verdict unless `setExitCode` is false. */
46
+ export declare function checkCommand(options: CheckCommandOptions, logger?: Logger, setExitCode?: boolean): CheckCommandResult;
47
+ //# sourceMappingURL=check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAK7D,eAAO,MAAM,kBAAkB,QAYmD,CAAC;AAEnF,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,kBAAkB,GAC1B,CAAC,WAAW,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GACvD,CAAC,iBAAiB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE/C,wGAAwG;AACxG,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,EAAE,MAAM,GAAE,MAAsB,EAAE,WAAW,UAAO,GAAG,kBAAkB,CA2BjI"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ /**
3
+ * `brainfile check`: is a decision on the board still safe to act on? (spec-11)
4
+ *
5
+ * brainfile check "use axios for the retry client"
6
+ * brainfile check decision-3
7
+ * brainfile check --claim-key dependency.http-client
8
+ * brainfile check --claim-key-prefix dependency "add axios"
9
+ *
10
+ * Finds the claim family the action touches (a decision ID, a claim key, or
11
+ * its words: the local index when there is one, a scan of the decisions
12
+ * when there is not) and answers in recoil's verdict order:
13
+ *
14
+ * use act on the current decision
15
+ * review ask first: two current decisions, a broken predicate
16
+ * (validUntil passed, the source file changed, the package
17
+ * moved), a contradiction of the decision's stance, or no
18
+ * current decision left
19
+ * use_replacement the action matched a superseded decision; use the
20
+ * current one instead
21
+ * no_decision nothing on the board speaks to it
22
+ *
23
+ * Exit codes, for scripts: 0 use or no_decision, 2 review, 3 use_replacement,
24
+ * 1 an error (no board, bad arguments).
25
+ *
26
+ * @packageDocumentation
27
+ */
28
+ var __importDefault = (this && this.__importDefault) || function (mod) {
29
+ return (mod && mod.__esModule) ? mod : { "default": mod };
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.CHECK_COMMAND_HELP = void 0;
33
+ exports.checkCommand = checkCommand;
34
+ const chalk_1 = __importDefault(require("chalk"));
35
+ const memory_1 = require("@brainfile/core/memory");
36
+ const logger_1 = require("../utils/logger");
37
+ const cli_error_1 = require("../utils/cli-error");
38
+ const brainfile_path_1 = require("../utils/brainfile-path");
39
+ const v2_only_1 = require("../utils/v2-only");
40
+ exports.CHECK_COMMAND_HELP = `
41
+ Examples:
42
+ brainfile check "use axios for the retry client"
43
+ brainfile check decision-3
44
+ brainfile check --claim-key dependency.http-client
45
+ brainfile check --claim-key-prefix dependency "add axios"
46
+ brainfile check "add axios" --json
47
+
48
+ Verdicts: use (follow the current decision) · review (ask first) ·
49
+ use_replacement (the decision you named was replaced) · no_decision.
50
+ Name the subject next to the verb ("use axios", "drop axios") so the stance
51
+ rule can catch a contradiction.
52
+ Exit codes: 0 use or no_decision, 2 review, 3 use_replacement, 1 error.`.trimEnd();
53
+ /** Run a check and print it. Sets `process.exitCode` from the verdict unless `setExitCode` is false. */
54
+ function checkCommand(options, logger = logger_1.defaultLogger, setExitCode = true) {
55
+ const query = options.query?.trim() ?? '';
56
+ const claimKey = options.claimKey?.trim() ?? '';
57
+ const prefix = options.claimKeyPrefix?.trim() ?? '';
58
+ if (claimKey && prefix)
59
+ throw new cli_error_1.CLIError('choose --claim-key or --claim-key-prefix, not both');
60
+ if (!query && !claimKey && !prefix) {
61
+ throw new cli_error_1.CLIError('check needs an action, a decision ID, --claim-key or --claim-key-prefix', undefined, 'Usage: brainfile check "<action>" | <decision-id> | --claim-key <key> | --claim-key-prefix <prefix>');
62
+ }
63
+ const filePath = (0, brainfile_path_1.resolveCliBrainfilePath)(options.file);
64
+ (0, v2_only_1.assertV2Brainfile)(filePath);
65
+ let result;
66
+ if (prefix) {
67
+ const prefixResult = (0, memory_1.checkClaimKeyPrefix)(filePath, prefix, query ? { query } : {});
68
+ result = { ...prefixResult, exitCode: (0, memory_1.checkExitCode)(prefixResult.verdict) };
69
+ }
70
+ else {
71
+ const { matchedBy, result: single } = (0, memory_1.checkDecision)(filePath, { ...(query ? { query } : {}), ...(claimKey ? { claimKey } : {}) });
72
+ result = { ...single, matchedBy, exitCode: (0, memory_1.checkExitCode)(single.verdict) };
73
+ }
74
+ if (options.json)
75
+ logger.log(JSON.stringify(result, null, 2));
76
+ else if ('claimKeyPrefix' in result)
77
+ renderPrefix(result, logger);
78
+ else
79
+ renderSingle(result, logger);
80
+ if (setExitCode)
81
+ process.exitCode = result.exitCode;
82
+ return result;
83
+ }
84
+ const VERDICT_COLOR = {
85
+ use: chalk_1.default.green,
86
+ review: chalk_1.default.yellow,
87
+ use_replacement: chalk_1.default.cyan,
88
+ no_decision: chalk_1.default.gray,
89
+ };
90
+ function decisionLine(label, d) {
91
+ const facts = [d.status, d.stance && d.subject ? `${d.stance} ${d.subject}` : ''].filter(Boolean).join(' · ');
92
+ return `${chalk_1.default.bold(`${label}:`)} ${chalk_1.default.cyan(d.id)} ${d.title} ${chalk_1.default.gray(`(${facts})`)}`;
93
+ }
94
+ function renderSingle(result, logger) {
95
+ const color = VERDICT_COLOR[result.verdict] ?? ((s) => s);
96
+ logger.log(`${chalk_1.default.bold('Verdict:')} ${color(result.verdict)} ${chalk_1.default.gray(`· ${result.recommendation.replace(/_/g, ' ')} · ${result.reason.replace(/_/g, ' ')}`)}`);
97
+ if (result.verdict === 'no_decision' && !result.claimKey) {
98
+ logger.log(chalk_1.default.gray('No decision on the board speaks to this.'));
99
+ return;
100
+ }
101
+ if (result.claimKey)
102
+ logger.log(`${chalk_1.default.bold('Family:')} ${result.claimKey} ${chalk_1.default.gray(`(matched by ${result.matchedBy.replace('_', ' ')})`)}`);
103
+ if (result.current)
104
+ logger.log(decisionLine('Current', result.current));
105
+ if (result.matched && result.matched.id !== result.current?.id)
106
+ logger.log(decisionLine('Matched', result.matched));
107
+ if (result.replacement)
108
+ logger.log(decisionLine('Use instead', result.replacement));
109
+ if (result.requestedAction && result.requestedAction !== 'unknown') {
110
+ logger.log(`${chalk_1.default.bold('Your action:')} ${result.requestedAction.replace(/_/g, ' ')} ${chalk_1.default.gray(`(decision ${result.stance} ${result.subject})`)}`);
111
+ }
112
+ for (const p of result.predicates) {
113
+ const pc = p.status === 'broken' ? chalk_1.default.yellow : p.status === 'holds' ? chalk_1.default.green : chalk_1.default.gray;
114
+ const detail = [p.expected ? `wants ${p.expected}` : '', p.actual ? `found ${p.actual}` : ''].filter(Boolean).join(', ');
115
+ logger.log(`${chalk_1.default.bold(`${p.kind.replace(/_/g, ' ')}:`)} ${pc(p.status)} ${chalk_1.default.gray(`(${p.reason.replace(/_/g, ' ')}${detail ? `; ${detail}` : ''})`)}`);
116
+ }
117
+ if (result.advisory)
118
+ logger.log(`${chalk_1.default.bold('Holds while:')} ${result.advisory}`);
119
+ if (result.recheck)
120
+ logger.log(`${chalk_1.default.bold('Recheck:')} ${result.recheck}`);
121
+ const history = result.family.filter((d) => d.id !== result.current?.id && d.id !== result.matched?.id);
122
+ if (history.length > 0) {
123
+ logger.log(chalk_1.default.gray(`History: ${history.map((d) => `${d.id} (${d.status}${d.supersededBy ? ` by ${d.supersededBy}` : ''})`).join(', ')}`));
124
+ }
125
+ }
126
+ function renderPrefix(result, logger) {
127
+ const color = VERDICT_COLOR[result.verdict] ?? ((s) => s);
128
+ logger.log(`${chalk_1.default.bold('Verdict:')} ${color(result.verdict)} ${chalk_1.default.gray(`· ${result.familyCount} famil${result.familyCount === 1 ? 'y' : 'ies'} under ${result.claimKeyPrefix}${result.decidingClaimKey ? ` · decided by ${result.decidingClaimKey}` : ''}`)}`);
129
+ for (const family of result.families) {
130
+ const c = VERDICT_COLOR[family.verdict] ?? ((s) => s);
131
+ logger.log(` ${c(family.verdict.padEnd(15))} ${family.claimKey} ${chalk_1.default.gray(`${family.current ? family.current.id : 'no current decision'} · ${family.reason.replace(/_/g, ' ')}`)}`);
132
+ }
133
+ }
134
+ //# sourceMappingURL=check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * `brainfile columns` (spec-13): the board's columns.
3
+ *
4
+ * brainfile columns list them, with task counts
5
+ * brainfile columns add "In Review" --after in-progress
6
+ * brainfile columns rename in-review "Review"
7
+ * brainfile columns reorder backlog todo in-progress review done
8
+ * brainfile columns remove review --move-to in-progress
9
+ *
10
+ * The edits are core's (`addColumnFile` and friends), written through the
11
+ * board config writer; the MCP `columns` tool calls the same functions.
12
+ *
13
+ * @packageDocumentation
14
+ */
15
+ import { type ColumnConfig, type ColumnSummary } from '@brainfile/core';
16
+ import { type Logger } from '../utils/logger';
17
+ export declare const COLUMNS_COMMAND_HELP: string;
18
+ export interface ColumnsBaseOptions {
19
+ file?: string;
20
+ json?: boolean;
21
+ }
22
+ export interface ColumnsAddOptions extends ColumnsBaseOptions {
23
+ id?: string;
24
+ after?: string;
25
+ before?: string;
26
+ completion?: boolean;
27
+ }
28
+ export interface ColumnsRemoveOptions extends ColumnsBaseOptions {
29
+ moveTo?: string;
30
+ }
31
+ export interface ColumnsCommandResult {
32
+ success: true;
33
+ columns: ColumnSummary[];
34
+ column?: ColumnConfig;
35
+ moved?: string[];
36
+ movedTo?: ColumnConfig;
37
+ }
38
+ /** `columns` / `columns list`: every column, in order, with its task count. */
39
+ export declare function columnsListCommand(options: ColumnsBaseOptions, logger?: Logger): ColumnsCommandResult;
40
+ /** `columns add <title>`: a new column, last unless --after or --before. */
41
+ export declare function columnsAddCommand(title: string | undefined, options: ColumnsAddOptions, logger?: Logger): ColumnsCommandResult;
42
+ /** `columns rename <column> <title>`: a new title; the ID, and the tasks, stay. */
43
+ export declare function columnsRenameCommand(column: string | undefined, title: string | undefined, options: ColumnsBaseOptions, logger?: Logger): ColumnsCommandResult;
44
+ /** `columns reorder <column...>`: the ones named first, the rest after in their order. */
45
+ export declare function columnsReorderCommand(order: string[] | undefined, options: ColumnsBaseOptions, logger?: Logger): ColumnsCommandResult;
46
+ /** `columns remove <column> [--move-to <column>]`. */
47
+ export declare function columnsRemoveCommand(column: string | undefined, options: ColumnsRemoveOptions, logger?: Logger): ColumnsCommandResult;
48
+ //# sourceMappingURL=columns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../../src/commands/columns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,aAAa,EAEnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAM7D,eAAO,MAAM,oBAAoB,QAWsB,CAAC;AAExD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AA8CD,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,GAAE,MAAsB,GAAG,oBAAoB,CAGpH;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,GAAE,MAAsB,GAAG,oBAAoB,CAW7I;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,GAAE,MAAsB,GAAG,oBAAoB,CAK7K;AAED,0FAA0F;AAC1F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,GAAE,MAAsB,GAAG,oBAAoB,CAIpJ;AAED,sDAAsD;AACtD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,GAAE,MAAsB,GAAG,oBAAoB,CAUpJ"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ /**
3
+ * `brainfile columns` (spec-13): the board's columns.
4
+ *
5
+ * brainfile columns list them, with task counts
6
+ * brainfile columns add "In Review" --after in-progress
7
+ * brainfile columns rename in-review "Review"
8
+ * brainfile columns reorder backlog todo in-progress review done
9
+ * brainfile columns remove review --move-to in-progress
10
+ *
11
+ * The edits are core's (`addColumnFile` and friends), written through the
12
+ * board config writer; the MCP `columns` tool calls the same functions.
13
+ *
14
+ * @packageDocumentation
15
+ */
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.COLUMNS_COMMAND_HELP = void 0;
21
+ exports.columnsListCommand = columnsListCommand;
22
+ exports.columnsAddCommand = columnsAddCommand;
23
+ exports.columnsRenameCommand = columnsRenameCommand;
24
+ exports.columnsReorderCommand = columnsReorderCommand;
25
+ exports.columnsRemoveCommand = columnsRemoveCommand;
26
+ const chalk_1 = __importDefault(require("chalk"));
27
+ const core_1 = require("@brainfile/core");
28
+ const logger_1 = require("../utils/logger");
29
+ const cli_error_1 = require("../utils/cli-error");
30
+ const errorHandler_1 = require("../utils/errorHandler");
31
+ const brainfile_path_1 = require("../utils/brainfile-path");
32
+ const v2_only_1 = require("../utils/v2-only");
33
+ exports.COLUMNS_COMMAND_HELP = `
34
+ Examples:
35
+ brainfile columns List them, with task counts
36
+ brainfile columns add "In Review" --after in-progress
37
+ brainfile columns add Shipped --completion Tasks moved there are completed
38
+ brainfile columns rename in-review Review The ID stays, so its tasks stay
39
+ brainfile columns reorder backlog todo in-progress The ones named first, the rest after
40
+ brainfile columns remove review --move-to in-progress
41
+
42
+ Columns are named by ID or title. remove refuses a column that still holds
43
+ tasks unless --move-to says where they go; they move there without being
44
+ completed. The last column is never removed.`.trimEnd();
45
+ function boardPath(file) {
46
+ const filePath = (0, brainfile_path_1.resolveCliBrainfilePath)(file);
47
+ (0, v2_only_1.assertV2Brainfile)(filePath);
48
+ return filePath;
49
+ }
50
+ function unwrap(result, hint) {
51
+ if (!result.success || !result.columns) {
52
+ throw new cli_error_1.CLIError(result.error ?? 'The columns were not changed', errorHandler_1.ExitCode.USER_ERROR, hint);
53
+ }
54
+ return {
55
+ success: true,
56
+ columns: result.columns,
57
+ ...(result.column ? { column: result.column } : {}),
58
+ ...(result.moved ? { moved: result.moved } : {}),
59
+ ...(result.movedTo ? { movedTo: result.movedTo } : {}),
60
+ };
61
+ }
62
+ function printColumns(columns, logger) {
63
+ const idWidth = Math.max('ID'.length, ...columns.map((c) => c.id.length));
64
+ const titleWidth = Math.max('TITLE'.length, ...columns.map((c) => c.title.length));
65
+ logger.log(chalk_1.default.gray(` ${'ID'.padEnd(idWidth)} ${'TITLE'.padEnd(titleWidth)} TASKS`));
66
+ for (const column of columns) {
67
+ const count = String(column.taskCount).padEnd(5);
68
+ const note = column.completionColumn ? chalk_1.default.gray(' completion column') : '';
69
+ logger.log(` ${column.id.padEnd(idWidth)} ${column.title.padEnd(titleWidth)} ${count}${note}`.trimEnd());
70
+ }
71
+ }
72
+ function report(result, options, headline, logger) {
73
+ if (options.json) {
74
+ const { success: _success, ...payload } = result;
75
+ logger.log(JSON.stringify(payload, null, 2));
76
+ return result;
77
+ }
78
+ if (headline) {
79
+ logger.log(chalk_1.default.green(headline));
80
+ logger.log('');
81
+ }
82
+ printColumns(result.columns, logger);
83
+ return result;
84
+ }
85
+ /** `columns` / `columns list`: every column, in order, with its task count. */
86
+ function columnsListCommand(options, logger = logger_1.defaultLogger) {
87
+ const result = unwrap((0, core_1.listColumnsFile)(boardPath(options.file)));
88
+ return report(result, options, null, logger);
89
+ }
90
+ /** `columns add <title>`: a new column, last unless --after or --before. */
91
+ function columnsAddCommand(title, options, logger = logger_1.defaultLogger) {
92
+ if (!title?.trim())
93
+ throw (0, cli_error_1.missingRequired)('<title>', 'brainfile columns add <title> [--id <id>] [--after <column> | --before <column>] [--completion]');
94
+ const result = unwrap((0, core_1.addColumnFile)(boardPath(options.file), {
95
+ title,
96
+ ...(options.id ? { id: options.id } : {}),
97
+ ...(options.after ? { after: options.after } : {}),
98
+ ...(options.before ? { before: options.before } : {}),
99
+ ...(options.completion ? { completionColumn: true } : {}),
100
+ }));
101
+ const column = result.column;
102
+ return report(result, options, `Added column ${column.id} (${column.title}).`, logger);
103
+ }
104
+ /** `columns rename <column> <title>`: a new title; the ID, and the tasks, stay. */
105
+ function columnsRenameCommand(column, title, options, logger = logger_1.defaultLogger) {
106
+ if (!column?.trim() || !title?.trim())
107
+ throw (0, cli_error_1.missingRequired)('<column> and <title>', 'brainfile columns rename <column> <title>');
108
+ const result = unwrap((0, core_1.renameColumnFile)(boardPath(options.file), column, title));
109
+ const renamed = result.column;
110
+ return report(result, options, `Renamed column ${renamed.id} to ${renamed.title}.`, logger);
111
+ }
112
+ /** `columns reorder <column...>`: the ones named first, the rest after in their order. */
113
+ function columnsReorderCommand(order, options, logger = logger_1.defaultLogger) {
114
+ if (!order || order.length === 0)
115
+ throw (0, cli_error_1.missingRequired)('<columns...>', 'brainfile columns reorder <column> [column...]');
116
+ const result = unwrap((0, core_1.reorderColumnsFile)(boardPath(options.file), order));
117
+ return report(result, options, 'Columns reordered.', logger);
118
+ }
119
+ /** `columns remove <column> [--move-to <column>]`. */
120
+ function columnsRemoveCommand(column, options, logger = logger_1.defaultLogger) {
121
+ if (!column?.trim())
122
+ throw (0, cli_error_1.missingRequired)('<column>', 'brainfile columns remove <column> [--move-to <column>]');
123
+ const raw = (0, core_1.removeColumnFile)(boardPath(options.file), column, options.moveTo ? { moveTo: options.moveTo } : {});
124
+ const holdsTasks = !raw.success && !options.moveTo && /holds \d+ task/.test(raw.error ?? '');
125
+ const result = unwrap(raw, holdsTasks ? `To move them first: brainfile columns remove ${column} --move-to <column>` : undefined);
126
+ const removed = result.column;
127
+ const moved = result.moved && result.moved.length > 0 && result.movedTo
128
+ ? `; moved ${result.moved.join(', ')} to ${result.movedTo.id}`
129
+ : '';
130
+ return report(result, options, `Removed column ${removed.id}${moved}.`, logger);
131
+ }
132
+ //# sourceMappingURL=columns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columns.js","sourceRoot":"","sources":["../../src/commands/columns.ts"],"names":[],"mappings":"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"}
@@ -87,20 +87,25 @@ function completeV2(filePath, taskId, force, logger) {
87
87
  }
88
88
  const { doc, filePath: taskPath } = found;
89
89
  const task = doc.task;
90
- const result = (0, core_1.completeTaskFile)(taskPath, dirs.logsDir, { force });
90
+ const types = (0, core_1.readBoardConfig)(filePath)?.config.types;
91
+ const typeName = (0, core_1.resolveDocType)(task.type, types).name;
92
+ const label = typeName.charAt(0).toUpperCase() + typeName.slice(1);
93
+ // Any parent with open children refuses, not only an epic (spec-12);
94
+ // a decision is never completed.
95
+ const result = (0, core_1.completeTaskFile)(taskPath, dirs.logsDir, { force, types });
91
96
  if (!result.success) {
92
97
  if (result.incompleteChildren?.length) {
93
- logger.warn(chalk_1.default.yellow(`Epic ${taskId} has incomplete child tasks:`));
98
+ logger.warn(chalk_1.default.yellow(`${label} ${taskId} has incomplete child tasks:`));
94
99
  for (const child of result.incompleteChildren) {
95
100
  logger.warn(chalk_1.default.yellow(` - ${child.id}: ${child.title}`));
96
101
  }
97
102
  logger.warn(chalk_1.default.yellow('Aborting completion. Re-run with --force to override.'));
98
- throw (0, cli_error_1.operationFailed)(`Epic ${taskId} has ${result.incompleteChildren.length} incomplete child task(s). Use --force to override.`);
103
+ throw (0, cli_error_1.operationFailed)(`${label} ${taskId} has ${result.incompleteChildren.length} incomplete child task(s). Use --force to override.`);
99
104
  }
100
105
  throw (0, cli_error_1.operationFailed)(result.error || `Failed to complete task: ${taskId}`);
101
106
  }
102
107
  if (result.incompleteChildren?.length) {
103
- logger.warn(chalk_1.default.yellow(`Completing epic ${taskId} with --force despite ${result.incompleteChildren.length} incomplete child task(s).`));
108
+ logger.warn(chalk_1.default.yellow(`Completing ${typeName} ${taskId} with --force despite ${result.incompleteChildren.length} incomplete child task(s).`));
104
109
  }
105
110
  const completedAt = result.task?.completedAt ?? new Date().toISOString();
106
111
  logger.log(chalk_1.default.green('Task completed!'));
@@ -1 +1 @@
1
- {"version":3,"file":"complete.js","sourceRoot":"","sources":["../../src/commands/complete.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"complete.js","sourceRoot":"","sources":["../../src/commands/complete.ts"],"names":[],"mappings":"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"}