brainfile 0.18.1 → 0.20.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 (275) hide show
  1. package/README.md +18 -24
  2. package/dist/__tests__/helpers/mcp-wire.d.ts +45 -0
  3. package/dist/__tests__/helpers/mcp-wire.d.ts.map +1 -0
  4. package/dist/__tests__/helpers/mcp-wire.js +133 -0
  5. package/dist/__tests__/helpers/mcp-wire.js.map +1 -0
  6. package/dist/__tests__/helpers/mcp.d.ts +34 -0
  7. package/dist/__tests__/helpers/mcp.d.ts.map +1 -0
  8. package/dist/__tests__/helpers/mcp.js +37 -0
  9. package/dist/__tests__/helpers/mcp.js.map +1 -0
  10. package/dist/chunk-I5SJHUZK.mjs +52 -0
  11. package/dist/chunk-UOCQBEEW.mjs +12583 -0
  12. package/dist/cli.js +8 -479
  13. package/dist/cli.mjs +41334 -0
  14. package/dist/commands/add.d.ts.map +1 -1
  15. package/dist/commands/add.js +28 -37
  16. package/dist/commands/add.js.map +1 -1
  17. package/dist/commands/adr.d.ts +1 -9
  18. package/dist/commands/adr.d.ts.map +1 -1
  19. package/dist/commands/adr.js +11 -88
  20. package/dist/commands/adr.js.map +1 -1
  21. package/dist/commands/archive.d.ts +2 -4
  22. package/dist/commands/archive.d.ts.map +1 -1
  23. package/dist/commands/archive.js +55 -212
  24. package/dist/commands/archive.js.map +1 -1
  25. package/dist/commands/brief.d.ts +31 -0
  26. package/dist/commands/brief.d.ts.map +1 -0
  27. package/dist/commands/brief.js +151 -0
  28. package/dist/commands/brief.js.map +1 -0
  29. package/dist/commands/complete.d.ts +0 -4
  30. package/dist/commands/complete.d.ts.map +1 -1
  31. package/dist/commands/complete.js +14 -168
  32. package/dist/commands/complete.js.map +1 -1
  33. package/dist/commands/contract.d.ts.map +1 -1
  34. package/dist/commands/contract.js +66 -331
  35. package/dist/commands/contract.js.map +1 -1
  36. package/dist/commands/delete.d.ts.map +1 -1
  37. package/dist/commands/delete.js +13 -55
  38. package/dist/commands/delete.js.map +1 -1
  39. package/dist/commands/init.d.ts.map +1 -1
  40. package/dist/commands/init.js +3 -2
  41. package/dist/commands/init.js.map +1 -1
  42. package/dist/commands/list.d.ts.map +1 -1
  43. package/dist/commands/list.js +3 -54
  44. package/dist/commands/list.js.map +1 -1
  45. package/dist/commands/log.js +33 -26
  46. package/dist/commands/log.js.map +1 -1
  47. package/dist/commands/mcp.d.ts +9 -0
  48. package/dist/commands/mcp.d.ts.map +1 -1
  49. package/dist/commands/mcp.js +34 -18
  50. package/dist/commands/mcp.js.map +1 -1
  51. package/dist/commands/migrate.d.ts.map +1 -1
  52. package/dist/commands/migrate.js +14 -15
  53. package/dist/commands/migrate.js.map +1 -1
  54. package/dist/commands/move.d.ts.map +1 -1
  55. package/dist/commands/move.js +31 -126
  56. package/dist/commands/move.js.map +1 -1
  57. package/dist/commands/patch.d.ts.map +1 -1
  58. package/dist/commands/patch.js +22 -92
  59. package/dist/commands/patch.js.map +1 -1
  60. package/dist/commands/plan.d.ts +61 -0
  61. package/dist/commands/plan.d.ts.map +1 -0
  62. package/dist/commands/plan.js +205 -0
  63. package/dist/commands/plan.js.map +1 -0
  64. package/dist/commands/search.d.ts.map +1 -1
  65. package/dist/commands/search.js +20 -146
  66. package/dist/commands/search.js.map +1 -1
  67. package/dist/commands/show.d.ts.map +1 -1
  68. package/dist/commands/show.js +5 -126
  69. package/dist/commands/show.js.map +1 -1
  70. package/dist/commands/subtask.d.ts.map +1 -1
  71. package/dist/commands/subtask.js +19 -135
  72. package/dist/commands/subtask.js.map +1 -1
  73. package/dist/commands/types.d.ts +2 -2
  74. package/dist/commands/types.d.ts.map +1 -1
  75. package/dist/commands/types.js +8 -30
  76. package/dist/commands/types.js.map +1 -1
  77. package/dist/devtools-NE5M3KPM.mjs +92 -0
  78. package/dist/lib/contractRunner.d.ts.map +1 -1
  79. package/dist/lib/contractRunner.js +19 -205
  80. package/dist/lib/contractRunner.js.map +1 -1
  81. package/dist/mcp/helpers.d.ts +11 -16
  82. package/dist/mcp/helpers.d.ts.map +1 -1
  83. package/dist/mcp/helpers.js +9 -46
  84. package/dist/mcp/helpers.js.map +1 -1
  85. package/dist/mcp/schemas.d.ts +297 -0
  86. package/dist/mcp/schemas.d.ts.map +1 -0
  87. package/dist/mcp/schemas.js +328 -0
  88. package/dist/mcp/schemas.js.map +1 -0
  89. package/dist/mcp/tools/brief_tool.d.ts +14 -0
  90. package/dist/mcp/tools/brief_tool.d.ts.map +1 -0
  91. package/dist/mcp/tools/brief_tool.js +58 -0
  92. package/dist/mcp/tools/brief_tool.js.map +1 -0
  93. package/dist/mcp/tools/contract_tool.d.ts +1 -1
  94. package/dist/mcp/tools/contract_tool.d.ts.map +1 -1
  95. package/dist/mcp/tools/contract_tool.js +58 -186
  96. package/dist/mcp/tools/contract_tool.js.map +1 -1
  97. package/dist/mcp/tools/get_task_tool.d.ts +1 -1
  98. package/dist/mcp/tools/get_task_tool.d.ts.map +1 -1
  99. package/dist/mcp/tools/get_task_tool.js +18 -32
  100. package/dist/mcp/tools/get_task_tool.js.map +1 -1
  101. package/dist/mcp/tools/list_tasks_tool.d.ts +1 -1
  102. package/dist/mcp/tools/list_tasks_tool.d.ts.map +1 -1
  103. package/dist/mcp/tools/list_tasks_tool.js +14 -45
  104. package/dist/mcp/tools/list_tasks_tool.js.map +1 -1
  105. package/dist/mcp/tools/search_tool.d.ts +1 -1
  106. package/dist/mcp/tools/search_tool.d.ts.map +1 -1
  107. package/dist/mcp/tools/search_tool.js +33 -101
  108. package/dist/mcp/tools/search_tool.js.map +1 -1
  109. package/dist/mcp/tools/subtask_tool.d.ts +1 -1
  110. package/dist/mcp/tools/subtask_tool.d.ts.map +1 -1
  111. package/dist/mcp/tools/subtask_tool.js +95 -236
  112. package/dist/mcp/tools/subtask_tool.js.map +1 -1
  113. package/dist/mcp/tools/task_add_tool.d.ts +1 -1
  114. package/dist/mcp/tools/task_add_tool.d.ts.map +1 -1
  115. package/dist/mcp/tools/task_add_tool.js +63 -154
  116. package/dist/mcp/tools/task_add_tool.js.map +1 -1
  117. package/dist/mcp/tools/task_complete_tool.d.ts +1 -1
  118. package/dist/mcp/tools/task_complete_tool.d.ts.map +1 -1
  119. package/dist/mcp/tools/task_complete_tool.js +59 -127
  120. package/dist/mcp/tools/task_complete_tool.js.map +1 -1
  121. package/dist/mcp/tools/task_delete_tool.d.ts +1 -1
  122. package/dist/mcp/tools/task_delete_tool.d.ts.map +1 -1
  123. package/dist/mcp/tools/task_delete_tool.js +19 -33
  124. package/dist/mcp/tools/task_delete_tool.js.map +1 -1
  125. package/dist/mcp/tools/task_move_tool.d.ts +1 -1
  126. package/dist/mcp/tools/task_move_tool.d.ts.map +1 -1
  127. package/dist/mcp/tools/task_move_tool.js +53 -150
  128. package/dist/mcp/tools/task_move_tool.js.map +1 -1
  129. package/dist/mcp/tools/task_patch_tool.d.ts +1 -1
  130. package/dist/mcp/tools/task_patch_tool.d.ts.map +1 -1
  131. package/dist/mcp/tools/task_patch_tool.js +49 -113
  132. package/dist/mcp/tools/task_patch_tool.js.map +1 -1
  133. package/dist/open-ZGSQIGEH.mjs +542 -0
  134. package/dist/schemas/board.json +1 -1
  135. package/dist/tui/theme.d.ts +74 -95
  136. package/dist/tui/theme.d.ts.map +1 -1
  137. package/dist/tui/theme.js +113 -110
  138. package/dist/tui/theme.js.map +1 -1
  139. package/dist/tui-H3RI22S4.mjs +23374 -0
  140. package/dist/utils/cli-error.d.ts +20 -0
  141. package/dist/utils/cli-error.d.ts.map +1 -1
  142. package/dist/utils/cli-error.js +36 -0
  143. package/dist/utils/cli-error.js.map +1 -1
  144. package/dist/utils/dot-brainfile.d.ts +0 -4
  145. package/dist/utils/dot-brainfile.d.ts.map +1 -1
  146. package/dist/utils/dot-brainfile.js +0 -17
  147. package/dist/utils/dot-brainfile.js.map +1 -1
  148. package/dist/utils/errorHandler.d.ts +7 -11
  149. package/dist/utils/errorHandler.d.ts.map +1 -1
  150. package/dist/utils/errorHandler.js +8 -19
  151. package/dist/utils/errorHandler.js.map +1 -1
  152. package/package.json +24 -16
  153. package/dist/cli.d.ts +0 -3
  154. package/dist/cli.d.ts.map +0 -1
  155. package/dist/cli.js.map +0 -1
  156. package/dist/commands/rules.d.ts +0 -68
  157. package/dist/commands/rules.d.ts.map +0 -1
  158. package/dist/commands/rules.js +0 -322
  159. package/dist/commands/rules.js.map +0 -1
  160. package/dist/commands/tui.d.ts +0 -6
  161. package/dist/commands/tui.d.ts.map +0 -1
  162. package/dist/commands/tui.js +0 -79
  163. package/dist/commands/tui.js.map +0 -1
  164. package/dist/tui/BrainfileTUI.d.ts +0 -4
  165. package/dist/tui/BrainfileTUI.d.ts.map +0 -1
  166. package/dist/tui/BrainfileTUI.js +0 -272
  167. package/dist/tui/BrainfileTUI.js.map +0 -1
  168. package/dist/tui/actions.d.ts +0 -84
  169. package/dist/tui/actions.d.ts.map +0 -1
  170. package/dist/tui/actions.js +0 -1251
  171. package/dist/tui/actions.js.map +0 -1
  172. package/dist/tui/components/ColumnTabs.d.ts +0 -9
  173. package/dist/tui/components/ColumnTabs.d.ts.map +0 -1
  174. package/dist/tui/components/ColumnTabs.js +0 -34
  175. package/dist/tui/components/ColumnTabs.js.map +0 -1
  176. package/dist/tui/components/Header.d.ts +0 -15
  177. package/dist/tui/components/Header.d.ts.map +0 -1
  178. package/dist/tui/components/Header.js +0 -48
  179. package/dist/tui/components/Header.js.map +0 -1
  180. package/dist/tui/components/HelpOverlay.d.ts +0 -9
  181. package/dist/tui/components/HelpOverlay.d.ts.map +0 -1
  182. package/dist/tui/components/HelpOverlay.js +0 -116
  183. package/dist/tui/components/HelpOverlay.js.map +0 -1
  184. package/dist/tui/components/LogsPanel.d.ts +0 -16
  185. package/dist/tui/components/LogsPanel.d.ts.map +0 -1
  186. package/dist/tui/components/LogsPanel.js +0 -115
  187. package/dist/tui/components/LogsPanel.js.map +0 -1
  188. package/dist/tui/components/MainPanelTabs.d.ts +0 -10
  189. package/dist/tui/components/MainPanelTabs.d.ts.map +0 -1
  190. package/dist/tui/components/MainPanelTabs.js +0 -56
  191. package/dist/tui/components/MainPanelTabs.js.map +0 -1
  192. package/dist/tui/components/ManualBorder.d.ts +0 -42
  193. package/dist/tui/components/ManualBorder.d.ts.map +0 -1
  194. package/dist/tui/components/ManualBorder.js +0 -56
  195. package/dist/tui/components/ManualBorder.js.map +0 -1
  196. package/dist/tui/components/Overlays.d.ts +0 -41
  197. package/dist/tui/components/Overlays.d.ts.map +0 -1
  198. package/dist/tui/components/Overlays.js +0 -127
  199. package/dist/tui/components/Overlays.js.map +0 -1
  200. package/dist/tui/components/ProgressBar.d.ts +0 -8
  201. package/dist/tui/components/ProgressBar.d.ts.map +0 -1
  202. package/dist/tui/components/ProgressBar.js +0 -35
  203. package/dist/tui/components/ProgressBar.js.map +0 -1
  204. package/dist/tui/components/RulesPanel.d.ts +0 -25
  205. package/dist/tui/components/RulesPanel.d.ts.map +0 -1
  206. package/dist/tui/components/RulesPanel.js +0 -139
  207. package/dist/tui/components/RulesPanel.js.map +0 -1
  208. package/dist/tui/components/SearchBar.d.ts +0 -8
  209. package/dist/tui/components/SearchBar.d.ts.map +0 -1
  210. package/dist/tui/components/SearchBar.js +0 -38
  211. package/dist/tui/components/SearchBar.js.map +0 -1
  212. package/dist/tui/components/StackedTaskList.d.ts +0 -27
  213. package/dist/tui/components/StackedTaskList.d.ts.map +0 -1
  214. package/dist/tui/components/StackedTaskList.js +0 -120
  215. package/dist/tui/components/StackedTaskList.js.map +0 -1
  216. package/dist/tui/components/StatusBar.d.ts +0 -14
  217. package/dist/tui/components/StatusBar.d.ts.map +0 -1
  218. package/dist/tui/components/StatusBar.js +0 -42
  219. package/dist/tui/components/StatusBar.js.map +0 -1
  220. package/dist/tui/components/TaskCard.d.ts +0 -25
  221. package/dist/tui/components/TaskCard.d.ts.map +0 -1
  222. package/dist/tui/components/TaskCard.js +0 -221
  223. package/dist/tui/components/TaskCard.js.map +0 -1
  224. package/dist/tui/components/TaskCardMeasure.d.ts +0 -31
  225. package/dist/tui/components/TaskCardMeasure.d.ts.map +0 -1
  226. package/dist/tui/components/TaskCardMeasure.js +0 -133
  227. package/dist/tui/components/TaskCardMeasure.js.map +0 -1
  228. package/dist/tui/components/TaskDetail.d.ts +0 -13
  229. package/dist/tui/components/TaskDetail.d.ts.map +0 -1
  230. package/dist/tui/components/TaskDetail.js +0 -64
  231. package/dist/tui/components/TaskDetail.js.map +0 -1
  232. package/dist/tui/components/TaskList.d.ts +0 -12
  233. package/dist/tui/components/TaskList.d.ts.map +0 -1
  234. package/dist/tui/components/TaskList.js +0 -75
  235. package/dist/tui/components/TaskList.js.map +0 -1
  236. package/dist/tui/components/index.d.ts +0 -31
  237. package/dist/tui/components/index.d.ts.map +0 -1
  238. package/dist/tui/components/index.js +0 -43
  239. package/dist/tui/components/index.js.map +0 -1
  240. package/dist/tui/hooks/index.d.ts +0 -3
  241. package/dist/tui/hooks/index.d.ts.map +0 -1
  242. package/dist/tui/hooks/index.js +0 -8
  243. package/dist/tui/hooks/index.js.map +0 -1
  244. package/dist/tui/hooks/useBrainfileLoader.d.ts +0 -5
  245. package/dist/tui/hooks/useBrainfileLoader.d.ts.map +0 -1
  246. package/dist/tui/hooks/useBrainfileLoader.js +0 -237
  247. package/dist/tui/hooks/useBrainfileLoader.js.map +0 -1
  248. package/dist/tui/hooks/useKeyboardNavigation.d.ts +0 -20
  249. package/dist/tui/hooks/useKeyboardNavigation.d.ts.map +0 -1
  250. package/dist/tui/hooks/useKeyboardNavigation.js +0 -806
  251. package/dist/tui/hooks/useKeyboardNavigation.js.map +0 -1
  252. package/dist/tui/index.d.ts +0 -10
  253. package/dist/tui/index.d.ts.map +0 -1
  254. package/dist/tui/index.js +0 -38
  255. package/dist/tui/index.js.map +0 -1
  256. package/dist/tui/types.d.ts +0 -53
  257. package/dist/tui/types.d.ts.map +0 -1
  258. package/dist/tui/types.js +0 -12
  259. package/dist/tui/types.js.map +0 -1
  260. package/dist/tui/utils.d.ts +0 -24
  261. package/dist/tui/utils.d.ts.map +0 -1
  262. package/dist/tui/utils.js +0 -161
  263. package/dist/tui/utils.js.map +0 -1
  264. package/dist/utils/board-types.d.ts +0 -13
  265. package/dist/utils/board-types.d.ts.map +0 -1
  266. package/dist/utils/board-types.js +0 -7
  267. package/dist/utils/board-types.js.map +0 -1
  268. package/dist/utils/contractSpec.d.ts +0 -13
  269. package/dist/utils/contractSpec.d.ts.map +0 -1
  270. package/dist/utils/contractSpec.js +0 -61
  271. package/dist/utils/contractSpec.js.map +0 -1
  272. package/dist/utils/strict-validation.d.ts +0 -8
  273. package/dist/utils/strict-validation.d.ts.map +0 -1
  274. package/dist/utils/strict-validation.js +0 -41
  275. package/dist/utils/strict-validation.js.map +0 -1
