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,7 +1,4 @@
1
- import { type AutosyncMode, type SyncResult } from './board-sync';
2
- export declare const AUTOSYNC_DELAY_MS = 5000;
3
- export declare const FETCH_MAX_AGE_SECONDS = 60;
4
- export declare function effectiveAutosync(dotDir: string): AutosyncMode;
1
+ export { AUTOSYNC_DELAY_MS, FETCH_MAX_AGE_SECONDS, effectiveAutosync, fetchBeforeRead } from '@brainfile/core/repo';
5
2
  /** The runnable CLI: the bundle we live in, or the built one next to the sources. */
6
3
  export declare function autosyncCliPath(): string | null;
7
4
  export declare function clearPushLock(dotDir: string): void;
@@ -11,12 +8,6 @@ export declare function clearPushLock(dotDir: string): void;
11
8
  * pending (it will carry this commit too), or there is no CLI to run.
12
9
  */
13
10
  export declare function schedulePush(dotDir: string, delayMs?: number): boolean;
14
- /**
15
- * In `full` mode, bring the board up to date before a read when the last
16
- * sync attempt is older than `maxAgeSeconds`. Returns the sync result, or
17
- * null when nothing was fetched.
18
- */
19
- export declare function fetchBeforeRead(dotDir: string, maxAgeSeconds?: number): SyncResult | null;
20
11
  /** Push after every successful board commit made by this process. */
21
12
  export declare function installAutosync(): void;
22
13
  //# sourceMappingURL=board-autosync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"board-autosync.d.ts","sourceRoot":"","sources":["../../src/utils/board-autosync.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAA2D,MAAM,cAAc,CAAC;AAE3H,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAKxC,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAI9D;AAED,qFAAqF;AACrF,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAO/C;AAuBD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAMlD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,SAAoB,GAAG,OAAO,CAuBjF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,SAAwB,GAAG,UAAU,GAAG,IAAI,CAMxG;AAGD,qEAAqE;AACrE,wBAAgB,eAAe,IAAI,IAAI,CAMtC"}
