brainfile 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. package/README.md +222 -0
  2. package/dist/__tests__/helpers/v2.d.ts +12 -0
  3. package/dist/__tests__/helpers/v2.d.ts.map +1 -0
  4. package/dist/__tests__/helpers/v2.js +73 -0
  5. package/dist/__tests__/helpers/v2.js.map +1 -0
  6. package/dist/cli.d.ts +3 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +480 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/commands/add.d.ts +34 -0
  11. package/dist/commands/add.d.ts.map +1 -0
  12. package/dist/commands/add.js +255 -0
  13. package/dist/commands/add.js.map +1 -0
  14. package/dist/commands/adr.d.ts +22 -0
  15. package/dist/commands/adr.d.ts.map +1 -0
  16. package/dist/commands/adr.js +195 -0
  17. package/dist/commands/adr.js.map +1 -0
  18. package/dist/commands/archive.d.ts +20 -0
  19. package/dist/commands/archive.d.ts.map +1 -0
  20. package/dist/commands/archive.js +590 -0
  21. package/dist/commands/archive.js.map +1 -0
  22. package/dist/commands/auth.d.ts +26 -0
  23. package/dist/commands/auth.d.ts.map +1 -0
  24. package/dist/commands/auth.js +245 -0
  25. package/dist/commands/auth.js.map +1 -0
  26. package/dist/commands/complete.d.ts +30 -0
  27. package/dist/commands/complete.d.ts.map +1 -0
  28. package/dist/commands/complete.js +267 -0
  29. package/dist/commands/complete.js.map +1 -0
  30. package/dist/commands/config.d.ts +29 -0
  31. package/dist/commands/config.d.ts.map +1 -0
  32. package/dist/commands/config.js +210 -0
  33. package/dist/commands/config.js.map +1 -0
  34. package/dist/commands/contract.d.ts +84 -0
  35. package/dist/commands/contract.d.ts.map +1 -0
  36. package/dist/commands/contract.js +715 -0
  37. package/dist/commands/contract.js.map +1 -0
  38. package/dist/commands/delete.d.ts +8 -0
  39. package/dist/commands/delete.d.ts.map +1 -0
  40. package/dist/commands/delete.js +139 -0
  41. package/dist/commands/delete.js.map +1 -0
  42. package/dist/commands/hooks.d.ts +35 -0
  43. package/dist/commands/hooks.d.ts.map +1 -0
  44. package/dist/commands/hooks.js +324 -0
  45. package/dist/commands/hooks.js.map +1 -0
  46. package/dist/commands/init.d.ts +7 -0
  47. package/dist/commands/init.d.ts.map +1 -0
  48. package/dist/commands/init.js +118 -0
  49. package/dist/commands/init.js.map +1 -0
  50. package/dist/commands/lint.d.ts +16 -0
  51. package/dist/commands/lint.d.ts.map +1 -0
  52. package/dist/commands/lint.js +123 -0
  53. package/dist/commands/lint.js.map +1 -0
  54. package/dist/commands/list.d.ts +20 -0
  55. package/dist/commands/list.d.ts.map +1 -0
  56. package/dist/commands/list.js +175 -0
  57. package/dist/commands/list.js.map +1 -0
  58. package/dist/commands/log.d.ts +52 -0
  59. package/dist/commands/log.d.ts.map +1 -0
  60. package/dist/commands/log.js +246 -0
  61. package/dist/commands/log.js.map +1 -0
  62. package/dist/commands/mcp.d.ts +3 -0
  63. package/dist/commands/mcp.d.ts.map +1 -0
  64. package/dist/commands/mcp.js +96 -0
  65. package/dist/commands/mcp.js.map +1 -0
  66. package/dist/commands/migrate.d.ts +16 -0
  67. package/dist/commands/migrate.d.ts.map +1 -0
  68. package/dist/commands/migrate.js +388 -0
  69. package/dist/commands/migrate.js.map +1 -0
  70. package/dist/commands/move.d.ts +16 -0
  71. package/dist/commands/move.d.ts.map +1 -0
  72. package/dist/commands/move.js +225 -0
  73. package/dist/commands/move.js.map +1 -0
  74. package/dist/commands/patch.d.ts +17 -0
  75. package/dist/commands/patch.d.ts.map +1 -0
  76. package/dist/commands/patch.js +226 -0
  77. package/dist/commands/patch.js.map +1 -0
  78. package/dist/commands/restore.d.ts +8 -0
  79. package/dist/commands/restore.d.ts.map +1 -0
  80. package/dist/commands/restore.js +111 -0
  81. package/dist/commands/restore.js.map +1 -0
  82. package/dist/commands/rules.d.ts +68 -0
  83. package/dist/commands/rules.d.ts.map +1 -0
  84. package/dist/commands/rules.js +322 -0
  85. package/dist/commands/rules.js.map +1 -0
  86. package/dist/commands/schema.d.ts +31 -0
  87. package/dist/commands/schema.d.ts.map +1 -0
  88. package/dist/commands/schema.js +374 -0
  89. package/dist/commands/schema.js.map +1 -0
  90. package/dist/commands/search.d.ts +33 -0
  91. package/dist/commands/search.d.ts.map +1 -0
  92. package/dist/commands/search.js +209 -0
  93. package/dist/commands/search.js.map +1 -0
  94. package/dist/commands/show.d.ts +20 -0
  95. package/dist/commands/show.d.ts.map +1 -0
  96. package/dist/commands/show.js +272 -0
  97. package/dist/commands/show.js.map +1 -0
  98. package/dist/commands/subtask.d.ts +12 -0
  99. package/dist/commands/subtask.d.ts.map +1 -0
  100. package/dist/commands/subtask.js +212 -0
  101. package/dist/commands/subtask.js.map +1 -0
  102. package/dist/commands/template.d.ts +17 -0
  103. package/dist/commands/template.d.ts.map +1 -0
  104. package/dist/commands/template.js +149 -0
  105. package/dist/commands/template.js.map +1 -0
  106. package/dist/commands/tui.d.ts +6 -0
  107. package/dist/commands/tui.d.ts.map +1 -0
  108. package/dist/commands/tui.js +79 -0
  109. package/dist/commands/tui.js.map +1 -0
  110. package/dist/commands/types.d.ts +40 -0
  111. package/dist/commands/types.d.ts.map +1 -0
  112. package/dist/commands/types.js +242 -0
  113. package/dist/commands/types.js.map +1 -0
  114. package/dist/index.d.ts +10 -0
  115. package/dist/index.d.ts.map +1 -0
  116. package/dist/index.js +29 -0
  117. package/dist/index.js.map +1 -0
  118. package/dist/lib/contractRunner.d.ts +59 -0
  119. package/dist/lib/contractRunner.d.ts.map +1 -0
  120. package/dist/lib/contractRunner.js +511 -0
  121. package/dist/lib/contractRunner.js.map +1 -0
  122. package/dist/mcp/helpers.d.ts +32 -0
  123. package/dist/mcp/helpers.d.ts.map +1 -0
  124. package/dist/mcp/helpers.js +125 -0
  125. package/dist/mcp/helpers.js.map +1 -0
  126. package/dist/mcp/tools/contract.d.ts +25 -0
  127. package/dist/mcp/tools/contract.d.ts.map +1 -0
  128. package/dist/mcp/tools/contract.js +33 -0
  129. package/dist/mcp/tools/contract.js.map +1 -0
  130. package/dist/mcp/tools/contract_tool.d.ts +3 -0
  131. package/dist/mcp/tools/contract_tool.d.ts.map +1 -0
  132. package/dist/mcp/tools/contract_tool.js +328 -0
  133. package/dist/mcp/tools/contract_tool.js.map +1 -0
  134. package/dist/mcp/tools/get_task_tool.d.ts +3 -0
  135. package/dist/mcp/tools/get_task_tool.d.ts.map +1 -0
  136. package/dist/mcp/tools/get_task_tool.js +55 -0
  137. package/dist/mcp/tools/get_task_tool.js.map +1 -0
  138. package/dist/mcp/tools/list_tasks_tool.d.ts +3 -0
  139. package/dist/mcp/tools/list_tasks_tool.d.ts.map +1 -0
  140. package/dist/mcp/tools/list_tasks_tool.js +82 -0
  141. package/dist/mcp/tools/list_tasks_tool.js.map +1 -0
  142. package/dist/mcp/tools/search_tool.d.ts +3 -0
  143. package/dist/mcp/tools/search_tool.d.ts.map +1 -0
  144. package/dist/mcp/tools/search_tool.js +155 -0
  145. package/dist/mcp/tools/search_tool.js.map +1 -0
  146. package/dist/mcp/tools/subtask_tool.d.ts +3 -0
  147. package/dist/mcp/tools/subtask_tool.d.ts.map +1 -0
  148. package/dist/mcp/tools/subtask_tool.js +321 -0
  149. package/dist/mcp/tools/subtask_tool.js.map +1 -0
  150. package/dist/mcp/tools/task_add_tool.d.ts +3 -0
  151. package/dist/mcp/tools/task_add_tool.d.ts.map +1 -0
  152. package/dist/mcp/tools/task_add_tool.js +196 -0
  153. package/dist/mcp/tools/task_add_tool.js.map +1 -0
  154. package/dist/mcp/tools/task_complete_tool.d.ts +3 -0
  155. package/dist/mcp/tools/task_complete_tool.d.ts.map +1 -0
  156. package/dist/mcp/tools/task_complete_tool.js +265 -0
  157. package/dist/mcp/tools/task_complete_tool.js.map +1 -0
  158. package/dist/mcp/tools/task_delete_tool.d.ts +3 -0
  159. package/dist/mcp/tools/task_delete_tool.d.ts.map +1 -0
  160. package/dist/mcp/tools/task_delete_tool.js +87 -0
  161. package/dist/mcp/tools/task_delete_tool.js.map +1 -0
  162. package/dist/mcp/tools/task_move_tool.d.ts +3 -0
  163. package/dist/mcp/tools/task_move_tool.d.ts.map +1 -0
  164. package/dist/mcp/tools/task_move_tool.js +187 -0
  165. package/dist/mcp/tools/task_move_tool.js.map +1 -0
  166. package/dist/mcp/tools/task_patch_tool.d.ts +3 -0
  167. package/dist/mcp/tools/task_patch_tool.d.ts.map +1 -0
  168. package/dist/mcp/tools/task_patch_tool.js +189 -0
  169. package/dist/mcp/tools/task_patch_tool.js.map +1 -0
  170. package/dist/schemas/base.json +159 -0
  171. package/dist/schemas/board.json +290 -0
  172. package/dist/tui/BrainfileTUI.d.ts +4 -0
  173. package/dist/tui/BrainfileTUI.d.ts.map +1 -0
  174. package/dist/tui/BrainfileTUI.js +272 -0
  175. package/dist/tui/BrainfileTUI.js.map +1 -0
  176. package/dist/tui/actions.d.ts +84 -0
  177. package/dist/tui/actions.d.ts.map +1 -0
  178. package/dist/tui/actions.js +1251 -0
  179. package/dist/tui/actions.js.map +1 -0
  180. package/dist/tui/components/ColumnTabs.d.ts +9 -0
  181. package/dist/tui/components/ColumnTabs.d.ts.map +1 -0
  182. package/dist/tui/components/ColumnTabs.js +34 -0
  183. package/dist/tui/components/ColumnTabs.js.map +1 -0
  184. package/dist/tui/components/Header.d.ts +15 -0
  185. package/dist/tui/components/Header.d.ts.map +1 -0
  186. package/dist/tui/components/Header.js +48 -0
  187. package/dist/tui/components/Header.js.map +1 -0
  188. package/dist/tui/components/HelpOverlay.d.ts +9 -0
  189. package/dist/tui/components/HelpOverlay.d.ts.map +1 -0
  190. package/dist/tui/components/HelpOverlay.js +116 -0
  191. package/dist/tui/components/HelpOverlay.js.map +1 -0
  192. package/dist/tui/components/LogsPanel.d.ts +16 -0
  193. package/dist/tui/components/LogsPanel.d.ts.map +1 -0
  194. package/dist/tui/components/LogsPanel.js +115 -0
  195. package/dist/tui/components/LogsPanel.js.map +1 -0
  196. package/dist/tui/components/MainPanelTabs.d.ts +10 -0
  197. package/dist/tui/components/MainPanelTabs.d.ts.map +1 -0
  198. package/dist/tui/components/MainPanelTabs.js +56 -0
  199. package/dist/tui/components/MainPanelTabs.js.map +1 -0
  200. package/dist/tui/components/ManualBorder.d.ts +42 -0
  201. package/dist/tui/components/ManualBorder.d.ts.map +1 -0
  202. package/dist/tui/components/ManualBorder.js +56 -0
  203. package/dist/tui/components/ManualBorder.js.map +1 -0
  204. package/dist/tui/components/Overlays.d.ts +41 -0
  205. package/dist/tui/components/Overlays.d.ts.map +1 -0
  206. package/dist/tui/components/Overlays.js +127 -0
  207. package/dist/tui/components/Overlays.js.map +1 -0
  208. package/dist/tui/components/ProgressBar.d.ts +8 -0
  209. package/dist/tui/components/ProgressBar.d.ts.map +1 -0
  210. package/dist/tui/components/ProgressBar.js +35 -0
  211. package/dist/tui/components/ProgressBar.js.map +1 -0
  212. package/dist/tui/components/RulesPanel.d.ts +25 -0
  213. package/dist/tui/components/RulesPanel.d.ts.map +1 -0
  214. package/dist/tui/components/RulesPanel.js +139 -0
  215. package/dist/tui/components/RulesPanel.js.map +1 -0
  216. package/dist/tui/components/SearchBar.d.ts +8 -0
  217. package/dist/tui/components/SearchBar.d.ts.map +1 -0
  218. package/dist/tui/components/SearchBar.js +38 -0
  219. package/dist/tui/components/SearchBar.js.map +1 -0
  220. package/dist/tui/components/StackedTaskList.d.ts +27 -0
  221. package/dist/tui/components/StackedTaskList.d.ts.map +1 -0
  222. package/dist/tui/components/StackedTaskList.js +120 -0
  223. package/dist/tui/components/StackedTaskList.js.map +1 -0
  224. package/dist/tui/components/StatusBar.d.ts +14 -0
  225. package/dist/tui/components/StatusBar.d.ts.map +1 -0
  226. package/dist/tui/components/StatusBar.js +42 -0
  227. package/dist/tui/components/StatusBar.js.map +1 -0
  228. package/dist/tui/components/TaskCard.d.ts +25 -0
  229. package/dist/tui/components/TaskCard.d.ts.map +1 -0
  230. package/dist/tui/components/TaskCard.js +221 -0
  231. package/dist/tui/components/TaskCard.js.map +1 -0
  232. package/dist/tui/components/TaskCardMeasure.d.ts +31 -0
  233. package/dist/tui/components/TaskCardMeasure.d.ts.map +1 -0
  234. package/dist/tui/components/TaskCardMeasure.js +133 -0
  235. package/dist/tui/components/TaskCardMeasure.js.map +1 -0
  236. package/dist/tui/components/TaskDetail.d.ts +13 -0
  237. package/dist/tui/components/TaskDetail.d.ts.map +1 -0
  238. package/dist/tui/components/TaskDetail.js +64 -0
  239. package/dist/tui/components/TaskDetail.js.map +1 -0
  240. package/dist/tui/components/TaskList.d.ts +12 -0
  241. package/dist/tui/components/TaskList.d.ts.map +1 -0
  242. package/dist/tui/components/TaskList.js +75 -0
  243. package/dist/tui/components/TaskList.js.map +1 -0
  244. package/dist/tui/components/index.d.ts +31 -0
  245. package/dist/tui/components/index.d.ts.map +1 -0
  246. package/dist/tui/components/index.js +43 -0
  247. package/dist/tui/components/index.js.map +1 -0
  248. package/dist/tui/hooks/index.d.ts +3 -0
  249. package/dist/tui/hooks/index.d.ts.map +1 -0
  250. package/dist/tui/hooks/index.js +8 -0
  251. package/dist/tui/hooks/index.js.map +1 -0
  252. package/dist/tui/hooks/useBrainfileLoader.d.ts +5 -0
  253. package/dist/tui/hooks/useBrainfileLoader.d.ts.map +1 -0
  254. package/dist/tui/hooks/useBrainfileLoader.js +237 -0
  255. package/dist/tui/hooks/useBrainfileLoader.js.map +1 -0
  256. package/dist/tui/hooks/useKeyboardNavigation.d.ts +20 -0
  257. package/dist/tui/hooks/useKeyboardNavigation.d.ts.map +1 -0
  258. package/dist/tui/hooks/useKeyboardNavigation.js +806 -0
  259. package/dist/tui/hooks/useKeyboardNavigation.js.map +1 -0
  260. package/dist/tui/index.d.ts +10 -0
  261. package/dist/tui/index.d.ts.map +1 -0
  262. package/dist/tui/index.js +38 -0
  263. package/dist/tui/index.js.map +1 -0
  264. package/dist/tui/theme.d.ts +119 -0
  265. package/dist/tui/theme.d.ts.map +1 -0
  266. package/dist/tui/theme.js +138 -0
  267. package/dist/tui/theme.js.map +1 -0
  268. package/dist/tui/types.d.ts +53 -0
  269. package/dist/tui/types.d.ts.map +1 -0
  270. package/dist/tui/types.js +12 -0
  271. package/dist/tui/types.js.map +1 -0
  272. package/dist/tui/utils.d.ts +24 -0
  273. package/dist/tui/utils.d.ts.map +1 -0
  274. package/dist/tui/utils.js +161 -0
  275. package/dist/tui/utils.js.map +1 -0
  276. package/dist/utils/archive.d.ts +57 -0
  277. package/dist/utils/archive.d.ts.map +1 -0
  278. package/dist/utils/archive.js +304 -0
  279. package/dist/utils/archive.js.map +1 -0
  280. package/dist/utils/auth-store.d.ts +69 -0
  281. package/dist/utils/auth-store.d.ts.map +1 -0
  282. package/dist/utils/auth-store.js +308 -0
  283. package/dist/utils/auth-store.js.map +1 -0
  284. package/dist/utils/board-types.d.ts +13 -0
  285. package/dist/utils/board-types.d.ts.map +1 -0
  286. package/dist/utils/board-types.js +7 -0
  287. package/dist/utils/board-types.js.map +1 -0
  288. package/dist/utils/brainfile-finder.d.ts +12 -0
  289. package/dist/utils/brainfile-finder.d.ts.map +1 -0
  290. package/dist/utils/brainfile-finder.js +69 -0
  291. package/dist/utils/brainfile-finder.js.map +1 -0
  292. package/dist/utils/brainfile-path.d.ts +10 -0
  293. package/dist/utils/brainfile-path.d.ts.map +1 -0
  294. package/dist/utils/brainfile-path.js +88 -0
  295. package/dist/utils/brainfile-path.js.map +1 -0
  296. package/dist/utils/cli-error.d.ts +44 -0
  297. package/dist/utils/cli-error.d.ts.map +1 -0
  298. package/dist/utils/cli-error.js +85 -0
  299. package/dist/utils/cli-error.js.map +1 -0
  300. package/dist/utils/config.d.ts +119 -0
  301. package/dist/utils/config.d.ts.map +1 -0
  302. package/dist/utils/config.js +304 -0
  303. package/dist/utils/config.js.map +1 -0
  304. package/dist/utils/contractSpec.d.ts +13 -0
  305. package/dist/utils/contractSpec.d.ts.map +1 -0
  306. package/dist/utils/contractSpec.js +61 -0
  307. package/dist/utils/contractSpec.js.map +1 -0
  308. package/dist/utils/dot-brainfile.d.ts +9 -0
  309. package/dist/utils/dot-brainfile.d.ts.map +1 -0
  310. package/dist/utils/dot-brainfile.js +74 -0
  311. package/dist/utils/dot-brainfile.js.map +1 -0
  312. package/dist/utils/errorHandler.d.ts +106 -0
  313. package/dist/utils/errorHandler.d.ts.map +1 -0
  314. package/dist/utils/errorHandler.js +223 -0
  315. package/dist/utils/errorHandler.js.map +1 -0
  316. package/dist/utils/git-helper.d.ts +17 -0
  317. package/dist/utils/git-helper.d.ts.map +1 -0
  318. package/dist/utils/git-helper.js +62 -0
  319. package/dist/utils/git-helper.js.map +1 -0
  320. package/dist/utils/github-auth.d.ts +56 -0
  321. package/dist/utils/github-auth.d.ts.map +1 -0
  322. package/dist/utils/github-auth.js +341 -0
  323. package/dist/utils/github-auth.js.map +1 -0
  324. package/dist/utils/hook-parser.d.ts +15 -0
  325. package/dist/utils/hook-parser.d.ts.map +1 -0
  326. package/dist/utils/hook-parser.js +69 -0
  327. package/dist/utils/hook-parser.js.map +1 -0
  328. package/dist/utils/hook-settings.d.ts +27 -0
  329. package/dist/utils/hook-settings.d.ts.map +1 -0
  330. package/dist/utils/hook-settings.js +364 -0
  331. package/dist/utils/hook-settings.js.map +1 -0
  332. package/dist/utils/linear-auth.d.ts +59 -0
  333. package/dist/utils/linear-auth.d.ts.map +1 -0
  334. package/dist/utils/linear-auth.js +295 -0
  335. package/dist/utils/linear-auth.js.map +1 -0
  336. package/dist/utils/logger.d.ts +34 -0
  337. package/dist/utils/logger.d.ts.map +1 -0
  338. package/dist/utils/logger.js +56 -0
  339. package/dist/utils/logger.js.map +1 -0
  340. package/dist/utils/strict-validation.d.ts +8 -0
  341. package/dist/utils/strict-validation.d.ts.map +1 -0
  342. package/dist/utils/strict-validation.js +41 -0
  343. package/dist/utils/strict-validation.js.map +1 -0
  344. package/dist/utils/v2-detect.d.ts +28 -0
  345. package/dist/utils/v2-detect.d.ts.map +1 -0
  346. package/dist/utils/v2-detect.js +112 -0
  347. package/dist/utils/v2-detect.js.map +1 -0
  348. package/dist/utils/v2-only.d.ts +9 -0
  349. package/dist/utils/v2-only.d.ts.map +1 -0
  350. package/dist/utils/v2-only.js +64 -0
  351. package/dist/utils/v2-only.js.map +1 -0
  352. package/dist/utils/workspace-format.d.ts +25 -0
  353. package/dist/utils/workspace-format.d.ts.map +1 -0
  354. package/dist/utils/workspace-format.js +106 -0
  355. package/dist/utils/workspace-format.js.map +1 -0
  356. package/dist/validation/command-lint.d.ts +11 -0
  357. package/dist/validation/command-lint.d.ts.map +1 -0
  358. package/dist/validation/command-lint.js +88 -0
  359. package/dist/validation/command-lint.js.map +1 -0
  360. package/package.json +69 -0
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ /**
3
+ * Authentication commands for Brainfile CLI
4
+ *
5
+ * Commands:
6
+ * - brainfile auth github [--token <token>]
7
+ * - brainfile auth linear --token <token>
8
+ * - brainfile auth status
9
+ * - brainfile auth logout <provider>
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ var __importDefault = (this && this.__importDefault) || function (mod) {
47
+ return (mod && mod.__esModule) ? mod : { "default": mod };
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.githubAuthCommand = githubAuthCommand;
51
+ exports.linearAuthCommand = linearAuthCommand;
52
+ exports.authStatusCommand = authStatusCommand;
53
+ exports.authLogoutCommand = authLogoutCommand;
54
+ const chalk_1 = __importDefault(require("chalk"));
55
+ const readline = __importStar(require("readline"));
56
+ const auth_store_1 = require("../utils/auth-store");
57
+ const github_auth_1 = require("../utils/github-auth");
58
+ const linear_auth_1 = require("../utils/linear-auth");
59
+ const config_1 = require("../utils/config");
60
+ const errorHandler_1 = require("../utils/errorHandler");
61
+ // ============================================================================
62
+ // Helper Functions
63
+ // ============================================================================
64
+ async function promptSetDefaultDestination(destination) {
65
+ const currentConfig = (0, config_1.getArchiveConfig)();
66
+ // Skip if already set to this destination
67
+ if (currentConfig.default === destination) {
68
+ return;
69
+ }
70
+ const rl = readline.createInterface({
71
+ input: process.stdin,
72
+ output: process.stdout,
73
+ });
74
+ const currentDefault = currentConfig.default || 'local';
75
+ console.log('');
76
+ console.log(`Current default archive destination: ${chalk_1.default.cyan(currentDefault)}`);
77
+ const answer = await new Promise((resolve) => {
78
+ rl.question(`Set ${destination} as default? [y/N]: `, resolve);
79
+ });
80
+ rl.close();
81
+ if (answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes') {
82
+ (0, config_1.setArchiveDefault)(destination);
83
+ console.log(chalk_1.default.green('✓') + ` Default archive destination set to ${chalk_1.default.cyan(destination)}`);
84
+ }
85
+ }
86
+ async function githubAuthCommand(options) {
87
+ try {
88
+ const result = await (0, github_auth_1.authenticateGitHub)({
89
+ token: options.token,
90
+ usePAT: !!options.token,
91
+ });
92
+ if (!result.success) {
93
+ console.log(chalk_1.default.red('✗') + ` Authentication failed: ${result.error}`);
94
+ process.exit(1);
95
+ }
96
+ console.log('');
97
+ console.log(chalk_1.default.green('GitHub authentication complete!'));
98
+ }
99
+ catch (error) {
100
+ (0, errorHandler_1.handleError)(error);
101
+ }
102
+ }
103
+ async function linearAuthCommand(options) {
104
+ try {
105
+ if (!options.token) {
106
+ console.log('');
107
+ console.log('Linear authentication requires an API key.');
108
+ console.log('');
109
+ console.log(`Get your API key from: ${chalk_1.default.underline('https://linear.app/settings/api')}`);
110
+ console.log('');
111
+ console.log('Then run:');
112
+ console.log(chalk_1.default.cyan(' brainfile auth linear --token <your-api-key>'));
113
+ console.log('');
114
+ return;
115
+ }
116
+ const result = await (0, linear_auth_1.authenticateLinear)({
117
+ token: options.token,
118
+ });
119
+ if (!result.success) {
120
+ console.log(chalk_1.default.red('✗') + ` Authentication failed: ${result.error}`);
121
+ process.exit(1);
122
+ }
123
+ // Fetch available teams and configure default
124
+ const teams = await (0, linear_auth_1.getLinearTeams)();
125
+ if (teams.length === 0) {
126
+ console.log(chalk_1.default.yellow('⚠') + ' No teams found. You may need to configure a team later.');
127
+ }
128
+ else if (teams.length === 1) {
129
+ // Auto-select the only team
130
+ const team = teams[0];
131
+ (0, config_1.setLinearConfig)({ teamId: team.id });
132
+ console.log(chalk_1.default.green('✓') + ` Default team set to ${chalk_1.default.cyan(team.name)} (${team.key})`);
133
+ // Ask if they want to set Linear as default destination
134
+ await promptSetDefaultDestination('linear');
135
+ }
136
+ else {
137
+ // Multiple teams - prompt user to choose
138
+ console.log('');
139
+ console.log('Multiple teams found. Select a default team for archiving:');
140
+ console.log('');
141
+ teams.forEach((team, index) => {
142
+ console.log(` ${chalk_1.default.cyan(index + 1)}) ${team.name} (${team.key})`);
143
+ });
144
+ console.log('');
145
+ const rl = readline.createInterface({
146
+ input: process.stdin,
147
+ output: process.stdout,
148
+ });
149
+ const answer = await new Promise((resolve) => {
150
+ rl.question(`Enter number [1-${teams.length}]: `, resolve);
151
+ });
152
+ rl.close();
153
+ const selection = parseInt(answer, 10);
154
+ if (selection >= 1 && selection <= teams.length) {
155
+ const team = teams[selection - 1];
156
+ (0, config_1.setLinearConfig)({ teamId: team.id });
157
+ console.log('');
158
+ console.log(chalk_1.default.green('✓') + ` Default team set to ${chalk_1.default.cyan(team.name)} (${team.key})`);
159
+ // Ask if they want to set Linear as default destination
160
+ await promptSetDefaultDestination('linear');
161
+ }
162
+ else {
163
+ console.log(chalk_1.default.yellow('⚠') + ' Invalid selection. You can set a team later with:');
164
+ console.log(chalk_1.default.cyan(' brainfile config set archive.linear.teamId <team-id>'));
165
+ }
166
+ }
167
+ console.log('');
168
+ console.log(chalk_1.default.green('Linear authentication complete!'));
169
+ }
170
+ catch (error) {
171
+ (0, errorHandler_1.handleError)(error);
172
+ }
173
+ }
174
+ // ============================================================================
175
+ // Status Command
176
+ // ============================================================================
177
+ async function authStatusCommand() {
178
+ try {
179
+ const status = await auth_store_1.authStore.getStatus();
180
+ console.log('');
181
+ console.log(chalk_1.default.bold('Authentication Status'));
182
+ console.log('');
183
+ // GitHub
184
+ if (status.github.authenticated) {
185
+ const source = status.github.source;
186
+ const username = status.github.username ? ` as ${chalk_1.default.cyan('@' + status.github.username)}` : '';
187
+ console.log(chalk_1.default.green('✓') +
188
+ ` GitHub: authenticated${username} ${chalk_1.default.gray(`(${source})`)}`);
189
+ }
190
+ else {
191
+ console.log(chalk_1.default.red('✗') + ' GitHub: not configured');
192
+ }
193
+ // Linear
194
+ if (status.linear.authenticated) {
195
+ const source = status.linear.source;
196
+ const username = status.linear.username ? ` as ${chalk_1.default.cyan(status.linear.username)}` : '';
197
+ console.log(chalk_1.default.green('✓') +
198
+ ` Linear: authenticated${username} ${chalk_1.default.gray(`(${source})`)}`);
199
+ }
200
+ else {
201
+ console.log(chalk_1.default.red('✗') + ' Linear: not configured');
202
+ }
203
+ console.log('');
204
+ }
205
+ catch (error) {
206
+ (0, errorHandler_1.handleError)(error);
207
+ }
208
+ }
209
+ async function authLogoutCommand(provider, options) {
210
+ try {
211
+ if (options?.all || provider === 'all') {
212
+ await (0, github_auth_1.logoutGitHub)();
213
+ await (0, linear_auth_1.logoutLinear)();
214
+ console.log(chalk_1.default.green('✓') + ' Logged out from all providers');
215
+ return;
216
+ }
217
+ if (!provider) {
218
+ console.log('');
219
+ console.log('Usage:');
220
+ console.log(' brainfile auth logout github');
221
+ console.log(' brainfile auth logout linear');
222
+ console.log(' brainfile auth logout --all');
223
+ console.log('');
224
+ return;
225
+ }
226
+ switch (provider.toLowerCase()) {
227
+ case 'github':
228
+ await (0, github_auth_1.logoutGitHub)();
229
+ console.log(chalk_1.default.green('✓') + ' Logged out from GitHub');
230
+ break;
231
+ case 'linear':
232
+ await (0, linear_auth_1.logoutLinear)();
233
+ console.log(chalk_1.default.green('✓') + ' Logged out from Linear');
234
+ break;
235
+ default:
236
+ console.log(chalk_1.default.red('✗') + ` Unknown provider: ${provider}`);
237
+ console.log('Valid providers: github, linear');
238
+ process.exit(1);
239
+ }
240
+ }
241
+ catch (error) {
242
+ (0, errorHandler_1.handleError)(error);
243
+ }
244
+ }
245
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Complete command - move a task from board/ to logs/, set completedAt.
3
+ *
4
+ * In v2 per-task file architecture:
5
+ * - Moves .brainfile/board/task-X.md to .brainfile/logs/task-X.md
6
+ * - Adds completedAt timestamp to frontmatter
7
+ * - Removes column and position fields
8
+ *
9
+ * In v1 (embedded tasks):
10
+ * - Moves task to the first completion column (done) and adds completedAt
11
+ *
12
+ * @packageDocumentation
13
+ */
14
+ import { type Logger } from '../utils/logger';
15
+ export interface CompleteOptions {
16
+ file: string;
17
+ task?: string;
18
+ force?: boolean;
19
+ }
20
+ export interface CompleteResult {
21
+ success: true;
22
+ taskId: string;
23
+ completedAt: string;
24
+ }
25
+ /**
26
+ * Complete a task - move to logs with completedAt timestamp.
27
+ * Throws CLIError on failure.
28
+ */
29
+ export declare function completeCommand(options: CompleteOptions, logger?: Logger): CompleteResult;
30
+ //# sourceMappingURL=complete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complete.d.ts","sourceRoot":"","sources":["../../src/commands/complete.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAM7D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAkJD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,GAAE,MAAsB,GAAG,cAAc,CAgBxG"}
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+ /**
3
+ * Complete command - move a task from board/ to logs/, set completedAt.
4
+ *
5
+ * In v2 per-task file architecture:
6
+ * - Moves .brainfile/board/task-X.md to .brainfile/logs/task-X.md
7
+ * - Adds completedAt timestamp to frontmatter
8
+ * - Removes column and position fields
9
+ *
10
+ * In v1 (embedded tasks):
11
+ * - Moves task to the first completion column (done) and adds completedAt
12
+ *
13
+ * @packageDocumentation
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || (function () {
32
+ var ownKeys = function(o) {
33
+ ownKeys = Object.getOwnPropertyNames || function (o) {
34
+ var ar = [];
35
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
+ return ar;
37
+ };
38
+ return ownKeys(o);
39
+ };
40
+ return function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ })();
48
+ var __importDefault = (this && this.__importDefault) || function (mod) {
49
+ return (mod && mod.__esModule) ? mod : { "default": mod };
50
+ };
51
+ Object.defineProperty(exports, "__esModule", { value: true });
52
+ exports.completeCommand = completeCommand;
53
+ const fs = __importStar(require("fs"));
54
+ const path = __importStar(require("path"));
55
+ const chalk_1 = __importDefault(require("chalk"));
56
+ const core_1 = require("@brainfile/core");
57
+ const logger_1 = require("../utils/logger");
58
+ const cli_error_1 = require("../utils/cli-error");
59
+ const brainfile_path_1 = require("../utils/brainfile-path");
60
+ const core_2 = require("@brainfile/core");
61
+ const v2_detect_1 = require("../utils/v2-detect");
62
+ function assertSafeTaskId(taskId) {
63
+ const trimmed = taskId.trim();
64
+ if (!trimmed || trimmed !== taskId) {
65
+ throw (0, cli_error_1.operationFailed)(`Invalid task ID: ${taskId}`);
66
+ }
67
+ if (taskId === '.' || taskId === '..') {
68
+ throw (0, cli_error_1.operationFailed)(`Invalid task ID: ${taskId}`);
69
+ }
70
+ if (path.isAbsolute(taskId) || /[\\/]/.test(taskId)) {
71
+ throw (0, cli_error_1.operationFailed)(`Invalid task ID: ${taskId}`);
72
+ }
73
+ }
74
+ function appendBodySection(body, section) {
75
+ const trimmed = body.trimEnd();
76
+ if (!trimmed) {
77
+ return `${section}\n`;
78
+ }
79
+ return `${trimmed}\n\n${section}\n`;
80
+ }
81
+ function extractEpicChildTaskIds(task) {
82
+ const rawSubtasks = task.subtasks;
83
+ if (!Array.isArray(rawSubtasks)) {
84
+ return [];
85
+ }
86
+ const childIds = [];
87
+ for (const subtask of rawSubtasks) {
88
+ if (typeof subtask === 'string' && subtask.trim() !== '') {
89
+ childIds.push(subtask.trim());
90
+ continue;
91
+ }
92
+ if (subtask && typeof subtask === 'object') {
93
+ const candidateId = subtask.id;
94
+ if (typeof candidateId === 'string' && candidateId.trim() !== '') {
95
+ childIds.push(candidateId.trim());
96
+ }
97
+ }
98
+ }
99
+ return [...new Set(childIds)];
100
+ }
101
+ function resolveChildTaskStates(childIds, boardDir, logsDir) {
102
+ if (childIds.length === 0) {
103
+ return [];
104
+ }
105
+ const activeDocs = (0, core_2.readTasksDir)(boardDir);
106
+ const completedDocs = (0, core_2.readTasksDir)(logsDir);
107
+ const activeById = new Map();
108
+ for (const doc of activeDocs) {
109
+ if (!activeById.has(doc.task.id)) {
110
+ activeById.set(doc.task.id, doc.task.title);
111
+ }
112
+ }
113
+ const completedById = new Map();
114
+ for (const doc of completedDocs) {
115
+ if (!completedById.has(doc.task.id)) {
116
+ completedById.set(doc.task.id, doc.task.title);
117
+ }
118
+ }
119
+ return childIds.map((childId) => {
120
+ const activeTitle = activeById.get(childId);
121
+ if (activeTitle) {
122
+ return { id: childId, title: activeTitle, status: 'active' };
123
+ }
124
+ const completedTitle = completedById.get(childId);
125
+ if (completedTitle) {
126
+ return { id: childId, title: completedTitle, status: 'completed' };
127
+ }
128
+ return { id: childId, title: 'Unknown task reference', status: 'missing' };
129
+ });
130
+ }
131
+ function resolveParentLinkedChildStates(epicId, boardDir, logsDir) {
132
+ const activeChildren = (0, core_2.readTasksDir)(boardDir)
133
+ .filter((doc) => doc.task.parentId === epicId)
134
+ .map((doc) => ({ id: doc.task.id, title: doc.task.title, status: 'active' }));
135
+ const completedChildren = (0, core_2.readTasksDir)(logsDir)
136
+ .filter((doc) => doc.task.parentId === epicId)
137
+ .map((doc) => ({ id: doc.task.id, title: doc.task.title, status: 'completed' }));
138
+ return [...activeChildren, ...completedChildren];
139
+ }
140
+ function resolveEpicChildStates(task, boardDir, logsDir) {
141
+ const linkedByParentId = resolveParentLinkedChildStates(task.id, boardDir, logsDir);
142
+ if (linkedByParentId.length > 0) {
143
+ return linkedByParentId;
144
+ }
145
+ const childIds = extractEpicChildTaskIds(task);
146
+ return resolveChildTaskStates(childIds, boardDir, logsDir);
147
+ }
148
+ function buildChildTasksSection(childTasks) {
149
+ if (childTasks.length === 0) {
150
+ return '## Child Tasks\nNo child tasks recorded.';
151
+ }
152
+ const totalChildren = childTasks.length;
153
+ const completedChildren = childTasks.filter((child) => child.status === 'completed').length;
154
+ const lines = [
155
+ '## Child Tasks',
156
+ `Summary: ${completedChildren}/${totalChildren} children completed.`,
157
+ ];
158
+ for (const child of childTasks) {
159
+ const statusLabel = child.status === 'completed'
160
+ ? 'completed'
161
+ : child.status === 'active'
162
+ ? 'incomplete'
163
+ : 'missing';
164
+ lines.push(`- ${child.id}: ${child.title} (${statusLabel})`);
165
+ }
166
+ return lines.join('\n');
167
+ }
168
+ /**
169
+ * Complete a task - move to logs with completedAt timestamp.
170
+ * Throws CLIError on failure.
171
+ */
172
+ function completeCommand(options, logger = logger_1.defaultLogger) {
173
+ if (!options.task) {
174
+ throw (0, cli_error_1.missingRequired)('--task', 'brainfile complete --task <task-id> [--file <path>] [--force]');
175
+ }
176
+ const filePath = (0, brainfile_path_1.resolveCliBrainfilePath)(options.file);
177
+ if (!fs.existsSync(filePath)) {
178
+ throw (0, cli_error_1.fileNotFound)(filePath);
179
+ }
180
+ if ((0, v2_detect_1.isV2)(filePath)) {
181
+ return completeV2(filePath, options.task, options.force === true, logger);
182
+ }
183
+ const completedAt = new Date().toISOString();
184
+ return completeV1(filePath, options.task, completedAt, logger);
185
+ }
186
+ function completeV2(filePath, taskId, force, logger) {
187
+ assertSafeTaskId(taskId);
188
+ const dirs = (0, v2_detect_1.getV2Dirs)(filePath);
189
+ const found = (0, v2_detect_1.findV2Task)(dirs, taskId, false);
190
+ if (!found || found.isLog) {
191
+ throw (0, cli_error_1.taskNotFound)(taskId);
192
+ }
193
+ const { doc, filePath: taskPath } = found;
194
+ const task = doc.task;
195
+ const completedAt = new Date().toISOString();
196
+ let completedBody = doc.body;
197
+ if (task.type === 'epic') {
198
+ const childStates = resolveEpicChildStates(task, dirs.boardDir, dirs.logsDir);
199
+ const incompleteChildren = childStates.filter((child) => child.status === 'active');
200
+ if (incompleteChildren.length > 0 && !force) {
201
+ logger.warn(chalk_1.default.yellow(`Epic ${taskId} has incomplete child tasks:`));
202
+ for (const child of incompleteChildren) {
203
+ logger.warn(chalk_1.default.yellow(` - ${child.id}: ${child.title}`));
204
+ }
205
+ logger.warn(chalk_1.default.yellow('Aborting completion. Re-run with --force to override.'));
206
+ throw (0, cli_error_1.operationFailed)(`Epic ${taskId} has ${incompleteChildren.length} incomplete child task(s). Use --force to override.`);
207
+ }
208
+ if (incompleteChildren.length > 0 && force) {
209
+ logger.warn(chalk_1.default.yellow(`Completing epic ${taskId} with --force despite ${incompleteChildren.length} incomplete child task(s).`));
210
+ }
211
+ const childTasksSection = buildChildTasksSection(childStates);
212
+ completedBody = appendBodySection(doc.body, childTasksSection);
213
+ }
214
+ // Create completed task: remove column/position, add completedAt
215
+ const completedTask = { ...task, completedAt, updatedAt: completedAt };
216
+ delete completedTask.column;
217
+ delete completedTask.position;
218
+ // Ensure logs directory exists
219
+ fs.mkdirSync(dirs.logsDir, { recursive: true });
220
+ // Write to logs directory
221
+ const logPath = path.join(dirs.logsDir, (0, core_2.taskFileName)(taskId));
222
+ (0, core_2.writeTaskFile)(logPath, completedTask, completedBody);
223
+ // Remove from tasks directory
224
+ fs.unlinkSync(taskPath);
225
+ logger.log(chalk_1.default.green('Task completed!'));
226
+ logger.log('');
227
+ logger.log(chalk_1.default.gray(` Task: ${taskId} - ${task.title}`));
228
+ logger.log(chalk_1.default.gray(` CompletedAt: ${completedAt}`));
229
+ logger.log(chalk_1.default.gray(` Moved to: logs/${taskId}.md`));
230
+ return { success: true, taskId, completedAt };
231
+ }
232
+ function completeV1(filePath, taskId, completedAt, logger) {
233
+ const content = fs.readFileSync(filePath, 'utf-8');
234
+ const parsed = core_1.Brainfile.parseWithErrors(content);
235
+ if (!parsed.board) {
236
+ throw (0, cli_error_1.operationFailed)(parsed.error || 'Failed to parse brainfile');
237
+ }
238
+ let board = parsed.board;
239
+ const taskInfo = (0, core_1.findTaskById)(board, taskId);
240
+ if (!taskInfo) {
241
+ throw (0, cli_error_1.taskNotFound)(taskId);
242
+ }
243
+ // Find or determine done column
244
+ const doneColumn = (0, core_1.findCompletionColumn)(board) || board.columns.find(c => /^(done|completed?|finished|closed)$/i.test(c.id) ||
245
+ /^(done|completed?|finished|closed)$/i.test(c.title));
246
+ if (!doneColumn) {
247
+ throw (0, cli_error_1.operationFailed)('No completion column found. Add a column with id "done" or set completionColumn: true');
248
+ }
249
+ // Move to done column if not already there
250
+ if (taskInfo.column.id !== doneColumn.id) {
251
+ const moveResult = (0, core_1.moveTask)(board, taskId, taskInfo.column.id, doneColumn.id, doneColumn.tasks.length);
252
+ if (!moveResult.success) {
253
+ throw (0, cli_error_1.operationFailed)(moveResult.error);
254
+ }
255
+ board = moveResult.board;
256
+ }
257
+ // Write back
258
+ const updatedContent = core_1.Brainfile.serialize(board);
259
+ fs.writeFileSync(filePath, updatedContent, 'utf-8');
260
+ logger.log(chalk_1.default.green('Task completed!'));
261
+ logger.log('');
262
+ logger.log(chalk_1.default.gray(` Task: ${taskId} - ${taskInfo.task.title}`));
263
+ logger.log(chalk_1.default.gray(` CompletedAt: ${completedAt}`));
264
+ logger.log(chalk_1.default.gray(` Column: ${doneColumn.title}`));
265
+ return { success: true, taskId, completedAt };
266
+ }
267
+ //# sourceMappingURL=complete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complete.js","sourceRoot":"","sources":["../../src/commands/complete.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4KH,0CAgBC;AA1LD,uCAAyB;AACzB,2CAA6B;AAC7B,kDAA0B;AAC1B,0CAA0F;AAC1F,4CAA6D;AAC7D,kDAAkG;AAClG,4DAAkE;AAClE,0CAAuF;AACvF,kDAAiE;AAsBjE,SAAS,gBAAgB,CAAC,MAAc;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACnC,MAAM,IAAA,2BAAe,EAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACtC,MAAM,IAAA,2BAAe,EAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,MAAM,IAAA,2BAAe,EAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,OAAe;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,OAAO,IAAI,CAAC;IACxB,CAAC;IACD,OAAO,GAAG,OAAO,OAAO,OAAO,IAAI,CAAC;AACtC,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAU;IACzC,MAAM,WAAW,GAAI,IAA+B,CAAC,QAAQ,CAAC;IAC9D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACzD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC3C,MAAM,WAAW,GAAI,OAA4B,CAAC,EAAE,CAAC;YACrD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACjE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAAkB,EAClB,QAAgB,EAChB,OAAe;IAEf,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,mBAAY,EAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,IAAA,mBAAY,EAAC,OAAO,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACjC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACpC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,QAAiB,EAAE,CAAC;QACxE,CAAC;QAED,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,WAAoB,EAAE,CAAC;QAC9E,CAAC;QAED,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC;IACtF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,8BAA8B,CAAC,MAAc,EAAE,QAAgB,EAAE,OAAe;IACvF,MAAM,cAAc,GAAG,IAAA,mBAAY,EAAC,QAAQ,CAAC;SAC1C,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAE,GAAG,CAAC,IAAY,CAAC,QAAQ,KAAK,MAAM,CAAC;SACtD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAiB,EAAE,CAAC,CAAC,CAAC;IAEzF,MAAM,iBAAiB,GAAG,IAAA,mBAAY,EAAC,OAAO,CAAC;SAC5C,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAE,GAAG,CAAC,IAAY,CAAC,QAAQ,KAAK,MAAM,CAAC;SACtD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAoB,EAAE,CAAC,CAAC,CAAC;IAE5F,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,iBAAiB,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAU,EAAE,QAAgB,EAAE,OAAe;IAC3E,MAAM,gBAAgB,GAAG,8BAA8B,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,sBAAsB,CAAC,UAA4B;IAC1D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,0CAA0C,CAAC;IACpD,CAAC;IAED,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC;IACxC,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;IAE5F,MAAM,KAAK,GAAa;QACtB,gBAAgB;QAChB,YAAY,iBAAiB,IAAI,aAAa,sBAAsB;KACrE,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,WAAW,GACf,KAAK,CAAC,MAAM,KAAK,WAAW;YAC1B,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ;gBACzB,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,SAAS,CAAC;QAElB,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,KAAK,WAAW,GAAG,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,OAAwB,EAAE,SAAiB,sBAAa;IACtF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,IAAA,2BAAe,EAAC,QAAQ,EAAE,+DAA+D,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,QAAQ,GAAG,IAAA,wCAAuB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAA,wBAAY,EAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,IAAA,gBAAI,EAAC,QAAQ,CAAC,EAAE,CAAC;QACnB,OAAO,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,OAAO,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB,EAAE,MAAc,EAAE,KAAc,EAAE,MAAc;IAClF,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzB,MAAM,IAAI,GAAG,IAAA,qBAAS,EAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,IAAA,sBAAU,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAA,wBAAY,EAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE7C,IAAI,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC;IAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9E,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAEpF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,QAAQ,MAAM,8BAA8B,CAAC,CAAC,CAAC;YACxE,KAAK,MAAM,KAAK,IAAI,kBAAkB,EAAE,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,uDAAuD,CAAC,CAAC,CAAC;YACnF,MAAM,IAAA,2BAAe,EAAC,QAAQ,MAAM,QAAQ,kBAAkB,CAAC,MAAM,qDAAqD,CAAC,CAAC;QAC9H,CAAC;QAED,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CACT,eAAK,CAAC,MAAM,CACV,mBAAmB,MAAM,yBAAyB,kBAAkB,CAAC,MAAM,4BAA4B,CACxG,CACF,CAAC;QACJ,CAAC;QAED,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;QAC9D,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACjE,CAAC;IAED,iEAAiE;IACjE,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;IACvE,OAAO,aAAa,CAAC,MAAM,CAAC;IAC5B,OAAO,aAAa,CAAC,QAAQ,CAAC;IAE9B,+BAA+B;IAC/B,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,0BAA0B;IAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAA,mBAAY,EAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,IAAA,oBAAa,EAAC,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IAErD,8BAA8B;IAC9B,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAExB,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACf,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,WAAW,EAAE,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uBAAuB,MAAM,KAAK,CAAC,CAAC,CAAC;IAE3D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB,EAAE,MAAc,EAAE,WAAmB,EAAE,MAAc;IACvF,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,gBAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAA,2BAAe,EAAC,MAAM,CAAC,KAAK,IAAI,2BAA2B,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACzB,MAAM,QAAQ,GAAG,IAAA,mBAAY,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAA,wBAAY,EAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,gCAAgC;IAChC,MAAM,UAAU,GAAG,IAAA,2BAAoB,EAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACvE,sCAAsC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,sCAAsC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CACrD,CAAC;IAEF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAA,2BAAe,EAAC,uFAAuF,CAAC,CAAC;IACjH,CAAC;IAED,2CAA2C;IAC3C,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,IAAA,eAAQ,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACvG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,IAAA,2BAAe,EAAC,UAAU,CAAC,KAAM,CAAC,CAAC;QAC3C,CAAC;QACD,KAAK,GAAG,UAAU,CAAC,KAAM,CAAC;IAC5B,CAAC;IAED,aAAa;IACb,MAAM,cAAc,GAAG,gBAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IAEpD,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACf,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5E,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,WAAW,EAAE,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAE7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAChD,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Config command for Brainfile CLI
3
+ *
4
+ * Manage user configuration stored in ~/.config/brainfile/config.json
5
+ *
6
+ * Usage:
7
+ * brainfile config list # Show all config values
8
+ * brainfile config get <key> # Get a specific value
9
+ * brainfile config set <key> <value> # Set a value
10
+ * brainfile config path # Show config file path
11
+ *
12
+ * Keys use dot notation:
13
+ * archive.default - Default archive destination (local, github, linear)
14
+ * archive.github.owner - GitHub repository owner
15
+ * archive.github.repo - GitHub repository name
16
+ * archive.github.labels - Comma-separated labels for GitHub issues
17
+ * archive.linear.teamId - Linear team ID
18
+ * archive.linear.projectId - Linear project ID
19
+ *
20
+ * @packageDocumentation
21
+ */
22
+ interface ConfigOptions {
23
+ key?: string;
24
+ value?: string;
25
+ }
26
+ type ConfigAction = 'list' | 'get' | 'set' | 'path';
27
+ export declare function configCommand(action: ConfigAction, options: ConfigOptions): void;
28
+ export {};
29
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAcH,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAMpD,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,QAoCzE"}