package/README.md CHANGED
@@ -17,9 +17,9 @@ brainfile init
17
17
  ```
18
18
 
19
19
  This creates the standard v2 structure:
20
- - `.brainfile/brainfile.md` (Configuration, rules, definitions)
20
+ - `.brainfile/brainfile.md` (Configuration: columns, types, agent instructions)
21
21
  - `.brainfile/board/` (Active tasks)
22
- - `.brainfile/logs/` (Completed task files)
22
+ - `.brainfile/logs/` (Completed task files and `ledger.jsonl`)
23
23
 
24
24
  The board comes pre-configured with `To Do` and `In Progress` columns.
25
25
 
@@ -157,23 +157,17 @@ brainfile contract validate -t task-45
157
157
 
158
158
  ## ADR Promotion
159
159
 
160
- Architecture Decision Records (ADRs) are first-class task files. You can promote an ADR into a project rule.
160
+ Architecture Decision Records (ADRs) are first-class task files. Promote an ADR to mark it accepted and archive it to `logs/`. Accepted ADRs show up in `brainfile brief`.
161
161
 
162
162
  ```bash
163
163
  # 1. Create an ADR
164
164
  brainfile add -t "Use Postgres for all user data" --type adr -c todo
165
165
 
166
- # 2. Promote it to a rule
167
- brainfile adr promote -t adr-1 --category always
166
+ # 2. Promote it
167
+ brainfile adr promote -t adr-1
168
168
  ```
169
169
 
170
- **Categories:**
171
- - `always`: Strict rules (e.g., "Always use TypeScript")
172
- - `never`: Prohibitions (e.g., "Never commit secrets")
173
- - `prefer`: Guidelines (e.g., "Prefer functional components")
174
- - `context`: informational context
175
-
176
- Promoted rules are added to `.brainfile/brainfile.md`, and the promoted ADR file moves to `.brainfile/logs/`.
170
+ The ADR file moves to `.brainfile/logs/` with `status: promoted`. Project guidance belongs in `agent.instructions` (or `brainfile lint --fix` will fold a legacy `rules:` block there).
177
171
 
178
172
  ## TUI (Terminal UI)
179
173
 
@@ -184,22 +178,22 @@ brainfile # No arguments launches the TUI
184
178
  brainfile tui # Explicit subcommand also works
185
179
  ```
