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,554 +1,37 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.BOARD_GITATTRIBUTES = exports.DEFAULT_MERGE_DRIVER_COMMAND = exports.MERGE_DRIVER_NAME = exports.URL_REMOTE_NAME = exports.AUTOSYNC_CONFIG_KEY = exports.LEGACY_CHECKED_CONFIG_KEY = exports.REMOTE_CONFIG_KEY = void 0;
37
- exports.boardRemote = boardRemote;
38
- exports.boardRemoteName = boardRemoteName;
39
- exports.boardRemoteRef = boardRemoteRef;
40
- exports.boardAutosync = boardAutosync;
41
- exports.setBoardAutosync = setBoardAutosync;
42
- exports.looksLikeRemoteUrl = looksLikeRemoteUrl;
43
- exports.setBoardRemote = setBoardRemote;
44
- exports.registerMergeDriver = registerMergeDriver;
45
- exports.ensureBoardAttributes = ensureBoardAttributes;
46
- exports.readSyncState = readSyncState;
47
- exports.resolveCompleteVersusEdit = resolveCompleteVersusEdit;
48
- exports.syncBoard = syncBoard;
49
- exports.secondsSinceSync = secondsSinceSync;
50
- exports.syncStatusLabel = syncStatusLabel;
51
- exports.pendingChanges = pendingChanges;
52
- exports.boardWebUrl = boardWebUrl;
53
- exports.syncMessage = syncMessage;
54
- /**
55
- * Board sync (spec-9 phase 2): remote configuration and the fetch → merge →
56
- * push algorithm for tracked boards. Everything here runs inside the board
57
- * directory, so the code tree is never touched, and nothing throws on network
58
- * failure — a mutation must never fail because sync failed.
59
- *
60
- * Config keys live in the board's git config (the shared `.git/config` for a
61
- * linked worktree, its own for a standalone repository):
62
- *
63
- * brainfile.remote remote name to sync with (never defaults to origin)
64
- * brainfile.boardName name on that remote, stored as refs/brainfile/<name>
65
- * (see `boardRemoteName`; 0.21.0's remoteBranch is
66
- * still read)
67
- * brainfile.autosync off | push | full
68
- *
69
- * On the remote the board is a ref, not a branch, so it never shows up in the
70
- * host's branch list or "recent pushes" banner. See BOARD_REF_NAMESPACE.
71
- */
72
- const fs = __importStar(require("fs"));
73
- const os = __importStar(require("os"));
74
- const path = __importStar(require("path"));
75
- const board_repo_1 = require("./board-repo");
76
- const merge_driver_1 = require("../commands/merge-driver");
77
- exports.REMOTE_CONFIG_KEY = 'brainfile.remote';
78
- /** Set once this machine has looked for (and moved) a board 0.21.0 pushed as a branch. */
79
- exports.LEGACY_CHECKED_CONFIG_KEY = 'brainfile.legacyBranchChecked';
80
- exports.AUTOSYNC_CONFIG_KEY = 'brainfile.autosync';
81
- /** Remote name used when `--set-remote` is given a URL instead of a name. */
82
- exports.URL_REMOTE_NAME = 'board';
83
- exports.MERGE_DRIVER_NAME = 'brainfile';
84
- exports.DEFAULT_MERGE_DRIVER_COMMAND = 'brainfile merge-driver %O %A %B';
85
- const SYNC_STATE_FILE = path.join('state', 'sync.json');
86
- exports.BOARD_GITATTRIBUTES = [
87
- 'logs/ledger.jsonl merge=union',
88
- 'board/*.md merge=brainfile',
89
- 'logs/*.md merge=brainfile',
90
- 'brainfile.md merge=brainfile',
91
- ];
92
- function configGet(dotDir, key) {
93
- const r = (0, board_repo_1.git)(['config', '--get', key], dotDir);
94
- return r.ok && r.stdout ? r.stdout : null;
95
- }
96
- function configSet(dotDir, key, value) {
97
- return (0, board_repo_1.git)(['config', key, value], dotDir).ok;
98
- }
99
- function boardRemote(dotDir) {
100
- return configGet(dotDir, exports.REMOTE_CONFIG_KEY);
101
- }
102
- /**
103
- * Name of the board on the remote (`refs/brainfile/<name>`). Defaults keep
104
- * the "one private boards repo, one board per project" pattern from
105
- * colliding: `board` for a board inside a code repository, the parent
106
- * folder's basename for a standalone board, `home` for the global board.
107
- */
108
- function boardRemoteName(dotDir) {
109
- const configured = configGet(dotDir, board_repo_1.BOARD_NAME_CONFIG_KEY) ?? configGet(dotDir, board_repo_1.LEGACY_REMOTE_BRANCH_CONFIG_KEY);
110
- if (configured)
111
- return configured;
112
- return defaultName(dotDir, board_repo_1.DEFAULT_BOARD_NAME);
113
- }
114
- function defaultName(dotDir, inRepo) {
115
- if (path.resolve(dotDir) === path.resolve((0, board_repo_1.homeBoardDir)()))
116
- return 'home';
117
- // A standalone board is named after the folder it sits in; anything else
118
- // (a linked board, or a code repo whose board is not checked out yet) is
119
- // the repository's board.
120
- if ((0, board_repo_1.boardRepoKind)(dotDir) === 'standalone' && path.basename(path.resolve(dotDir)) === '.brainfile') {
121
- return path.basename(path.dirname(path.resolve(dotDir))) || inRepo;
122
- }
123
- return inRepo;
124
- }
125
- /** Full ref of the board on the remote, e.g. `refs/brainfile/board`. */
126
- function boardRemoteRef(dotDir) {
127
- return (0, board_repo_1.remoteBoardRef)(boardRemoteName(dotDir));
128
- }
129
- /** The branch 0.21.0 pushed this board to, for the one-time move. */
130
- function legacyRemoteBranch(dotDir) {
131
- return configGet(dotDir, board_repo_1.LEGACY_REMOTE_BRANCH_CONFIG_KEY) ?? defaultName(dotDir, (0, board_repo_1.boardBranch)(dotDir));
132
- }
133
- function boardAutosync(dotDir) {
134
- const value = configGet(dotDir, exports.AUTOSYNC_CONFIG_KEY);
135
- if (value === 'off' || value === 'push' || value === 'full')
136
- return value;
137
- return boardRemote(dotDir) ? 'push' : 'off';
138
- }
139
- function setBoardAutosync(dotDir, mode) {
140
- return configSet(dotDir, exports.AUTOSYNC_CONFIG_KEY, mode);
141
- }
142
- /** True when `target` names a place rather than an existing git remote. */
143
- function looksLikeRemoteUrl(target) {
144
- if (/^[a-z][a-z0-9+.-]*:\/\//i.test(target))
145
- return true; // ssh://, https://, file://
146
- if (/^[^/\s]+@[^/\s]+:/.test(target))
147
- return true; // git@host:path
148
- if (target.startsWith('/') || target.startsWith('.') || target.startsWith('~'))
149
- return true;
150
- if (target.includes('/') && fs.existsSync(target))
151
- return true;
152
- return false;
153
- }
154
- /**
155
- * Point the board at a remote: an existing remote name, or a URL/path that is
156
- * registered as the `board` remote. Throws an Error naming an unknown remote.
157
- * `cwd` may be the board directory or, when no board exists yet, the code
158
- * repository the board will be materialized into.
159
- */
160
- function setBoardRemote(cwd, target, boardName) {
161
- const trimmed = target.trim();
162
- if (!trimmed)
163
- throw new Error('remote is required');
164
- let remote;
165
- if (looksLikeRemoteUrl(trimmed)) {
166
- remote = exports.URL_REMOTE_NAME;
167
- const url = trimmed.startsWith('~/') ? path.join(os.homedir(), trimmed.slice(2)) : trimmed;
168
- const exists = (0, board_repo_1.git)(['remote', 'get-url', remote], cwd).ok;
169
- const r = exists ? (0, board_repo_1.git)(['remote', 'set-url', remote, url], cwd) : (0, board_repo_1.git)(['remote', 'add', remote, url], cwd);
170
- if (!r.ok)
171
- throw new Error(r.stderr || `could not register remote '${remote}'`);
172
- }
173
- else {
174
- remote = trimmed;
175
- if (!(0, board_repo_1.git)(['remote', 'get-url', remote], cwd).ok) {
176
- const known = (0, board_repo_1.git)(['remote'], cwd).stdout.split('\n').filter(Boolean);
177
- const hint = known.length ? ` Known remotes: ${known.join(', ')}.` : '';
178
- throw new Error(`'${remote}' is not a git remote here.${hint} Pass a URL to add one.`);
179
- }
180
- }
181
- if (boardName !== undefined && !/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(boardName)) {
182
- throw new Error(`'${boardName}' is not a usable board name: use letters, digits, '.', '_' or '-'.`);
183
- }
184
- configSet(cwd, exports.REMOTE_CONFIG_KEY, remote);
185
- if (boardName)
186
- configSet(cwd, board_repo_1.BOARD_NAME_CONFIG_KEY, boardName);
187
- registerMergeDriver(cwd);
188
- return {
189
- remote,
190
- url: (0, board_repo_1.git)(['remote', 'get-url', remote], cwd).stdout || null,
191
- remoteRef: boardRemoteRef(cwd),
192
- };
193
- }
194
- /**
195
- * Register the field-level merge driver in the board's git config.
196
- *
197
- * Without an explicit `command` this only fills in a missing driver: a
198
- * driver someone configured on purpose (an absolute path to the CLI, or a
199
- * test's built bundle) is never overwritten by the next sync.
200
- */
201
- function registerMergeDriver(cwd, command) {
202
- const current = configGet(cwd, `merge.${exports.MERGE_DRIVER_NAME}.driver`);
203
- if (command === undefined) {
204
- if (current)
205
- return false;
206
- command = exports.DEFAULT_MERGE_DRIVER_COMMAND;
207
- }
208
- if (current === command)
209
- return false;
210
- configSet(cwd, `merge.${exports.MERGE_DRIVER_NAME}.name`, 'brainfile board merge (field-level, last writer wins)');
211
- return configSet(cwd, `merge.${exports.MERGE_DRIVER_NAME}.driver`, command);
212
- }
213
- /**
214
- * Make sure `.gitattributes` on the board declares the merge strategies.
215
- * Returns true when the file was created or extended (caller commits).
216
- */
217
- function ensureBoardAttributes(dotDir) {
218
- const file = path.join(dotDir, '.gitattributes');
219
- let existing = '';
220
- try {
221
- existing = fs.readFileSync(file, 'utf-8');
222
- }
223
- catch {
224
- /* absent */
225
- }
226
- const lines = existing.split('\n').map((l) => l.trim());
227
- const missing = exports.BOARD_GITATTRIBUTES.filter((l) => !lines.includes(l));
228
- if (missing.length === 0)
229
- return false;
230
- const prefix = existing.length > 0 && !existing.endsWith('\n') ? `${existing}\n` : existing;
231
- fs.writeFileSync(file, `${prefix}${missing.join('\n')}\n`, 'utf-8');
232
- return true;
233
- }
234
- function readSyncState(dotDir) {
235
- try {
236
- const parsed = JSON.parse(fs.readFileSync(path.join(dotDir, SYNC_STATE_FILE), 'utf-8'));
237
- return typeof parsed?.at === 'string' ? parsed : null;
238
- }
239
- catch {
240
- return null;
241
- }
242
- }
243
- function writeSyncState(dotDir, state) {
244
- try {
245
- fs.mkdirSync(path.join(dotDir, 'state'), { recursive: true });
246
- fs.writeFileSync(path.join(dotDir, SYNC_STATE_FILE), `${JSON.stringify(state, null, 2)}\n`, 'utf-8');
247
- }
248
- catch {
249
- /* state is a convenience; never fail sync over it */
250
- }
251
- }
252
- function firstLine(text) {
253
- return text.split('\n').map((l) => l.trim()).find(Boolean) ?? '';
254
- }
255
- function isMissingRemoteRef(stderr) {
256
- return /couldn't find remote ref|Remote branch .* not found|invalid refspec|no such ref/i.test(stderr);
257
- }
258
- function commitCount(dotDir, range) {
259
- const r = (0, board_repo_1.git)(['rev-list', '--count', range], dotDir);
260
- return r.ok ? Number.parseInt(r.stdout, 10) || 0 : 0;
261
- }
262
- /** Merge commits use the git user, with a fallback when none is configured. */
263
- function identityArgs(dotDir) {
264
- const args = ['-c', 'commit.gpgsign=false'];
265
- if (!(0, board_repo_1.git)(['config', '--get', 'user.email'], dotDir).ok) {
266
- args.push('-c', 'user.name=brainfile', '-c', 'user.email=brainfile@localhost');
267
- }
268
- return args;
269
- }
270
- /**
271
- * Complete-vs-edit: one side archived a task (deleted `board/<id>.md`, wrote
272
- * `logs/<id>.md`) while the other edited it. Completion wins; the edit is
273
- * appended to the archived file as a log entry. Returns the paths resolved.
274
- */
275
- function resolveCompleteVersusEdit(dotDir) {
276
- const status = (0, board_repo_1.git)(['status', '--porcelain', '-z'], dotDir);
277
- if (!status.ok)
278
- return [];
279
- const resolved = [];
280
- for (const entry of status.stdout.split('\0')) {
281
- if (entry.length < 4)
282
- continue;
283
- const xy = entry.slice(0, 2);
284
- const file = entry.slice(3);
285
- if (xy !== 'DU' && xy !== 'UD')
286
- continue;
287
- if (!file.startsWith('board/'))
288
- continue;
289
- // DU: deleted by us, modified by them. UD: the reverse.
290
- const editedStage = xy === 'DU' ? 3 : 2;
291
- const base = (0, board_repo_1.git)(['show', `:1:${file}`], dotDir);
292
- const edited = (0, board_repo_1.git)(['show', `:${editedStage}:${file}`], dotDir);
293
- const archived = path.join(dotDir, 'logs', path.basename(file));
294
- if (edited.ok && fs.existsSync(archived)) {
295
- const summary = (0, merge_driver_1.summarizeFieldChanges)(base.ok ? base.stdout : '', edited.stdout);
296
- const entryLine = `- ${new Date().toISOString()}: [sync] edited elsewhere after completion${summary ? ` (${summary})` : ''}`;
297
- let content = fs.readFileSync(archived, 'utf-8');
298
- if (/^## Log\s*$/m.test(content)) {
299
- content = `${content.replace(/\s+$/, '')}\n${entryLine}\n`;
300
- }
301
- else {
302
- content = `${content.replace(/\s+$/, '')}\n\n## Log\n${entryLine}\n`;
303
- }
304
- fs.writeFileSync(archived, content, 'utf-8');
305
- (0, board_repo_1.git)(['add', '--', path.relative(dotDir, archived)], dotDir);
306
- }
307
- if ((0, board_repo_1.git)(['rm', '--quiet', '--cached', '--', file], dotDir).ok) {
308
- try {
309
- fs.rmSync(path.join(dotDir, file), { force: true });
310
- }
311
- catch {
312
- /* already gone */
313
- }
314
- resolved.push(file);
315
- }
316
- }
317
- return resolved;
318
- }
319
- /** Bring `incoming` into HEAD: nothing, a fast-forward, or a merge commit. */
320
- function mergeIncoming(dotDir, incoming, result) {
321
- if ((0, board_repo_1.git)(['merge-base', '--is-ancestor', incoming, 'HEAD'], dotDir).ok)
322
- return { ok: true, pulled: 0 };
323
- const before = (0, board_repo_1.git)(['rev-parse', 'HEAD'], dotDir).stdout;
324
- const id = identityArgs(dotDir);
325
- const merge = (0, board_repo_1.git)([...id, 'merge', '--quiet', '--no-edit', incoming], dotDir);
326
- if (!merge.ok) {
327
- resolveCompleteVersusEdit(dotDir);
328
- const remaining = (0, board_repo_1.unmergedFiles)(dotDir);
329
- if (remaining.length > 0) {
330
- return {
331
- ok: false,
332
- result: {
333
- ...result,
334
- ok: false,
335
- failure: 'conflict',
336
- conflicts: remaining,
337
- warning: `merge left conflicts in ${remaining.join(', ')} — resolve them in ${dotDir}, then run sync again`,
338
- },
339
- };
340
- }
341
- const commit = (0, board_repo_1.git)([...id, 'commit', '--quiet', '--no-edit', '--no-verify'], dotDir);
342
- if (!commit.ok) {
343
- return { ok: false, result: { ...result, ok: false, failure: 'error', warning: `merge commit failed: ${firstLine(commit.stderr)}` } };
344
- }
345
- }
346
- // Count what came from the remote rather than our own merge commit.
347
- return { ok: true, pulled: commitCount(dotDir, `${before}..${incoming}`) };
348
- }
349
- function legacyChecked(dotDir, remote) {
350
- return configGet(dotDir, exports.LEGACY_CHECKED_CONFIG_KEY) === remote;
351
- }
352
- /**
353
- * fetch → fast-forward or merge → push. Runs entirely inside the board
354
- * directory. Never throws; network failures come back as `warning`.
355
- *
356
- * The first sync with a remote also looks for a board that 0.21.0 pushed as
357
- * a branch: it is merged in, published under refs/brainfile/, and the old
358
- * branch is deleted from the remote once nothing on it can be lost.
359
- */
360
- function syncBoard(dotDir, options = {}) {
361
- const push = options.push ?? true;
362
- const result = { ok: true, pulled: 0, pushed: 0, conflicts: [] };
363
- if (!(0, board_repo_1.isTrackedBoard)(dotDir))
364
- return { ...result, skipped: 'not-tracked' };
365
- const remote = boardRemote(dotDir);
366
- if (!remote)
367
- return { ...result, skipped: 'no-remote' };
368
- const name = boardRemoteName(dotDir);
369
- const remoteRef = (0, board_repo_1.remoteBoardRef)(name);
370
- const tracking = (0, board_repo_1.boardTrackingRef)(remote, name);
371
- result.remote = remote;
372
- result.remoteRef = remoteRef;
373
- const checkLegacy = !legacyChecked(dotDir, remote);
374
- // The one-time legacy check needs the remote's state even for a push.
375
- const pull = (options.pull ?? true) || checkLegacy;
376
- // Never sync a board that is mid-merge: a human owns it until it is clean.
377
- const stuck = (0, board_repo_1.unmergedFiles)(dotDir);
378
- if (stuck.length > 0) {
379
- return finish(dotDir, { ...result, ok: false, failure: 'conflict', conflicts: stuck, warning: `unresolved conflicts: ${stuck.join(', ')}` });
380
- }
381
- (0, board_repo_1.commitHandEdits)(dotDir);
382
- if (ensureBoardAttributes(dotDir))
383
- (0, board_repo_1.commitBoard)(dotDir, { message: 'chore: merge attributes' });
384
- registerMergeDriver(dotDir);
385
- let fetched = false;
386
- let legacy = null;
387
- let legacyAbsent = false;
388
- if (pull) {
389
- const fetch = (0, board_repo_1.git)(['fetch', '--quiet', '--no-tags', remote, `+${remoteRef}:${tracking}`], dotDir);
390
- if (fetch.ok) {
391
- fetched = true;
392
- }
393
- else if (!isMissingRemoteRef(fetch.stderr)) {
394
- return finish(dotDir, { ...result, ok: false, failure: 'offline', warning: `fetch from ${remote} failed: ${firstLine(fetch.stderr)}` });
395
- }
396
- else {
397
- // Gone from the remote (or never there): forget the stale position.
398
- (0, board_repo_1.git)(['update-ref', '-d', tracking], dotDir);
399
- }
400
- if (checkLegacy) {
401
- const branch = legacyRemoteBranch(dotDir);
402
- const old = (0, board_repo_1.git)(['fetch', '--quiet', '--no-tags', remote, `refs/heads/${branch}`], dotDir);
403
- if (old.ok) {
404
- legacy = { branch, sha: (0, board_repo_1.git)(['rev-parse', 'FETCH_HEAD'], dotDir).stdout };
405
- }
406
- else if (isMissingRemoteRef(old.stderr)) {
407
- legacyAbsent = true;
408
- }
409
- }
410
- for (const incoming of [fetched ? tracking : null, legacy?.sha ?? null]) {
411
- if (!incoming)
412
- continue;
413
- const merged = mergeIncoming(dotDir, incoming, result);
414
- if (!merged.ok)
415
- return finish(dotDir, merged.result);
416
- result.pulled += merged.pulled;
417
- }
418
- }
419
- if (push) {
420
- const known = (0, board_repo_1.git)(['rev-parse', '--verify', '--quiet', tracking], dotDir).ok;
421
- const ahead = commitCount(dotDir, known ? `${tracking}..HEAD` : 'HEAD');
422
- if (ahead > 0) {
423
- const pushed = (0, board_repo_1.git)(['push', '--quiet', remote, `HEAD:${remoteRef}`], dotDir);
424
- if (!pushed.ok) {
425
- const rejected = /rejected|non-fast-forward|fetch first/i.test(pushed.stderr);
426
- return finish(dotDir, {
427
- ...result,
428
- ok: false,
429
- failure: rejected ? 'rejected' : 'offline',
430
- warning: rejected
431
- ? `push to ${remote} rejected (the remote moved) — run sync again`
432
- : `push to ${remote} failed: ${firstLine(pushed.stderr)}`,
433
- });
434
- }
435
- (0, board_repo_1.git)(['update-ref', tracking, 'HEAD'], dotDir);
436
- result.pushed = ahead;
437
- }
438
- if (legacy && (0, board_repo_1.git)(['merge-base', '--is-ancestor', legacy.sha, tracking], dotDir).ok) {
439
- // Everything on the old branch is now under refs/brainfile/; the lease
440
- // keeps a 0.21.0 machine's push made in the meantime from being lost.
441
- const removed = (0, board_repo_1.git)(['push', '--quiet', `--force-with-lease=refs/heads/${legacy.branch}:${legacy.sha}`, remote, `:refs/heads/${legacy.branch}`], dotDir);
442
- if (removed.ok) {
443
- (0, board_repo_1.git)(['update-ref', '-d', `refs/remotes/${remote}/${legacy.branch}`], dotDir);
444
- result.movedFromBranch = legacy.branch;
445
- configSet(dotDir, exports.LEGACY_CHECKED_CONFIG_KEY, remote);
446
- }
447
- }
448
- }
449
- if (legacyAbsent) {
450
- (0, board_repo_1.git)(['update-ref', '-d', `refs/remotes/${remote}/${legacyRemoteBranch(dotDir)}`], dotDir);
451
- configSet(dotDir, exports.LEGACY_CHECKED_CONFIG_KEY, remote);
452
- }
453
- return finish(dotDir, result);
454
- }
455
- function finish(dotDir, result) {
456
- writeSyncState(dotDir, {
457
- at: new Date().toISOString(),
458
- remote: result.remote ?? '',
459
- remoteRef: result.remoteRef ?? '',
460
- ok: result.ok,
461
- ...(result.warning ? { warning: result.warning } : {}),
462
- });
463
- return result;
464
- }
465
- /** Seconds since the last recorded sync attempt, or null when there was none. */
466
- function secondsSinceSync(dotDir, now = Date.now()) {
467
- const state = readSyncState(dotDir);
468
- if (!state)
469
- return null;
470
- const at = Date.parse(state.at);
471
- return Number.isNaN(at) ? null : Math.max(0, Math.round((now - at) / 1000));
472
- }
473
- /**
474
- * Short status for a header: `synced 12s ago`, `local only` for a tracked
475
- * board nobody else has, `not synced · saved locally` after a failure. Null
476
- * for a plain board.
477
- */
478
- function syncStatusLabel(dotDir, now = Date.now()) {
479
- if (!(0, board_repo_1.isTrackedBoard)(dotDir))
480
- return null;
481
- if (!boardRemote(dotDir))
482
- return 'local only';
483
- const state = readSyncState(dotDir);
484
- if (!state)
485
- return 'not synced yet';
486
- if (!state.ok)
487
- return 'not synced · saved locally';
488
- const seconds = secondsSinceSync(dotDir, now) ?? 0;
489
- const age = seconds < 60 ? `${seconds}s` : seconds < 3600 ? `${Math.round(seconds / 60)}m` : `${Math.round(seconds / 3600)}h`;
490
- return `synced ${age} ago`;
491
- }
492
- /**
493
- * Commits on this machine the remote has not seen yet, judged against the
494
- * last-known remote position (no network). Null when the board is not shared.
495
- */
496
- function pendingChanges(dotDir) {
497
- const remote = boardRemote(dotDir);
498
- if (!remote)
499
- return 0;
500
- const tracking = (0, board_repo_1.boardTrackingRef)(remote, boardRemoteName(dotDir));
501
- const known = (0, board_repo_1.git)(['rev-parse', '--verify', '--quiet', tracking], dotDir).ok;
502
- return commitCount(dotDir, known ? `${tracking}..HEAD` : 'HEAD');
503
- }
504
- /**
505
- * A page where people can see the board on the web, for hosts that show refs
506
- * outside branches: GitHub's commit history accepts a full ref name. Null for
507
- * other hosts.
508
- */
509
- function boardWebUrl(remoteUrl, remoteRef) {
510
- if (!remoteUrl)
511
- return null;
512
- const m = /^(?:https:\/\/(?:[^@/]+@)?github\.com\/|git@github\.com:|ssh:\/\/git@github\.com\/)([^/]+)\/([^/]+?)(?:\.git)?\/?$/.exec(remoteUrl);
513
- return m ? `https://github.com/${m[1]}/${m[2]}/commits/${remoteRef}` : null;
514
- }
515
- const plural = (n, word) => `${n} ${word}${n === 1 ? '' : 's'}`;
516
- /**
517
- * The one sentence a person needs after a sync: what moved, or why nothing
518
- * did and that nothing was lost. `detail` is the technical cause, if any.
519
- */
520
- function syncMessage(result) {
521
- if (result.skipped === 'not-tracked') {
522
- return { tone: 'warn', text: 'This board is plain files on this machine and is not shared. To share it: brainfile migrate --to-branch' };
523
- }
524
- if (result.skipped === 'no-remote') {
525
- return { tone: 'warn', text: 'This board is only on this machine. To share it: brainfile sync --set-remote origin' };
526
- }
527
- const remote = result.remote ?? 'the remote';
528
- if (!result.ok) {
529
- switch (result.failure) {
530
- case 'conflict':
531
- return {
532
- tone: 'warn',
533
- text: `Two edits collided in ${result.conflicts.join(', ')}. Open the file in .brainfile/, keep the right version, then run brainfile sync. Nothing else is shared until then.`,
534
- };
535
- case 'rejected':
536
- return { tone: 'warn', text: `Someone shared changes through ${remote} at the same moment. Run brainfile sync again to combine them. Nothing was lost.` };
537
- case 'offline':
538
- return {
539
- tone: 'warn',
540
- text: `Couldn't reach ${remote}. Nothing was lost: your changes are saved on this machine and will be sent on the next sync.`,
541
- detail: result.warning,
542
- };
543
- default:
544
- return { tone: 'warn', text: `Sync with ${remote} stopped. Your changes are saved on this machine.`, detail: result.warning };
545
- }
546
- }
547
- const parts = [];
548
- if (result.pulled > 0)
549
- parts.push(`received ${plural(result.pulled, 'change')}`);
550
- if (result.pushed > 0)
551
- parts.push(`sent ${plural(result.pushed, 'change')}`);
552
- return { tone: 'ok', text: parts.length ? `Shared through ${remote}: ${parts.join(', ')}.` : `Up to date with ${remote}.` };
553
- }
3
+ exports.boardConflictRelation = exports.boardConflictError = exports.boardConflict = exports.surveyBoards = exports.syncMessage = exports.boardWebUrl = exports.pendingChanges = exports.syncStatusLabel = exports.secondsSinceSync = exports.syncBoard = exports.resolveCompleteVersusEdit = exports.readSyncState = exports.ensureBoardAttributes = exports.registerMergeDriver = exports.setBoardRemote = exports.looksLikeRemoteUrl = exports.setBoardAutosync = exports.boardAutosync = exports.boardRemoteRef = exports.boardRemoteName = exports.boardRemote = exports.BOARD_GITATTRIBUTES = exports.DEFAULT_MERGE_DRIVER_COMMAND = exports.MERGE_DRIVER_NAME = exports.URL_REMOTE_NAME = exports.AUTOSYNC_CONFIG_KEY = exports.LEGACY_CHECKED_CONFIG_KEY = exports.REMOTE_CONFIG_KEY = void 0;
4
+ /**
5
+ * Board sync (spec-9) lives in `@brainfile/core/repo`; re-exported here so
6
+ * CLI modules keep one import path.
7
+ */
8
+ var repo_1 = require("@brainfile/core/repo");
9
+ Object.defineProperty(exports, "REMOTE_CONFIG_KEY", { enumerable: true, get: function () { return repo_1.REMOTE_CONFIG_KEY; } });
10
+ Object.defineProperty(exports, "LEGACY_CHECKED_CONFIG_KEY", { enumerable: true, get: function () { return repo_1.LEGACY_CHECKED_CONFIG_KEY; } });
11
+ Object.defineProperty(exports, "AUTOSYNC_CONFIG_KEY", { enumerable: true, get: function () { return repo_1.AUTOSYNC_CONFIG_KEY; } });
12
+ Object.defineProperty(exports, "URL_REMOTE_NAME", { enumerable: true, get: function () { return repo_1.URL_REMOTE_NAME; } });
13
+ Object.defineProperty(exports, "MERGE_DRIVER_NAME", { enumerable: true, get: function () { return repo_1.MERGE_DRIVER_NAME; } });
14
+ Object.defineProperty(exports, "DEFAULT_MERGE_DRIVER_COMMAND", { enumerable: true, get: function () { return repo_1.DEFAULT_MERGE_DRIVER_COMMAND; } });
15
+ Object.defineProperty(exports, "BOARD_GITATTRIBUTES", { enumerable: true, get: function () { return repo_1.BOARD_GITATTRIBUTES; } });
16
+ Object.defineProperty(exports, "boardRemote", { enumerable: true, get: function () { return repo_1.boardRemote; } });
17
+ Object.defineProperty(exports, "boardRemoteName", { enumerable: true, get: function () { return repo_1.boardRemoteName; } });
18
+ Object.defineProperty(exports, "boardRemoteRef", { enumerable: true, get: function () { return repo_1.boardRemoteRef; } });
19
+ Object.defineProperty(exports, "boardAutosync", { enumerable: true, get: function () { return repo_1.boardAutosync; } });
20
+ Object.defineProperty(exports, "setBoardAutosync", { enumerable: true, get: function () { return repo_1.setBoardAutosync; } });
21
+ Object.defineProperty(exports, "looksLikeRemoteUrl", { enumerable: true, get: function () { return repo_1.looksLikeRemoteUrl; } });
22
+ Object.defineProperty(exports, "setBoardRemote", { enumerable: true, get: function () { return repo_1.setBoardRemote; } });
23
+ Object.defineProperty(exports, "registerMergeDriver", { enumerable: true, get: function () { return repo_1.registerMergeDriver; } });
24
+ Object.defineProperty(exports, "ensureBoardAttributes", { enumerable: true, get: function () { return repo_1.ensureBoardAttributes; } });
25
+ Object.defineProperty(exports, "readSyncState", { enumerable: true, get: function () { return repo_1.readSyncState; } });
26
+ Object.defineProperty(exports, "resolveCompleteVersusEdit", { enumerable: true, get: function () { return repo_1.resolveCompleteVersusEdit; } });
27
+ Object.defineProperty(exports, "syncBoard", { enumerable: true, get: function () { return repo_1.syncBoard; } });
28
+ Object.defineProperty(exports, "secondsSinceSync", { enumerable: true, get: function () { return repo_1.secondsSinceSync; } });
29
+ Object.defineProperty(exports, "syncStatusLabel", { enumerable: true, get: function () { return repo_1.syncStatusLabel; } });
30
+ Object.defineProperty(exports, "pendingChanges", { enumerable: true, get: function () { return repo_1.pendingChanges; } });
31
+ Object.defineProperty(exports, "boardWebUrl", { enumerable: true, get: function () { return repo_1.boardWebUrl; } });
32
+ Object.defineProperty(exports, "syncMessage", { enumerable: true, get: function () { return repo_1.syncMessage; } });
33
+ Object.defineProperty(exports, "surveyBoards", { enumerable: true, get: function () { return repo_1.surveyBoards; } });
34
+ Object.defineProperty(exports, "boardConflict", { enumerable: true, get: function () { return repo_1.boardConflict; } });
35
+ Object.defineProperty(exports, "boardConflictError", { enumerable: true, get: function () { return repo_1.boardConflictError; } });
36
+ Object.defineProperty(exports, "boardConflictRelation", { enumerable: true, get: function () { return repo_1.boardConflictRelation; } });
554
37
  //# sourceMappingURL=board-sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"board-sync.js","sourceRoot":"","sources":["../../src/utils/board-sync.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsGA,kCAEC;AAQD,0CAIC;AAcD,wCAEC;AAOD,sCAIC;AAED,4CAEC;AAGD,gDAMC;AAcD,wCA6BC;AASD,kDASC;AAMD,sDAcC;AAED,sCAOC;AAsCD,8DAqCC;AA8CD,8BA8FC;AAcD,4CAKC;AAOD,0CASC;AAMD,wCAMC;AAOD,kCAIC;AAQD,kCA+BC;AA9iBD;;;;;;;;;;;;;;;;;GAiBG;AACH,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,6CAesB;AACtB,2DAAiE;AAEpD,QAAA,iBAAiB,GAAG,kBAAkB,CAAC;AACpD,0FAA0F;AAC7E,QAAA,yBAAyB,GAAG,+BAA+B,CAAC;AAC5D,QAAA,mBAAmB,GAAG,oBAAoB,CAAC;AACxD,6EAA6E;AAChE,QAAA,eAAe,GAAG,OAAO,CAAC;AAC1B,QAAA,iBAAiB,GAAG,WAAW,CAAC;AAChC,QAAA,4BAA4B,GAAG,iCAAiC,CAAC;AAC9E,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAE3C,QAAA,mBAAmB,GAAG;IACjC,+BAA+B;IAC/B,4BAA4B;IAC5B,2BAA2B;IAC3B,8BAA8B;CAC/B,CAAC;AAuCF,SAAS,SAAS,CAAC,MAAc,EAAE,GAAW;IAC5C,MAAM,CAAC,GAAG,IAAA,gBAAG,EAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED,SAAS,SAAS,CAAC,MAAc,EAAE,GAAW,EAAE,KAAa;IAC3D,OAAO,IAAA,gBAAG,EAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC;AAED,SAAgB,WAAW,CAAC,MAAc;IACxC,OAAO,SAAS,CAAC,MAAM,EAAE,yBAAiB,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,MAAc;IAC5C,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,kCAAqB,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,4CAA+B,CAAC,CAAC;IAClH,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAClC,OAAO,WAAW,CAAC,MAAM,EAAE,+BAAkB,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,MAAc;IACjD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAA,yBAAY,GAAE,CAAC;QAAE,OAAO,MAAM,CAAC;IACzE,yEAAyE;IACzE,yEAAyE;IACzE,0BAA0B;IAC1B,IAAI,IAAA,0BAAa,EAAC,MAAM,CAAC,KAAK,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC;QACnG,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IACrE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,wEAAwE;AACxE,SAAgB,cAAc,CAAC,MAAc;IAC3C,OAAO,IAAA,2BAAc,EAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,qEAAqE;AACrE,SAAS,kBAAkB,CAAC,MAAc;IACxC,OAAO,SAAS,CAAC,MAAM,EAAE,4CAA+B,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,IAAA,wBAAW,EAAC,MAAM,CAAC,CAAC,CAAC;AACxG,CAAC;AAED,SAAgB,aAAa,CAAC,MAAc;IAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,2BAAmB,CAAC,CAAC;IACrD,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1E,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9C,CAAC;AAED,SAAgB,gBAAgB,CAAC,MAAc,EAAE,IAAkB;IACjE,OAAO,SAAS,CAAC,MAAM,EAAE,2BAAmB,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,2EAA2E;AAC3E,SAAgB,kBAAkB,CAAC,MAAc;IAC/C,IAAI,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,4BAA4B;IACtF,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,gBAAgB;IACnE,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5F,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,OAAO,KAAK,CAAC;AACf,CAAC;AAQD;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,GAAW,EAAE,MAAc,EAAE,SAAkB;IAC5E,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACpD,IAAI,MAAc,CAAC;IACnB,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,GAAG,uBAAe,CAAC;QACzB,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3F,MAAM,MAAM,GAAG,IAAA,gBAAG,EAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAA,gBAAG,EAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,gBAAG,EAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3G,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,8BAA8B,MAAM,GAAG,CAAC,CAAC;IAClF,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,OAAO,CAAC;QACjB,IAAI,CAAC,IAAA,gBAAG,EAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,IAAA,gBAAG,EAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACtE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,KAAK,CAAC,IAAI,MAAM,8BAA8B,IAAI,yBAAyB,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,IAAI,SAAS,qEAAqE,CAAC,CAAC;IACtG,CAAC;IACD,SAAS,CAAC,GAAG,EAAE,yBAAiB,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,SAAS;QAAE,SAAS,CAAC,GAAG,EAAE,kCAAqB,EAAE,SAAS,CAAC,CAAC;IAChE,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACzB,OAAO;QACL,MAAM;QACN,GAAG,EAAE,IAAA,gBAAG,EAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI;QAC3D,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,GAAW,EAAE,OAAgB;IAC/D,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,SAAS,yBAAiB,SAAS,CAAC,CAAC;IACpE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,OAAO;YAAE,OAAO,KAAK,CAAC;QAC1B,OAAO,GAAG,oCAA4B,CAAC;IACzC,CAAC;IACD,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACtC,SAAS,CAAC,GAAG,EAAE,SAAS,yBAAiB,OAAO,EAAE,uDAAuD,CAAC,CAAC;IAC3G,OAAO,SAAS,CAAC,GAAG,EAAE,SAAS,yBAAiB,SAAS,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,MAAc;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACjD,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,CAAC;QACH,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,2BAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5F,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,aAAa,CAAC,MAAc;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,CAAC,CAAc,CAAC;QACrG,OAAO,OAAO,MAAM,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,KAAgB;IACtD,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvG,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;IACvD,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACnE,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc;IACxC,OAAO,kFAAkF,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzG,CAAC;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,KAAa;IAChD,MAAM,CAAC,GAAG,IAAA,gBAAG,EAAC,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,+EAA+E;AAC/E,SAAS,YAAY,CAAC,MAAc;IAClC,MAAM,IAAI,GAAa,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IACtD,IAAI,CAAC,IAAA,gBAAG,EAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,gCAAgC,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAgB,yBAAyB,CAAC,MAAc;IACtD,MAAM,MAAM,GAAG,IAAA,gBAAG,EAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAC/B,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;YAAE,SAAS;QACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS;QACzC,wDAAwD;QACxD,MAAM,WAAW,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,IAAA,gBAAG,EAAC,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAA,gBAAG,EAAC,CAAC,MAAM,EAAE,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,IAAA,oCAAqB,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACjF,MAAM,SAAS,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,6CAA6C,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC7H,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjD,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,SAAS,IAAI,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,SAAS,IAAI,CAAC;YACvE,CAAC;YACD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,IAAA,gBAAG,EAAC,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,IAAA,gBAAG,EAAC,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;YAC9D,IAAI,CAAC;gBACH,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAID,8EAA8E;AAC9E,SAAS,aAAa,CAAC,MAAc,EAAE,QAAgB,EAAE,MAAkB;IACzE,IAAI,IAAA,gBAAG,EAAC,CAAC,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACtG,MAAM,MAAM,GAAG,IAAA,gBAAG,EAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC;IACzD,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,IAAA,gBAAG,EAAC,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9E,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACd,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,IAAA,0BAAa,EAAC,MAAM,CAAC,CAAC;QACxC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE;oBACN,GAAG,MAAM;oBACT,EAAE,EAAE,KAAK;oBACT,OAAO,EAAE,UAAU;oBACnB,SAAS,EAAE,SAAS;oBACpB,OAAO,EAAE,2BAA2B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,MAAM,uBAAuB;iBAC5G;aACF,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,IAAA,gBAAG,EAAC,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QACrF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC;QACxI,CAAC;IACH,CAAC;IACD,oEAAoE;IACpE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,GAAG,MAAM,KAAK,QAAQ,EAAE,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,aAAa,CAAC,MAAc,EAAE,MAAc;IACnD,OAAO,SAAS,CAAC,MAAM,EAAE,iCAAyB,CAAC,KAAK,MAAM,CAAC;AACjE,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,SAAS,CAAC,MAAc,EAAE,UAAuB,EAAE;IACjE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;IAClC,MAAM,MAAM,GAAe,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC7E,IAAI,CAAC,IAAA,2BAAc,EAAC,MAAM,CAAC;QAAE,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAC1E,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IACxD,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,IAAA,2BAAc,EAAC,IAAI,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAA,6BAAgB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,MAAM,WAAW,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,sEAAsE;IACtE,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,WAAW,CAAC;IAEnD,2EAA2E;IAC3E,MAAM,KAAK,GAAG,IAAA,0BAAa,EAAC,MAAM,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/I,CAAC;IAED,IAAA,4BAAe,EAAC,MAAM,CAAC,CAAC;IACxB,IAAI,qBAAqB,CAAC,MAAM,CAAC;QAAE,IAAA,wBAAW,EAAC,MAAM,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC;IAC/F,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,MAAM,GAA2C,IAAI,CAAC;IAC1D,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,KAAK,GAAG,IAAA,gBAAG,EAAC,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAClG,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,OAAO,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,MAAM,YAAY,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1I,CAAC;aAAM,CAAC;YACN,oEAAoE;YACpE,IAAA,gBAAG,EAAC,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAA,gBAAG,EAAC,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAC3F,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAA,gBAAG,EAAC,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;YAC5E,CAAC;iBAAM,IAAI,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1C,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;QACH,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;YACxE,IAAI,CAAC,QAAQ;gBAAE,SAAS;YACxB,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;QACjC,CAAC;IACH,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,KAAK,GAAG,IAAA,gBAAG,EAAC,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QAC7E,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACxE,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,IAAA,gBAAG,EAAC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAC7E,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,wCAAwC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9E,OAAO,MAAM,CAAC,MAAM,EAAE;oBACpB,GAAG,MAAM;oBACT,EAAE,EAAE,KAAK;oBACT,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;oBAC1C,OAAO,EAAE,QAAQ;wBACf,CAAC,CAAC,WAAW,MAAM,+CAA+C;wBAClE,CAAC,CAAC,WAAW,MAAM,YAAY,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;iBAC5D,CAAC,CAAC;YACL,CAAC;YACD,IAAA,gBAAG,EAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;QACxB,CAAC;QACD,IAAI,MAAM,IAAI,IAAA,gBAAG,EAAC,CAAC,YAAY,EAAE,eAAe,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;YACpF,uEAAuE;YACvE,sEAAsE;YACtE,MAAM,OAAO,GAAG,IAAA,gBAAG,EACjB,CAAC,MAAM,EAAE,SAAS,EAAE,iCAAiC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,eAAe,MAAM,CAAC,MAAM,EAAE,CAAC,EAC3H,MAAM,CACP,CAAC;YACF,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;gBACf,IAAA,gBAAG,EAAC,CAAC,YAAY,EAAE,IAAI,EAAE,gBAAgB,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC7E,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;gBACvC,SAAS,CAAC,MAAM,EAAE,iCAAyB,EAAE,MAAM,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,IAAA,gBAAG,EAAC,CAAC,YAAY,EAAE,IAAI,EAAE,gBAAgB,MAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC1F,SAAS,CAAC,MAAM,EAAE,iCAAyB,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,MAAM,CAAC,MAAc,EAAE,MAAkB;IAChD,cAAc,CAAC,MAAM,EAAE;QACrB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;QACjC,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iFAAiF;AACjF,SAAgB,gBAAgB,CAAC,MAAc,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC/D,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,MAAc,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC9D,IAAI,CAAC,IAAA,2BAAc,EAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QAAE,OAAO,YAAY,CAAC;IAC9C,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK;QAAE,OAAO,gBAAgB,CAAC;IACpC,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,4BAA4B,CAAC;IACnD,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;IAC9H,OAAO,UAAU,GAAG,MAAM,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,MAAc;IAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IACtB,MAAM,QAAQ,GAAG,IAAA,6BAAgB,EAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,IAAA,gBAAG,EAAC,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IAC7E,OAAO,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,SAAgB,WAAW,CAAC,SAAwB,EAAE,SAAiB;IACrE,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,CAAC,GAAG,oHAAoH,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/I,OAAO,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9E,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,IAAY,EAAU,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAExF;;;GAGG;AACH,SAAgB,WAAW,CAAC,MAAkB;IAC5C,IAAI,MAAM,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yGAAyG,EAAE,CAAC;IAC3I,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qFAAqF,EAAE,CAAC;IACvH,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,YAAY,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,KAAK,UAAU;gBACb,OAAO;oBACL,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,yBAAyB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,qHAAqH;iBAChL,CAAC;YACJ,KAAK,UAAU;gBACb,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAkC,MAAM,kFAAkF,EAAE,CAAC;YAC5J,KAAK,SAAS;gBACZ,OAAO;oBACL,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,kBAAkB,MAAM,+FAA+F;oBAC7H,MAAM,EAAE,MAAM,CAAC,OAAO;iBACvB,CAAC;YACJ;gBACE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,MAAM,mDAAmD,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QAClI,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7E,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB,MAAM,GAAG,EAAE,CAAC;AAC9H,CAAC"}
1
+ {"version":3,"file":"board-sync.js","sourceRoot":"","sources":["../../src/utils/board-sync.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,6CAqC8B;AApC5B,yGAAA,iBAAiB,OAAA;AACjB,iHAAA,yBAAyB,OAAA;AACzB,2GAAA,mBAAmB,OAAA;AACnB,uGAAA,eAAe,OAAA;AACf,yGAAA,iBAAiB,OAAA;AACjB,oHAAA,4BAA4B,OAAA;AAC5B,2GAAA,mBAAmB,OAAA;AACnB,mGAAA,WAAW,OAAA;AACX,uGAAA,eAAe,OAAA;AACf,sGAAA,cAAc,OAAA;AACd,qGAAA,aAAa,OAAA;AACb,wGAAA,gBAAgB,OAAA;AAChB,0GAAA,kBAAkB,OAAA;AAClB,sGAAA,cAAc,OAAA;AACd,2GAAA,mBAAmB,OAAA;AACnB,6GAAA,qBAAqB,OAAA;AACrB,qGAAA,aAAa,OAAA;AACb,iHAAA,yBAAyB,OAAA;AACzB,iGAAA,SAAS,OAAA;AACT,wGAAA,gBAAgB,OAAA;AAChB,uGAAA,eAAe,OAAA;AACf,sGAAA,cAAc,OAAA;AACd,mGAAA,WAAW,OAAA;AACX,mGAAA,WAAW,OAAA;AAMX,oGAAA,YAAY,OAAA;AACZ,qGAAA,aAAa,OAAA;AACb,0GAAA,kBAAkB,OAAA;AAClB,6GAAA,qBAAqB,OAAA"}