1
+ {"version":3,"file":"board-autosync.d.ts","sourceRoot":"","sources":["../../src/utils/board-autosync.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMpH,qFAAqF;AACrF,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAO/C;AAuBD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAMlD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,SAAoB,GAAG,OAAO,CAuBjF;AAGD,qEAAqE;AACrE,wBAAgB,eAAe,IAAI,IAAI,CAMtC"}
@@ -33,16 +33,15 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.FETCH_MAX_AGE_SECONDS = exports.AUTOSYNC_DELAY_MS = void 0;
37
- exports.effectiveAutosync = effectiveAutosync;
36
+ exports.fetchBeforeRead = exports.effectiveAutosync = exports.FETCH_MAX_AGE_SECONDS = exports.AUTOSYNC_DELAY_MS = void 0;
38
37
  exports.autosyncCliPath = autosyncCliPath;
39
38
  exports.clearPushLock = clearPushLock;
40
39
  exports.schedulePush = schedulePush;
41
- exports.fetchBeforeRead = fetchBeforeRead;
42
40
  exports.installAutosync = installAutosync;
43
41
  /**
44
42
  * Autosync (spec-9 phase 3): keep a shared board flowing without anyone
45
- * typing `sync`.
43
+ * typing `sync`. The policy (`effectiveAutosync`, `fetchBeforeRead`) lives in
44
+ * `@brainfile/core/repo`; how the CLI carries out a push lives here.
46
45
  *
47
46
  * push after every committed mutation, a detached `brainfile sync --push`
48
47
  * runs a few seconds later so bursts collapse into one push and the
@@ -56,19 +55,17 @@ exports.installAutosync = installAutosync;
56
55
  const fs = __importStar(require("fs"));
57
56
  const path = __importStar(require("path"));
58
57
  const child_process_1 = require("child_process");
58
+ const repo_1 = require("@brainfile/core/repo");
59
59
  const board_repo_1 = require("./board-repo");
60
60
  const board_sync_1 = require("./board-sync");
61
- exports.AUTOSYNC_DELAY_MS = 5000;
62
- exports.FETCH_MAX_AGE_SECONDS = 60;
61
+ var repo_2 = require("@brainfile/core/repo");
62
+ Object.defineProperty(exports, "AUTOSYNC_DELAY_MS", { enumerable: true, get: function () { return repo_2.AUTOSYNC_DELAY_MS; } });
63
+ Object.defineProperty(exports, "FETCH_MAX_AGE_SECONDS", { enumerable: true, get: function () { return repo_2.FETCH_MAX_AGE_SECONDS; } });
64
+ Object.defineProperty(exports, "effectiveAutosync", { enumerable: true, get: function () { return repo_2.effectiveAutosync; } });
65
+ Object.defineProperty(exports, "fetchBeforeRead", { enumerable: true, get: function () { return repo_2.fetchBeforeRead; } });
63
66
  const LOCK_FILE = path.join('state', 'autosync.lock');
64
67
  /** A pending push older than this is assumed dead (crashed child). */
65
68
  const LOCK_STALE_MS = 60000;
66
- function effectiveAutosync(dotDir) {
67
- const override = process.env.BRAINFILE_AUTOSYNC;
68
- if (override === 'off' || override === 'push' || override === 'full')
69
- return override;
70
- return (0, board_sync_1.boardAutosync)(dotDir);
71
- }
72
69
  /** The runnable CLI: the bundle we live in, or the built one next to the sources. */
73
70
  function autosyncCliPath() {
74
71
  const candidates = [
@@ -113,10 +110,10 @@ function clearPushLock(dotDir) {
113
110
  * started; false when autosync is off, no remote is set, a push is already
114
111
  * pending (it will carry this commit too), or there is no CLI to run.
115
112
  */
116
- function schedulePush(dotDir, delayMs = exports.AUTOSYNC_DELAY_MS) {
113
+ function schedulePush(dotDir, delayMs = repo_1.AUTOSYNC_DELAY_MS) {
117
114
  if (!(0, board_repo_1.isTrackedBoard)(dotDir))
118
115
  return false;
119
- const mode = effectiveAutosync(dotDir);
116
+ const mode = (0, repo_1.effectiveAutosync)(dotDir);
120
117
  if (mode === 'off' || !(0, board_sync_1.boardRemote)(dotDir))
121
118
  return false;
122
119
  if (pushPending(dotDir))
@@ -138,21 +135,6 @@ function schedulePush(dotDir, delayMs = exports.AUTOSYNC_DELAY_MS) {
138
135
  return false;
139
136
  }
140
137
  }
141
- /**
142
- * In `full` mode, bring the board up to date before a read when the last
143
- * sync attempt is older than `maxAgeSeconds`. Returns the sync result, or
144
- * null when nothing was fetched.
145
- */
146
- function fetchBeforeRead(dotDir, maxAgeSeconds = exports.FETCH_MAX_AGE_SECONDS) {
147
- if (!(0, board_repo_1.isTrackedBoard)(dotDir))
148
- return null;
149
- if (effectiveAutosync(dotDir) !== 'full')
150
- return null;
151
- const age = (0, board_sync_1.secondsSinceSync)(dotDir);
152
- if (age !== null && age < maxAgeSeconds)
153
- return null;
154
- return (0, board_sync_1.syncBoard)(dotDir, { pull: true, push: false });
155
- }
156
138
  let installed = false;
157
139
  /** Push after every successful board commit made by this process. */
158
140
  function installAutosync() {
@@ -1 +1 @@
1
- {"version":3,"file":"board-autosync.js","sourceRoot":"","sources":["../../src/utils/board-autosync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"board-autosync.js","sourceRoot":"","sources":["../../src/utils/board-autosync.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,0CAOC;AAuBD,sCAMC;AAOD,oCAuBC;AAID,0CAMC;AAxGD;;;;;;;;;;;;;GAaG;AACH,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAsC;AACtC,+CAA4E;AAC5E,6CAAgE;AAChE,6CAA2C;AAE3C,6CAAoH;AAA3G,yGAAA,iBAAiB,OAAA;AAAE,6GAAA,qBAAqB,OAAA;AAAE,yGAAA,iBAAiB,OAAA;AAAE,uGAAA,eAAe,OAAA;AAErF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AACtD,sEAAsE;AACtE,MAAM,aAAa,GAAG,KAAM,CAAC;AAE7B,qFAAqF;AACrF,SAAgB,eAAe;IAC7B,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;KACnD,CAAC;IACF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC1D,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,GAAG,aAAa;YAAE,OAAO,KAAK,CAAC;QAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAChE,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAgB,aAAa,CAAC,MAAc;IAC1C,IAAI,CAAC;QACH,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAC,MAAc,EAAE,OAAO,GAAG,wBAAiB;IACtE,IAAI,CAAC,IAAA,2BAAc,EAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAA,wBAAiB,EAAC,MAAM,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,IAAA,wBAAW,EAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACzD,IAAI,WAAW,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAClH,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAA,qBAAK,EACjB,OAAO,CAAC,QAAQ,EAChB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAC7F,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE,CACrG,CAAC;QACF,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,IAAI,SAAS,GAAG,KAAK,CAAC;AACtB,qEAAqE;AACrE,SAAgB,eAAe;IAC7B,IAAI,SAAS;QAAE,OAAO;IACtB,SAAS,GAAG,IAAI,CAAC;IACjB,IAAA,6BAAgB,EAAC,CAAC,MAAM,EAAE,EAAE;QAC1B,YAAY,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -6,6 +6,14 @@ interface CommandLike {
6
6
  }
7
7
  export declare function topLevelCommandName(command: CommandLike): string;
8
8
  export declare function boardDirForCommand(command: CommandLike): string | null;
9
+ /** Will this invocation change the board? */
10
+ export declare function commandWrites(command: CommandLike): boolean;
11
+ /**
12
+ * Refuse a write while another board in the repository disagrees with this
13
+ * one: writing to either would only widen the gap. Throws a CLIError that
14
+ * names the command to settle it.
15
+ */
16
+ export declare function guardBoardWrite(command: CommandLike, dotDir: string): void;
9
17
  export declare function beforeCommand(command: CommandLike): boolean;
10
18
  export declare function afterCommand(command: CommandLike): boolean;
11
19
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"board-commit-hooks.d.ts","sourceRoot":"","sources":["../../src/utils/board-commit-hooks.ts"],"names":[],"mappings":"AAYA,UAAU,WAAW;IACnB,IAAI,IAAI,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B;AAKD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAQhE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAItE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAQ3D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAI1D"}
1
+ {"version":3,"file":"board-commit-hooks.d.ts","sourceRoot":"","sources":["../../src/utils/board-commit-hooks.ts"],"names":[],"mappings":"AAaA,UAAU,WAAW;IACnB,IAAI,IAAI,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B;AAKD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAQhE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAItE;AAUD,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAiB3D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAI1E;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAS3D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAI1D"}
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.topLevelCommandName = topLevelCommandName;
4
4
  exports.boardDirForCommand = boardDirForCommand;
5
+ exports.commandWrites = commandWrites;
6
+ exports.guardBoardWrite = guardBoardWrite;
5
7
  exports.beforeCommand = beforeCommand;
6
8
  exports.afterCommand = afterCommand;
7
9
  /**
@@ -15,8 +17,9 @@ const actor_1 = require("./actor");
15
17
  const brainfile_path_1 = require("./brainfile-path");
16
18
  const board_autosync_1 = require("./board-autosync");
17
19
  const board_sync_1 = require("./board-sync");
20
+ const cli_error_1 = require("./cli-error");
18
21
  /** Long-running or board-unrelated commands that manage their own commits, or none. */
19
- const SKIP_COMMANDS = new Set(['mcp', 'tui', 'hooks', 'auth', 'sync', 'merge-driver', 'where']);
22
+ const SKIP_COMMANDS = new Set(['mcp', 'tui', 'hooks', 'auth', 'sync', 'merge-driver', 'where', 'adopt', 'merge-boards', 'backups']);
20
23
  function topLevelCommandName(command) {
21
24
  let cursor = command;
22
25
  let name = command.name();
@@ -32,10 +35,51 @@ function boardDirForCommand(command) {
32
35
  const file = command.opts().file;
33
36
  return (0, brainfile_path_1.tryResolveBoardDir)(typeof file === 'string' ? file : undefined);
34
37
  }
38
+ /**
39
+ * Commands that never change the board, or that change how it is stored
40
+ * rather than what it says. With SKIP_COMMANDS (which includes the commands
41
+ * that settle which board is the board, spec-15), everything else is a write.
42
+ */
43
+ const READ_COMMANDS = new Set(['list', 'show', 'search', 'check', 'schema', 'log', 'brief', 'index', 'config', 'init', 'migrate']);
44
+ const READ_SUBCOMMANDS = new Set(['plan list', 'plan show', 'contract graph', 'contract validate', 'columns list']);
45
+ /** Will this invocation change the board? */
46
+ function commandWrites(command) {
47
+ const top = topLevelCommandName(command);
48
+ if (SKIP_COMMANDS.has(top) || READ_COMMANDS.has(top))
49
+ return false;
50
+ if (command.name() !== top && READ_SUBCOMMANDS.has(`${top} ${command.name()}`))
51
+ return false;
52
+ const opts = command.opts();
53
+ switch (top) {
54
+ case 'types': {
55
+ const action = command.args[0];
56
+ return action === 'add';
57
+ }
58
+ case 'template':
59
+ return typeof opts.use === 'string';
60
+ case 'lint':
61
+ return opts.fix === true;
62
+ default:
63
+ return true;
64
+ }
65
+ }
66
+ /**
67
+ * Refuse a write while another board in the repository disagrees with this
68
+ * one: writing to either would only widen the gap. Throws a CLIError that
69
+ * names the command to settle it.
70
+ */
71
+ function guardBoardWrite(command, dotDir) {
72
+ if (!commandWrites(command))
73
+ return;
74
+ const conflict = (0, board_sync_1.boardConflict)(dotDir);
75
+ if (conflict)
76
+ throw new cli_error_1.CLIError((0, board_sync_1.boardConflictError)(conflict));
77
+ }
35
78
  function beforeCommand(command) {
36
79
  const dotDir = boardDirForCommand(command);
37
80
  if (!dotDir)
38
81
  return false;
82
+ guardBoardWrite(command, dotDir);
39
83
  const committed = (0, board_repo_1.commitHandEdits)(dotDir);
40
84
  // autosync=full: reads see other machines' work when the last sync is stale.
41
85
  const fetched = (0, board_autosync_1.fetchBeforeRead)(dotDir);
@@ -1 +1 @@
1
- {"version":3,"file":"board-commit-hooks.js","sourceRoot":"","sources":["../../src/utils/board-commit-hooks.ts"],"names":[],"mappings":";;AAsBA,kDAQC;AAED,gDAIC;AAED,sCAQC;AAED,oCAIC;AApDD;;;;;GAKG;AACH,6CAAsF;AACtF,mCAAsC;AACtC,qDAAsD;AACtD,qDAAmD;AACnD,6CAA2C;AAS3C,uFAAuF;AACvF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;AAEhG,SAAgB,mBAAmB,CAAC,OAAoB;IACtD,IAAI,MAAM,GAAgB,OAAO,CAAC;IAClC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC1B,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACvB,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,kBAAkB,CAAC,OAAoB;IACrD,IAAI,aAAa,CAAC,GAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;IACjC,OAAO,IAAA,mCAAkB,EAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACzE,CAAC;AAED,SAAgB,aAAa,CAAC,OAAoB;IAChD,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,MAAM,SAAS,GAAG,IAAA,4BAAe,EAAC,MAAM,CAAC,CAAC;IAC1C,6EAA6E;IAC7E,MAAM,OAAO,GAAG,IAAA,gCAAe,EAAC,MAAM,CAAC,CAAC;IACxC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,wBAAW,EAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IACnF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,YAAY,CAAC,OAAoB;IAC/C,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO,IAAA,wBAAW,EAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAA,qCAAwB,EAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAA,mBAAW,GAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACzG,CAAC"}
1
+ {"version":3,"file":"board-commit-hooks.js","sourceRoot":"","sources":["../../src/utils/board-commit-hooks.ts"],"names":[],"mappings":";;AAuBA,kDAQC;AAED,gDAIC;AAWD,sCAiBC;AAOD,0CAIC;AAED,sCASC;AAED,oCAIC;AA7FD;;;;;GAKG;AACH,6CAAsF;AACtF,mCAAsC;AACtC,qDAAsD;AACtD,qDAAmD;AACnD,6CAA8E;AAC9E,2CAAuC;AASvC,uFAAuF;AACvF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;AAEpI,SAAgB,mBAAmB,CAAC,OAAoB;IACtD,IAAI,MAAM,GAAgB,OAAO,CAAC;IAClC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC1B,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACvB,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,kBAAkB,CAAC,OAAoB;IACrD,IAAI,aAAa,CAAC,GAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;IACjC,OAAO,IAAA,mCAAkB,EAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACzE,CAAC;AAED;;;;GAIG;AACH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AACnI,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC,CAAC;AAEpH,6CAA6C;AAC7C,SAAgB,aAAa,CAAC,OAAoB;IAChD,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACnE,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7F,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5B,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,OAAO,MAAM,KAAK,KAAK,CAAC;QAC1B,CAAC;QACD,KAAK,UAAU;YACb,OAAO,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC;QACtC,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC;QAC3B;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,OAAoB,EAAE,MAAc;IAClE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO;IACpC,MAAM,QAAQ,GAAG,IAAA,0BAAa,EAAC,MAAM,CAAC,CAAC;IACvC,IAAI,QAAQ;QAAE,MAAM,IAAI,oBAAQ,CAAC,IAAA,+BAAkB,EAAC,QAAQ,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,SAAgB,aAAa,CAAC,OAAoB;IAChD,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,IAAA,4BAAe,EAAC,MAAM,CAAC,CAAC;IAC1C,6EAA6E;IAC7E,MAAM,OAAO,GAAG,IAAA,gCAAe,EAAC,MAAM,CAAC,CAAC;IACxC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,wBAAW,EAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IACnF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,YAAY,CAAC,OAAoB;IAC/C,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO,IAAA,wBAAW,EAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAA,qCAAwB,EAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAA,mBAAW,GAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACzG,CAAC"}
@@ -1,117 +1,4 @@
1
- export declare const DEFAULT_BOARD_BRANCH = "brainfile";
2
- export declare const BOARD_BRANCH_CONFIG_KEY = "brainfile.branch";
3
- /**
4
- * On a remote, a board is stored under `refs/brainfile/<name>` rather than as
5
- * a branch: hosts list, badge and offer pull requests for branches only, so
6
- * the board stays out of the project's branch list while still being pushed,
7
- * fetched and kept like any other ref. Locally the last-known remote position
8
- * lives under `refs/brainfile/remotes/<remote>/<name>`, outside `refs/remotes/`
9
- * so a user's `git fetch --prune` never deletes it.
10
- */
11
- export declare const BOARD_REF_NAMESPACE = "refs/brainfile";
12
- export declare const BOARD_NAME_CONFIG_KEY = "brainfile.boardName";
13
- /** 0.21.0 key: the branch the board was pushed to. Still read as the name. */
14
- export declare const LEGACY_REMOTE_BRANCH_CONFIG_KEY = "brainfile.remoteBranch";
15
- /** Default name for a board that lives in a code repository. */
16
- export declare const DEFAULT_BOARD_NAME = "board";
17
- export declare function remoteBoardRef(name: string): string;
18
- export declare function boardTrackingRef(remote: string, name: string): string;
19
- export declare function gitNetwork(args: string[], cwd: string): GitResult;
20
- export interface GitResult {
21
- ok: boolean;
22
- status: number | null;
23
- stdout: string;
24
- stderr: string;
25
- }
26
- /** Run git synchronously. Never throws; a missing git binary is `ok: false`. */
27
- export declare function git(args: string[], cwd: string, env?: NodeJS.ProcessEnv, timeoutMs?: number): GitResult;
28
- /** Toplevel of the working tree containing `cwd`, or null outside any repo. */
29
- export declare function gitToplevel(cwd: string): string | null;
30
- /** The git directory shared by every worktree of the repo containing `cwd`. */
31
- export declare function gitCommonDir(cwd: string): string | null;
32
- export interface WorktreeEntry {
33
- path: string;
34
- head?: string;
35
- /** Full ref, e.g. `refs/heads/brainfile`; absent when detached or bare. */
36
- branch?: string;
37
- bare: boolean;
38
- detached: boolean;
39
- }
40
- /** `git worktree list --porcelain`, parsed. Empty outside a repo. */
41
- export declare function listWorktrees(cwd: string): WorktreeEntry[];
42
- /** Name of the board branch for the repo containing `cwd` (`brainfile.branch`, default `brainfile`). */
43
- export declare function boardBranch(cwd: string): string;
44
- export type BoardRepoKind = 'linked' | 'standalone';
45
- /**
46
- * How the board directory is tracked: a linked worktree (`.git` is a gitdir
47
- * pointer file), a standalone repository (`.git` is a directory), or null for
48
- * a plain directory.
49
- */
50
- export declare function boardRepoKind(dotDir: string): BoardRepoKind | null;
51
- export declare function isTrackedBoard(dotDir: string): boolean;
52
- /**
53
- * Resolution step 3: from anywhere inside a repo (including a linked code
54
- * worktree that has no `.brainfile/` of its own), find the worktree checked
55
- * out on the board branch.
56
- */
57
- export declare function findTrackedBoardDir(cwd: string): string | null;
58
- /**
59
- * Board names published on `remote` (`refs/brainfile/<name>`), or null when
60
- * the remote could not be asked. One network round trip.
61
- */
62
- export declare function listRemoteBoards(cwd: string, remote: string): string[] | null;
63
- export interface MaterializeOptions {
64
- /** Ask the remote even if a recent lookup found nothing (after `--set-remote`). */
65
- fresh?: boolean;
66
- }
67
- /**
68
- * Resolution step 4: the board is not checked out anywhere (a fresh clone,
69
- * or the directory was removed). Create the worktree at
70
- * `<main worktree>/.brainfile` — or inside the common git dir for bare
71
- * layouts — and hide it from the code branch. Returns the new board
72
- * directory, or null when there is nothing to materialize.
73
- */
74
- export declare function materializeBoardWorktree(cwd: string, options?: MaterializeOptions): string | null;
75
- /** Hide `.brainfile/` from the code branch without touching `.gitignore`. Returns true when an entry was added. */
76
- export declare function ensureExcludeEntry(cwd: string): boolean;
77
- /** Remove the exclude entry, but only the one we wrote (identified by its marker). */
78
- export declare function removeExcludeEntry(cwd: string): boolean;
79
- /** `git worktree add --orphan -b <branch> <dotDir>` (git >= 2.42). */
80
- export declare function createOrphanBoardWorktree(repoCwd: string, dotDir: string, branch: string): void;
81
- /** `git init` inside the board directory for boards outside any repo. */
82
- export declare function initStandaloneBoardRepo(dotDir: string): void;
83
- export declare function boardIsDirty(dotDir: string): boolean;
84
- export declare function boardHasCommits(dotDir: string): boolean;
85
- /** Files with uncommitted changes, relative to the board directory. */
86
- /** Paths still carrying conflict markers from an unfinished merge. */
87
- export declare function unmergedFiles(dotDir: string): string[];
88
- export declare function boardDirtyFiles(dotDir: string): string[];
89
- type CommitListener = (dotDir: string) => void;
90
- /** Run `listener` after every successful board commit made by this process. */
91
- export declare function onBoardCommitted(listener: CommitListener): void;
92
- export interface CommitBoardOptions {
93
- message: string;
94
- /** The agent acting, recorded as a `[name]` suffix; the author stays the git user. */
95
- agent?: string | null;
96
- }
97
- /**
98
- * Stage everything in the board directory and commit it. Returns true when a
99
- * commit was made, false when the board is plain or nothing changed. Never
100
- * throws: a failed commit must not fail the mutation it records.
101
- */
102
- /**
103
- * git does not store empty directories, and a board without `board/` reads
104
- * as legacy on the other side. Keep both alive with a `.gitkeep`.
105
- */
106
- export declare function ensureBoardDirs(dotDir: string): boolean;
107
- export declare function commitBoard(dotDir: string, options: CommitBoardOptions): boolean;
108
- /**
109
- * Commit outstanding hand edits (files changed outside the CLI) before a
110
- * command mutates, so they are never folded into that command's commit.
111
- */
112
- export declare function commitHandEdits(dotDir: string): boolean;
113
- /** The home board: `~/.brainfile`, addressed with `-g` / `--global` or `BRAINFILE_GLOBAL=1`. */
114
- export declare function homeBoardDir(): string;
1
+ export { DEFAULT_BOARD_BRANCH, BOARD_BRANCH_CONFIG_KEY, BOARD_REF_NAMESPACE, BOARD_NAME_CONFIG_KEY, LEGACY_REMOTE_BRANCH_CONFIG_KEY, DEFAULT_BOARD_NAME, remoteBoardRef, boardTrackingRef, gitNetwork, git, gitToplevel, gitCommonDir, listWorktrees, boardBranch, boardRepoKind, isTrackedBoard, findTrackedBoardDir, listRemoteBoards, pruneLostBoardCheckouts, materializeBoardWorktree, ensureExcludeEntry, removeExcludeEntry, createOrphanBoardWorktree, initStandaloneBoardRepo, boardIsDirty, boardHasCommits, unmergedFiles, boardDirtyFiles, onBoardCommitted, ensureBoardDirs, commitBoard, commitHandEdits, homeBoardDir, scheduleBoardCommit, flushBoardCommits, type GitResult, type WorktreeEntry, type BoardRepoKind, type MaterializeOptions, type CommitBoardOptions, } from '@brainfile/core/repo';
115
2
  export declare function isGlobalBoardRequested(argv?: string[]): boolean;
116
3
  interface CommandLike {
117
4
  name(): string;
@@ -124,9 +11,4 @@ interface CommandLike {
124
11
  * `move task-3: in-progress`, `add: Fix login bug`, `contract pickup task-2`.
125
12
  */
126
13
  export declare function describeCommandForCommit(command: CommandLike): string;
127
- /** Queue a commit for a board; bursts of edits within `delayMs` become one commit. */
128
- export declare function scheduleBoardCommit(brainfilePath: string, message: string, delayMs?: number): void;
129
- /** Commit every queued board now. Safe to call from an `exit` handler (synchronous). */
130
- export declare function flushBoardCommits(): void;
131
- export {};
132
14
  //# sourceMappingURL=board-repo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"board-repo.d.ts","sourceRoot":"","sources":["../../src/utils/board-repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"board-repo.d.ts","sourceRoot":"","sources":["../../src/utils/board-repo.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,+BAA+B,EAC/B,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,GAAG,EACH,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,uBAAuB,EACvB,YAAY,EACZ,eAAe,EACf,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAE9B,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAG7E;AAED,UAAU,WAAW;IACnB,IAAI,IAAI,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAerE"}