186
180
 
187
- ### Panels
188
- - **Tasks (`1`)**: Kanban view of active tasks.
189
- - **Rules (`2`)**: Active rules and configuration.
190
- - **Logs (`3`)**: Completed task files.
181
+ Completed work is the `L` done view, not a column and not a stop on `t`. `e` opens the document in `$EDITOR`.
191
182
 
192
183
  ### Keyboard Shortcuts
193
184
  | Key | Action |
194
185
  |-----|--------|
195
- | `tab` / `shift+tab` | Next / previous column in wide mode |
196
- | `j` / `k` | Down / up |
197
- | `enter` | Expand or collapse the selected task |
198
- | `n` | New task |
199
- | `m` | Move task |
200
- | `e` | Edit task in `$EDITOR` |
201
- | `/` | Search |
202
- | `?` | Show help |
186
+ | `j` / `k` | Move selection |
187
+ | `h` / `l` / `tab` | Cycle column |
188
+ | `enter` | Open detail |
189
+ | `t` | Cycle type |
190
+ | `L` | Toggle done view |
191
+ | `space` | Collapse parent / toggle subtask in detail |
192
+ | `a` | Add |
193
+ | `c` | Complete |
194
+ | `e` | Edit in `$EDITOR` |
195
+ | `/` | Filter |
196
+ | `?` | Help |
203
197
  | `q` | Quit |
204
198
 
205
199
  ## AI Integration
@@ -0,0 +1,45 @@
1
+ export type Era = 'legacy' | 'modern';
2
+ export interface ToolResult {
3
+ content?: Array<{
4
+ type: string;
5
+ text?: string;
6
+ }>;
7
+ structuredContent?: unknown;
8
+ isError?: boolean;
9
+ }
10
+ export interface AdvertisedTool {
11
+ name: string;
12
+ description?: string;
13
+ inputSchema?: Record<string, unknown>;
14
+ outputSchema?: Record<string, unknown>;
15
+ }
16
+ /**
17
+ * An MCP client speaking raw JSON-RPC to a real server over an in-memory
18
+ * transport. No `@modelcontextprotocol/client` package is installed, so the
19
+ * wire protocol is driven by hand.
20
+ */
21
+ export declare class WireClient {
22
+ private readonly era;
23
+ private nextId;
24
+ private readonly pending;
25
+ private readonly clientTransport;
26
+ private readonly handle;
27
+ private constructor();
28
+ /** Opens a connection in the given era and completes the handshake. */
29
+ static open(brainfilePath: string, era: Era): Promise<WireClient>;
30
+ /**
31
+ * The 2026 era carries a `_meta` envelope on every request; the 2025 era
32
+ * carries none and its wire stays byte-identical to a plain stdio server.
33
+ */
34
+ private envelope;
35
+ private handshake;
36
+ request(method: string, params?: Record<string, unknown>, opts?: {
37
+ envelope?: boolean;
38
+ }): Promise<any>;
39
+ listTools(): Promise<AdvertisedTool[]>;
40
+ callTool(name: string, args?: Record<string, unknown>): Promise<ToolResult>;
41
+ /** The text of the first `type: 'text'` content block, if any. */
42
+ static text(result: ToolResult): string | undefined;
43
+ close(): Promise<void>;
44
+ }
45
+ //# sourceMappingURL=mcp-wire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-wire.d.ts","sourceRoot":"","sources":["../../../src/__tests__/helpers/mcp-wire.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAQtC,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED;;;;GAIG;AACH,qBAAa,UAAU;IAYnB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAXtB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGpB;IACJ,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoB;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IAEpD,OAAO;IAoBP,uEAAuE;WAC1D,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;IAWvE;;;OAGG;IACH,OAAO,CAAC,QAAQ;YAQF,SAAS;IAwBjB,OAAO,CACX,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,IAAI,GAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAO,GAChC,OAAO,CAAC,GAAG,CAAC;IAsBT,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAKtC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAIrF,kEAAkE;IAClE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS;IAI7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WireClient = void 0;
4
+ /**
5
+ * Drives the REAL MCP server over a real transport, in-process.
6
+ *
7
+ * `FakeMcpServer` (./mcp.ts) captures handler functions and calls them
8
+ * directly, which is fine for handler logic but structurally cannot see any
9
+ * of the SDK behaviour this helper exists to test: zod input parsing,
10
+ * `outputSchema` validation, the era-specific wire codec, or the
11
+ * `structuredContent` projection. Those only happen inside `McpServer` +
12
+ * `serveStdio`.
13
+ *
14
+ * `serveStdio` owns the era decision for a connection (the opening exchange
15
+ * picks it and pins one server instance), and it accepts a caller-supplied
16
+ * transport — so an `InMemoryTransport` linked pair gets the genuine
17
+ * two-era code path without spawning a process or requiring a built bundle.
18
+ */
19
+ const server_1 = require("@modelcontextprotocol/server");
20
+ const stdio_1 = require("@modelcontextprotocol/server/stdio");
21
+ const mcp_1 = require("../../commands/mcp");
22
+ /** Wire constants, matching @modelcontextprotocol/core's exported keys. */
23
+ const PROTOCOL_VERSION_META_KEY = 'io.modelcontextprotocol/protocolVersion';
24
+ const CLIENT_CAPABILITIES_META_KEY = 'io.modelcontextprotocol/clientCapabilities';
25
+ const MODERN_PROTOCOL_VERSION = '2026-07-28';
26
+ const LEGACY_PROTOCOL_VERSION = '2025-11-25';
27
+ /**
28
+ * An MCP client speaking raw JSON-RPC to a real server over an in-memory
29
+ * transport. No `@modelcontextprotocol/client` package is installed, so the
30
+ * wire protocol is driven by hand.
31
+ */
32
+ class WireClient {
33
+ constructor(clientTransport, handle, era) {
34
+ this.era = era;
35
+ this.nextId = 1;
36
+ this.pending = new Map();
37
+ this.clientTransport = clientTransport;
38
+ this.handle = handle;
39
+ this.clientTransport.onmessage = (message) => {
40
+ if (message?.id === undefined)
41
+ return;
42
+ const waiter = this.pending.get(message.id);
43
+ if (!waiter)
44
+ return;
45
+ this.pending.delete(message.id);
46
+ if (message.error) {
47
+ waiter.reject(new Error(`${message.error.code}: ${message.error.message}`));
48
+ }
49
+ else {
50
+ waiter.resolve(message.result);
51
+ }
52
+ };
53
+ }
54
+ /** Opens a connection in the given era and completes the handshake. */
55
+ static async open(brainfilePath, era) {
56
+ const [clientTransport, serverTransport] = server_1.InMemoryTransport.createLinkedPair();
57
+ const handle = (0, stdio_1.serveStdio)(() => (0, mcp_1.createBrainfileMcpServer)(brainfilePath), {
58
+ transport: serverTransport,
59
+ });
60
+ const client = new WireClient(clientTransport, handle, era);
61
+ await clientTransport.start();
62
+ await client.handshake();
63
+ return client;
64
+ }
65
+ /**
66
+ * The 2026 era carries a `_meta` envelope on every request; the 2025 era
67
+ * carries none and its wire stays byte-identical to a plain stdio server.
68
+ */
69
+ envelope() {
70
+ if (this.era !== 'modern')
71
+ return undefined;
72
+ return {
73
+ [PROTOCOL_VERSION_META_KEY]: MODERN_PROTOCOL_VERSION,
74
+ [CLIENT_CAPABILITIES_META_KEY]: {},
75
+ };
76
+ }
77
+ async handshake() {
78
+ if (this.era === 'legacy') {
79
+ await this.request('initialize', {
80
+ protocolVersion: LEGACY_PROTOCOL_VERSION,
81
+ capabilities: {},
82
+ clientInfo: { name: 'wire-test', version: '0.0.0' },
83
+ }, { envelope: false });
84
+ await this.clientTransport.send({
85
+ jsonrpc: '2.0',
86
+ method: 'notifications/initialized',
87
+ params: {},
88
+ });
89
+ return;
90
+ }
91
+ await this.request('server/discover', {
92
+ protocolVersions: [MODERN_PROTOCOL_VERSION],
93
+ clientInfo: { name: 'wire-test', version: '0.0.0' },
94
+ });
95
+ }
96
+ async request(method, params = {}, opts = {}) {
97
+ const id = this.nextId++;
98
+ const env = opts.envelope === false ? undefined : this.envelope();
99
+ const message = {
100
+ jsonrpc: '2.0',
101
+ id,
102
+ method,
103
+ params: env ? { ...params, _meta: env } : params,
104
+ };
105
+ const result = new Promise((resolve, reject) => {
106
+ this.pending.set(id, { resolve, reject });
107
+ setTimeout(() => {
108
+ if (this.pending.has(id)) {
109
+ this.pending.delete(id);
110
+ reject(new Error(`timeout waiting for ${method}`));
111
+ }
112
+ }, 15000).unref?.();
113
+ });
114
+ await this.clientTransport.send(message);
115
+ return result;
116
+ }
117
+ async listTools() {
118
+ const result = await this.request('tools/list', {});
119
+ return result.tools ?? [];
120
+ }
121
+ async callTool(name, args = {}) {
122
+ return this.request('tools/call', { name, arguments: args });
123
+ }
124
+ /** The text of the first `type: 'text'` content block, if any. */
125
+ static text(result) {
126
+ return result.content?.find((b) => b.type === 'text')?.text;
127
+ }
128
+ async close() {
129
+ await this.handle.close();
130
+ }
131
+ }
132
+ exports.WireClient = WireClient;
133
+ //# sourceMappingURL=mcp-wire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-wire.js","sourceRoot":"","sources":["../../../src/__tests__/helpers/mcp-wire.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Minimal MCP server stub for exercising tool handlers directly in tests.
3
+ *
4
+ * Tool modules call `server.registerTool(name, definition, handler)`; this
5
+ * captures the handler so tests can invoke it with a plain args object,
6
+ * bypassing transport and zod parsing.
7
+ */
8
+ export type McpToolHandler = (args: any) => Promise<{
9
+ content: Array<{
10
+ type: 'text';
11
+ text: string;
12
+ }>;
13
+ isError?: boolean;
14
+ }>;
15
+ export declare class FakeMcpServer {
16
+ readonly handlers: Map<string, McpToolHandler>;
17
+ registerTool(name: string, _definition: unknown, handler: McpToolHandler): void;
18
+ handler(name: string): McpToolHandler;
19
+ }
20
+ /** Extract the plain text payload from an MCP tool result. */
21
+ export declare function mcpText(result: {
22
+ content: Array<{
23
+ type: 'text';
24
+ text: string;
25
+ }>;
26
+ }): string;
27
+ /** Parse an MCP tool result whose text payload is JSON. */
28
+ export declare function mcpJson<T = any>(result: {
29
+ content: Array<{
30
+ type: 'text';
31
+ text: string;
32
+ }>;
33
+ }): T;
34
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/__tests__/helpers/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IAClD,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC,CAAC;AAEH,qBAAa,aAAa;IACxB,QAAQ,CAAC,QAAQ,8BAAqC;IAEtD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAI/E,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;CAOtC;AAED,8DAA8D;AAC9D,wBAAgB,OAAO,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GAAG,MAAM,CAE1F;AAED,2DAA2D;AAC3D,wBAAgB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GAAG,CAAC,CAE9F"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ /**
3
+ * Minimal MCP server stub for exercising tool handlers directly in tests.
4
+ *
5
+ * Tool modules call `server.registerTool(name, definition, handler)`; this
6
+ * captures the handler so tests can invoke it with a plain args object,
7
+ * bypassing transport and zod parsing.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.FakeMcpServer = void 0;
11
+ exports.mcpText = mcpText;
12
+ exports.mcpJson = mcpJson;
13
+ class FakeMcpServer {
14
+ constructor() {
15
+ this.handlers = new Map();
16
+ }
17
+ registerTool(name, _definition, handler) {
18
+ this.handlers.set(name, handler);
19
+ }
20
+ handler(name) {
21
+ const found = this.handlers.get(name);
22
+ if (!found) {
23
+ throw new Error(`Tool not registered: ${name}`);
24
+ }
25
+ return found;
26
+ }
27
+ }
28
+ exports.FakeMcpServer = FakeMcpServer;
29
+ /** Extract the plain text payload from an MCP tool result. */
30
+ function mcpText(result) {
31
+ return result.content.map((c) => c.text).join('\n');
32
+ }
33
+ /** Parse an MCP tool result whose text payload is JSON. */
34
+ function mcpJson(result) {
35
+ return JSON.parse(mcpText(result));
36
+ }
37
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/__tests__/helpers/mcp.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAwBH,0BAEC;AAGD,0BAEC;AAxBD,MAAa,aAAa;IAA1B;QACW,aAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IAaxD,CAAC;IAXC,YAAY,CAAC,IAAY,EAAE,WAAoB,EAAE,OAAuB;QACtE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAdD,sCAcC;AAED,8DAA8D;AAC9D,SAAgB,OAAO,CAAC,MAA0D;IAChF,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,2DAA2D;AAC3D,SAAgB,OAAO,CAAU,MAA0D;IACzF,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { createRequire as __brainfileCreateRequire } from 'node:module';
2
+ import { fileURLToPath as __brainfileFileURLToPath } from 'node:url';
3
+ import { dirname as __brainfileDirname } from 'node:path';
4
+ const require = __brainfileCreateRequire(import.meta.url);
5
+ const __filename = __brainfileFileURLToPath(import.meta.url);
6
+ const __dirname = __brainfileDirname(__filename);
7
+ var __create = Object.create;
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __getProtoOf = Object.getPrototypeOf;
12
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
13
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
14
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
15
+ }) : x)(function(x) {
16
+ if (typeof require !== "undefined") return require.apply(this, arguments);
17
+ throw Error('Dynamic require of "' + x + '" is not supported');
18
+ });
19
+ var __commonJS = (cb, mod) => function __require2() {
20
+ try {
21
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
22
+ } catch (e) {
23
+ throw mod = 0, e;
24
+ }
25
+ };
26
+ var __export = (target, all) => {
27
+ for (var name in all)
28
+ __defProp(target, name, { get: all[name], enumerable: true });
29
+ };
30
+ var __copyProps = (to, from, except, desc) => {
31
+ if (from && typeof from === "object" || typeof from === "function") {
32
+ for (let key of __getOwnPropNames(from))
33
+ if (!__hasOwnProp.call(to, key) && key !== except)
34
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
35
+ }
36
+ return to;
37
+ };
38
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
39
+ // If the importer is in node compatibility mode or this is not an ESM
40
+ // file that has been converted to a CommonJS file using a Babel-
41
+ // compatible transform (i.e. "__esModule" has not been set), then set
42
+ // "default" to the CommonJS "module.exports" for node compatibility.
43
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
44
+ mod
45
+ ));
46
+
47
+ export {
48
+ __require,
49
+ __commonJS,
50
+ __export,
51
+ __toESM
52
+ };