@waymakeros/cli 2.0.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 (390) hide show
  1. package/README.md +158 -0
  2. package/dist/cli/cli.d.ts +7 -0
  3. package/dist/cli/cli.d.ts.map +1 -0
  4. package/dist/cli/cli.js +703 -0
  5. package/dist/cli/cli.js.map +1 -0
  6. package/dist/cli/commands/auth.d.ts +14 -0
  7. package/dist/cli/commands/auth.d.ts.map +1 -0
  8. package/dist/cli/commands/auth.js +507 -0
  9. package/dist/cli/commands/auth.js.map +1 -0
  10. package/dist/cli/commands/init.d.ts +13 -0
  11. package/dist/cli/commands/init.d.ts.map +1 -0
  12. package/dist/cli/commands/init.js +297 -0
  13. package/dist/cli/commands/init.js.map +1 -0
  14. package/dist/cli/commands/kanban.d.ts +12 -0
  15. package/dist/cli/commands/kanban.d.ts.map +1 -0
  16. package/dist/cli/commands/kanban.js +71 -0
  17. package/dist/cli/commands/kanban.js.map +1 -0
  18. package/dist/cli/commands/serve.d.ts +12 -0
  19. package/dist/cli/commands/serve.d.ts.map +1 -0
  20. package/dist/cli/commands/serve.js +170 -0
  21. package/dist/cli/commands/serve.js.map +1 -0
  22. package/dist/cli/commands/sync.d.ts +12 -0
  23. package/dist/cli/commands/sync.d.ts.map +1 -0
  24. package/dist/cli/commands/sync.js +222 -0
  25. package/dist/cli/commands/sync.js.map +1 -0
  26. package/dist/cli/daemon.d.ts +106 -0
  27. package/dist/cli/daemon.d.ts.map +1 -0
  28. package/dist/cli/daemon.js +393 -0
  29. package/dist/cli/daemon.js.map +1 -0
  30. package/dist/cli/index.d.ts +13 -0
  31. package/dist/cli/index.d.ts.map +1 -0
  32. package/dist/cli/index.js +90 -0
  33. package/dist/cli/index.js.map +1 -0
  34. package/dist/index.d.ts +10 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +238 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/simple-server.d.ts +7 -0
  39. package/dist/simple-server.d.ts.map +1 -0
  40. package/dist/simple-server.js +157 -0
  41. package/dist/simple-server.js.map +1 -0
  42. package/dist/sync/commander-client.d.ts +161 -0
  43. package/dist/sync/commander-client.d.ts.map +1 -0
  44. package/dist/sync/commander-client.js +405 -0
  45. package/dist/sync/commander-client.js.map +1 -0
  46. package/dist/sync/config-manager.d.ts +48 -0
  47. package/dist/sync/config-manager.d.ts.map +1 -0
  48. package/dist/sync/config-manager.js +169 -0
  49. package/dist/sync/config-manager.js.map +1 -0
  50. package/dist/sync/file-watcher.d.ts +53 -0
  51. package/dist/sync/file-watcher.d.ts.map +1 -0
  52. package/dist/sync/file-watcher.js +228 -0
  53. package/dist/sync/file-watcher.js.map +1 -0
  54. package/dist/sync/folder-service.d.ts +110 -0
  55. package/dist/sync/folder-service.d.ts.map +1 -0
  56. package/dist/sync/folder-service.js +298 -0
  57. package/dist/sync/folder-service.js.map +1 -0
  58. package/dist/sync/folder-status-mapper.d.ts +106 -0
  59. package/dist/sync/folder-status-mapper.d.ts.map +1 -0
  60. package/dist/sync/folder-status-mapper.js +235 -0
  61. package/dist/sync/folder-status-mapper.js.map +1 -0
  62. package/dist/sync/layer-resolver.d.ts +54 -0
  63. package/dist/sync/layer-resolver.d.ts.map +1 -0
  64. package/dist/sync/layer-resolver.js +206 -0
  65. package/dist/sync/layer-resolver.js.map +1 -0
  66. package/dist/sync/markdown-parser.d.ts +49 -0
  67. package/dist/sync/markdown-parser.d.ts.map +1 -0
  68. package/dist/sync/markdown-parser.js +202 -0
  69. package/dist/sync/markdown-parser.js.map +1 -0
  70. package/dist/sync/reverse-sync.d.ts +139 -0
  71. package/dist/sync/reverse-sync.d.ts.map +1 -0
  72. package/dist/sync/reverse-sync.js +773 -0
  73. package/dist/sync/reverse-sync.js.map +1 -0
  74. package/dist/sync/sync-engine.d.ts +157 -0
  75. package/dist/sync/sync-engine.d.ts.map +1 -0
  76. package/dist/sync/sync-engine.js +875 -0
  77. package/dist/sync/sync-engine.js.map +1 -0
  78. package/dist/sync/sync-index.d.ts +150 -0
  79. package/dist/sync/sync-index.d.ts.map +1 -0
  80. package/dist/sync/sync-index.js +287 -0
  81. package/dist/sync/sync-index.js.map +1 -0
  82. package/dist/sync/trinity-mapper.d.ts +62 -0
  83. package/dist/sync/trinity-mapper.d.ts.map +1 -0
  84. package/dist/sync/trinity-mapper.js +548 -0
  85. package/dist/sync/trinity-mapper.js.map +1 -0
  86. package/dist/sync/types.d.ts +176 -0
  87. package/dist/sync/types.d.ts.map +1 -0
  88. package/dist/sync/types.js +6 -0
  89. package/dist/sync/types.js.map +1 -0
  90. package/dist/tools/apply-framework.d.ts +7 -0
  91. package/dist/tools/apply-framework.d.ts.map +1 -0
  92. package/dist/tools/apply-framework.js +30 -0
  93. package/dist/tools/apply-framework.js.map +1 -0
  94. package/dist/tools/commander-comment-create.d.ts +7 -0
  95. package/dist/tools/commander-comment-create.d.ts.map +1 -0
  96. package/dist/tools/commander-comment-create.js +100 -0
  97. package/dist/tools/commander-comment-create.js.map +1 -0
  98. package/dist/tools/commander-comment-list.d.ts +7 -0
  99. package/dist/tools/commander-comment-list.d.ts.map +1 -0
  100. package/dist/tools/commander-comment-list.js +110 -0
  101. package/dist/tools/commander-comment-list.js.map +1 -0
  102. package/dist/tools/commander-document-create.d.ts +7 -0
  103. package/dist/tools/commander-document-create.d.ts.map +1 -0
  104. package/dist/tools/commander-document-create.js +168 -0
  105. package/dist/tools/commander-document-create.js.map +1 -0
  106. package/dist/tools/commander-document-get.d.ts +7 -0
  107. package/dist/tools/commander-document-get.d.ts.map +1 -0
  108. package/dist/tools/commander-document-get.js +104 -0
  109. package/dist/tools/commander-document-get.js.map +1 -0
  110. package/dist/tools/commander-document-list.d.ts +7 -0
  111. package/dist/tools/commander-document-list.d.ts.map +1 -0
  112. package/dist/tools/commander-document-list.js +117 -0
  113. package/dist/tools/commander-document-list.js.map +1 -0
  114. package/dist/tools/commander-document-update.d.ts +7 -0
  115. package/dist/tools/commander-document-update.d.ts.map +1 -0
  116. package/dist/tools/commander-document-update.js +133 -0
  117. package/dist/tools/commander-document-update.js.map +1 -0
  118. package/dist/tools/commander-folder-create.d.ts +7 -0
  119. package/dist/tools/commander-folder-create.d.ts.map +1 -0
  120. package/dist/tools/commander-folder-create.js +157 -0
  121. package/dist/tools/commander-folder-create.js.map +1 -0
  122. package/dist/tools/commander-folder-delete.d.ts +7 -0
  123. package/dist/tools/commander-folder-delete.d.ts.map +1 -0
  124. package/dist/tools/commander-folder-delete.js +85 -0
  125. package/dist/tools/commander-folder-delete.js.map +1 -0
  126. package/dist/tools/commander-folder-get.d.ts +7 -0
  127. package/dist/tools/commander-folder-get.d.ts.map +1 -0
  128. package/dist/tools/commander-folder-get.js +94 -0
  129. package/dist/tools/commander-folder-get.js.map +1 -0
  130. package/dist/tools/commander-folder-list.d.ts +7 -0
  131. package/dist/tools/commander-folder-list.d.ts.map +1 -0
  132. package/dist/tools/commander-folder-list.js +96 -0
  133. package/dist/tools/commander-folder-list.js.map +1 -0
  134. package/dist/tools/commander-folder-update.d.ts +7 -0
  135. package/dist/tools/commander-folder-update.d.ts.map +1 -0
  136. package/dist/tools/commander-folder-update.js +120 -0
  137. package/dist/tools/commander-folder-update.js.map +1 -0
  138. package/dist/tools/commander-framework-apply.d.ts +7 -0
  139. package/dist/tools/commander-framework-apply.d.ts.map +1 -0
  140. package/dist/tools/commander-framework-apply.js +110 -0
  141. package/dist/tools/commander-framework-apply.js.map +1 -0
  142. package/dist/tools/commander-framework-categories.d.ts +7 -0
  143. package/dist/tools/commander-framework-categories.d.ts.map +1 -0
  144. package/dist/tools/commander-framework-categories.js +90 -0
  145. package/dist/tools/commander-framework-categories.js.map +1 -0
  146. package/dist/tools/commander-framework-get.d.ts +7 -0
  147. package/dist/tools/commander-framework-get.d.ts.map +1 -0
  148. package/dist/tools/commander-framework-get.js +124 -0
  149. package/dist/tools/commander-framework-get.js.map +1 -0
  150. package/dist/tools/commander-framework-list.d.ts +7 -0
  151. package/dist/tools/commander-framework-list.d.ts.map +1 -0
  152. package/dist/tools/commander-framework-list.js +103 -0
  153. package/dist/tools/commander-framework-list.js.map +1 -0
  154. package/dist/tools/commander-goal-create.d.ts +7 -0
  155. package/dist/tools/commander-goal-create.d.ts.map +1 -0
  156. package/dist/tools/commander-goal-create.js +130 -0
  157. package/dist/tools/commander-goal-create.js.map +1 -0
  158. package/dist/tools/commander-goal-get.d.ts +7 -0
  159. package/dist/tools/commander-goal-get.d.ts.map +1 -0
  160. package/dist/tools/commander-goal-get.js +83 -0
  161. package/dist/tools/commander-goal-get.js.map +1 -0
  162. package/dist/tools/commander-goal-list.d.ts +7 -0
  163. package/dist/tools/commander-goal-list.d.ts.map +1 -0
  164. package/dist/tools/commander-goal-list.js +111 -0
  165. package/dist/tools/commander-goal-list.js.map +1 -0
  166. package/dist/tools/commander-goal-update.d.ts +7 -0
  167. package/dist/tools/commander-goal-update.d.ts.map +1 -0
  168. package/dist/tools/commander-goal-update.js +110 -0
  169. package/dist/tools/commander-goal-update.js.map +1 -0
  170. package/dist/tools/commander-key-result-create.d.ts +7 -0
  171. package/dist/tools/commander-key-result-create.d.ts.map +1 -0
  172. package/dist/tools/commander-key-result-create.js +134 -0
  173. package/dist/tools/commander-key-result-create.js.map +1 -0
  174. package/dist/tools/commander-key-result-update.d.ts +7 -0
  175. package/dist/tools/commander-key-result-update.d.ts.map +1 -0
  176. package/dist/tools/commander-key-result-update.js +119 -0
  177. package/dist/tools/commander-key-result-update.js.map +1 -0
  178. package/dist/tools/commander-layer-create.d.ts +7 -0
  179. package/dist/tools/commander-layer-create.d.ts.map +1 -0
  180. package/dist/tools/commander-layer-create.js +167 -0
  181. package/dist/tools/commander-layer-create.js.map +1 -0
  182. package/dist/tools/commander-layer-delete.d.ts +7 -0
  183. package/dist/tools/commander-layer-delete.d.ts.map +1 -0
  184. package/dist/tools/commander-layer-delete.js +141 -0
  185. package/dist/tools/commander-layer-delete.js.map +1 -0
  186. package/dist/tools/commander-layer-list.d.ts +7 -0
  187. package/dist/tools/commander-layer-list.d.ts.map +1 -0
  188. package/dist/tools/commander-layer-list.js +102 -0
  189. package/dist/tools/commander-layer-list.js.map +1 -0
  190. package/dist/tools/commander-presentation.d.ts +7 -0
  191. package/dist/tools/commander-presentation.d.ts.map +1 -0
  192. package/dist/tools/commander-presentation.js +185 -0
  193. package/dist/tools/commander-presentation.js.map +1 -0
  194. package/dist/tools/commander-project-create.d.ts +7 -0
  195. package/dist/tools/commander-project-create.d.ts.map +1 -0
  196. package/dist/tools/commander-project-create.js +130 -0
  197. package/dist/tools/commander-project-create.js.map +1 -0
  198. package/dist/tools/commander-project-get.d.ts +7 -0
  199. package/dist/tools/commander-project-get.d.ts.map +1 -0
  200. package/dist/tools/commander-project-get.js +107 -0
  201. package/dist/tools/commander-project-get.js.map +1 -0
  202. package/dist/tools/commander-project-list.d.ts +7 -0
  203. package/dist/tools/commander-project-list.d.ts.map +1 -0
  204. package/dist/tools/commander-project-list.js +104 -0
  205. package/dist/tools/commander-project-list.js.map +1 -0
  206. package/dist/tools/commander-project-update.d.ts +7 -0
  207. package/dist/tools/commander-project-update.d.ts.map +1 -0
  208. package/dist/tools/commander-project-update.js +126 -0
  209. package/dist/tools/commander-project-update.js.map +1 -0
  210. package/dist/tools/commander-project.d.ts +7 -0
  211. package/dist/tools/commander-project.d.ts.map +1 -0
  212. package/dist/tools/commander-project.js +144 -0
  213. package/dist/tools/commander-project.js.map +1 -0
  214. package/dist/tools/commander-role-assign.d.ts +7 -0
  215. package/dist/tools/commander-role-assign.d.ts.map +1 -0
  216. package/dist/tools/commander-role-assign.js +115 -0
  217. package/dist/tools/commander-role-assign.js.map +1 -0
  218. package/dist/tools/commander-role-create.d.ts +7 -0
  219. package/dist/tools/commander-role-create.d.ts.map +1 -0
  220. package/dist/tools/commander-role-create.js +130 -0
  221. package/dist/tools/commander-role-create.js.map +1 -0
  222. package/dist/tools/commander-role-get.d.ts +7 -0
  223. package/dist/tools/commander-role-get.d.ts.map +1 -0
  224. package/dist/tools/commander-role-get.js +108 -0
  225. package/dist/tools/commander-role-get.js.map +1 -0
  226. package/dist/tools/commander-role-list.d.ts +7 -0
  227. package/dist/tools/commander-role-list.d.ts.map +1 -0
  228. package/dist/tools/commander-role-list.js +106 -0
  229. package/dist/tools/commander-role-list.js.map +1 -0
  230. package/dist/tools/commander-role-update.d.ts +7 -0
  231. package/dist/tools/commander-role-update.d.ts.map +1 -0
  232. package/dist/tools/commander-role-update.js +126 -0
  233. package/dist/tools/commander-role-update.js.map +1 -0
  234. package/dist/tools/commander-search.d.ts +7 -0
  235. package/dist/tools/commander-search.d.ts.map +1 -0
  236. package/dist/tools/commander-search.js +146 -0
  237. package/dist/tools/commander-search.js.map +1 -0
  238. package/dist/tools/commander-sheet-create.d.ts +7 -0
  239. package/dist/tools/commander-sheet-create.d.ts.map +1 -0
  240. package/dist/tools/commander-sheet-create.js +160 -0
  241. package/dist/tools/commander-sheet-create.js.map +1 -0
  242. package/dist/tools/commander-sheet-get.d.ts +7 -0
  243. package/dist/tools/commander-sheet-get.d.ts.map +1 -0
  244. package/dist/tools/commander-sheet-get.js +128 -0
  245. package/dist/tools/commander-sheet-get.js.map +1 -0
  246. package/dist/tools/commander-sheet-list.d.ts +7 -0
  247. package/dist/tools/commander-sheet-list.d.ts.map +1 -0
  248. package/dist/tools/commander-sheet-list.js +108 -0
  249. package/dist/tools/commander-sheet-list.js.map +1 -0
  250. package/dist/tools/commander-sheet-update.d.ts +7 -0
  251. package/dist/tools/commander-sheet-update.d.ts.map +1 -0
  252. package/dist/tools/commander-sheet-update.js +163 -0
  253. package/dist/tools/commander-sheet-update.js.map +1 -0
  254. package/dist/tools/commander-status-list.d.ts +7 -0
  255. package/dist/tools/commander-status-list.d.ts.map +1 -0
  256. package/dist/tools/commander-status-list.js +103 -0
  257. package/dist/tools/commander-status-list.js.map +1 -0
  258. package/dist/tools/commander-task-assign.d.ts +7 -0
  259. package/dist/tools/commander-task-assign.d.ts.map +1 -0
  260. package/dist/tools/commander-task-assign.js +91 -0
  261. package/dist/tools/commander-task-assign.js.map +1 -0
  262. package/dist/tools/commander-task-create.d.ts +7 -0
  263. package/dist/tools/commander-task-create.d.ts.map +1 -0
  264. package/dist/tools/commander-task-create.js +142 -0
  265. package/dist/tools/commander-task-create.js.map +1 -0
  266. package/dist/tools/commander-task-delete.d.ts +7 -0
  267. package/dist/tools/commander-task-delete.d.ts.map +1 -0
  268. package/dist/tools/commander-task-delete.js +88 -0
  269. package/dist/tools/commander-task-delete.js.map +1 -0
  270. package/dist/tools/commander-task-list-mine.d.ts +7 -0
  271. package/dist/tools/commander-task-list-mine.d.ts.map +1 -0
  272. package/dist/tools/commander-task-list-mine.js +109 -0
  273. package/dist/tools/commander-task-list-mine.js.map +1 -0
  274. package/dist/tools/commander-task-read.d.ts +10 -0
  275. package/dist/tools/commander-task-read.d.ts.map +1 -0
  276. package/dist/tools/commander-task-read.js +96 -0
  277. package/dist/tools/commander-task-read.js.map +1 -0
  278. package/dist/tools/commander-task-update.d.ts +7 -0
  279. package/dist/tools/commander-task-update.d.ts.map +1 -0
  280. package/dist/tools/commander-task-update.js +159 -0
  281. package/dist/tools/commander-task-update.js.map +1 -0
  282. package/dist/tools/commander-taskboard-tasks.d.ts +7 -0
  283. package/dist/tools/commander-taskboard-tasks.d.ts.map +1 -0
  284. package/dist/tools/commander-taskboard-tasks.js +97 -0
  285. package/dist/tools/commander-taskboard-tasks.js.map +1 -0
  286. package/dist/tools/commander-team-add-member.d.ts +7 -0
  287. package/dist/tools/commander-team-add-member.d.ts.map +1 -0
  288. package/dist/tools/commander-team-add-member.js +104 -0
  289. package/dist/tools/commander-team-add-member.js.map +1 -0
  290. package/dist/tools/commander-team-create.d.ts +7 -0
  291. package/dist/tools/commander-team-create.d.ts.map +1 -0
  292. package/dist/tools/commander-team-create.js +117 -0
  293. package/dist/tools/commander-team-create.js.map +1 -0
  294. package/dist/tools/commander-team-list.d.ts +7 -0
  295. package/dist/tools/commander-team-list.d.ts.map +1 -0
  296. package/dist/tools/commander-team-list.js +94 -0
  297. package/dist/tools/commander-team-list.js.map +1 -0
  298. package/dist/tools/commander-team-remove-member.d.ts +7 -0
  299. package/dist/tools/commander-team-remove-member.d.ts.map +1 -0
  300. package/dist/tools/commander-team-remove-member.js +98 -0
  301. package/dist/tools/commander-team-remove-member.js.map +1 -0
  302. package/dist/tools/commander-user-get.d.ts +7 -0
  303. package/dist/tools/commander-user-get.d.ts.map +1 -0
  304. package/dist/tools/commander-user-get.js +101 -0
  305. package/dist/tools/commander-user-get.js.map +1 -0
  306. package/dist/tools/commander-user-invite.d.ts +7 -0
  307. package/dist/tools/commander-user-invite.d.ts.map +1 -0
  308. package/dist/tools/commander-user-invite.js +119 -0
  309. package/dist/tools/commander-user-invite.js.map +1 -0
  310. package/dist/tools/commander-user-list.d.ts +7 -0
  311. package/dist/tools/commander-user-list.d.ts.map +1 -0
  312. package/dist/tools/commander-user-list.js +108 -0
  313. package/dist/tools/commander-user-list.js.map +1 -0
  314. package/dist/tools/commander-workspace-create.d.ts +7 -0
  315. package/dist/tools/commander-workspace-create.d.ts.map +1 -0
  316. package/dist/tools/commander-workspace-create.js +124 -0
  317. package/dist/tools/commander-workspace-create.js.map +1 -0
  318. package/dist/tools/commander-workspace-list.d.ts +7 -0
  319. package/dist/tools/commander-workspace-list.d.ts.map +1 -0
  320. package/dist/tools/commander-workspace-list.js +95 -0
  321. package/dist/tools/commander-workspace-list.js.map +1 -0
  322. package/dist/tools/commander-workspace-update.d.ts +7 -0
  323. package/dist/tools/commander-workspace-update.d.ts.map +1 -0
  324. package/dist/tools/commander-workspace-update.js +118 -0
  325. package/dist/tools/commander-workspace-update.js.map +1 -0
  326. package/dist/tools/commander-workspace.d.ts +7 -0
  327. package/dist/tools/commander-workspace.d.ts.map +1 -0
  328. package/dist/tools/commander-workspace.js +131 -0
  329. package/dist/tools/commander-workspace.js.map +1 -0
  330. package/dist/tools/create-kanban.d.ts +7 -0
  331. package/dist/tools/create-kanban.d.ts.map +1 -0
  332. package/dist/tools/create-kanban.js +32 -0
  333. package/dist/tools/create-kanban.js.map +1 -0
  334. package/dist/tools/create-table.d.ts +7 -0
  335. package/dist/tools/create-table.d.ts.map +1 -0
  336. package/dist/tools/create-table.js +188 -0
  337. package/dist/tools/create-table.js.map +1 -0
  338. package/dist/tools/search-knowledge.d.ts +7 -0
  339. package/dist/tools/search-knowledge.d.ts.map +1 -0
  340. package/dist/tools/search-knowledge.js +33 -0
  341. package/dist/tools/search-knowledge.js.map +1 -0
  342. package/dist/tools/waymaker-kanban-view.d.ts +7 -0
  343. package/dist/tools/waymaker-kanban-view.d.ts.map +1 -0
  344. package/dist/tools/waymaker-kanban-view.js +255 -0
  345. package/dist/tools/waymaker-kanban-view.js.map +1 -0
  346. package/dist/tools/waymaker-sync-configure.d.ts +13 -0
  347. package/dist/tools/waymaker-sync-configure.d.ts.map +1 -0
  348. package/dist/tools/waymaker-sync-configure.js +291 -0
  349. package/dist/tools/waymaker-sync-configure.js.map +1 -0
  350. package/dist/tools/waymaker-sync-file.d.ts +7 -0
  351. package/dist/tools/waymaker-sync-file.d.ts.map +1 -0
  352. package/dist/tools/waymaker-sync-file.js +79 -0
  353. package/dist/tools/waymaker-sync-file.js.map +1 -0
  354. package/dist/tools/waymaker-sync-poll.d.ts +8 -0
  355. package/dist/tools/waymaker-sync-poll.d.ts.map +1 -0
  356. package/dist/tools/waymaker-sync-poll.js +398 -0
  357. package/dist/tools/waymaker-sync-poll.js.map +1 -0
  358. package/dist/tools/waymaker-sync-start.d.ts +7 -0
  359. package/dist/tools/waymaker-sync-start.d.ts.map +1 -0
  360. package/dist/tools/waymaker-sync-start.js +56 -0
  361. package/dist/tools/waymaker-sync-start.js.map +1 -0
  362. package/dist/tools/waymaker-sync-status.d.ts +7 -0
  363. package/dist/tools/waymaker-sync-status.d.ts.map +1 -0
  364. package/dist/tools/waymaker-sync-status.js +45 -0
  365. package/dist/tools/waymaker-sync-status.js.map +1 -0
  366. package/dist/tools/waymaker-sync-stop.d.ts +7 -0
  367. package/dist/tools/waymaker-sync-stop.d.ts.map +1 -0
  368. package/dist/tools/waymaker-sync-stop.js +56 -0
  369. package/dist/tools/waymaker-sync-stop.js.map +1 -0
  370. package/dist/tools/waymaker-sync-workspace.d.ts +26 -0
  371. package/dist/tools/waymaker-sync-workspace.d.ts.map +1 -0
  372. package/dist/tools/waymaker-sync-workspace.js +148 -0
  373. package/dist/tools/waymaker-sync-workspace.js.map +1 -0
  374. package/dist/tools/waymaker-sync-workspace.tool.d.ts +9 -0
  375. package/dist/tools/waymaker-sync-workspace.tool.d.ts.map +1 -0
  376. package/dist/tools/waymaker-sync-workspace.tool.js +68 -0
  377. package/dist/tools/waymaker-sync-workspace.tool.js.map +1 -0
  378. package/dist/types/tool.d.ts +13 -0
  379. package/dist/types/tool.d.ts.map +1 -0
  380. package/dist/types/tool.js +2 -0
  381. package/dist/types/tool.js.map +1 -0
  382. package/dist/utils/daemon-health.d.ts +21 -0
  383. package/dist/utils/daemon-health.d.ts.map +1 -0
  384. package/dist/utils/daemon-health.js +40 -0
  385. package/dist/utils/daemon-health.js.map +1 -0
  386. package/dist/utils/fetch-ipv4.d.ts +36 -0
  387. package/dist/utils/fetch-ipv4.d.ts.map +1 -0
  388. package/dist/utils/fetch-ipv4.js +91 -0
  389. package/dist/utils/fetch-ipv4.js.map +1 -0
  390. package/package.json +62 -0
@@ -0,0 +1,298 @@
1
+ /**
2
+ * Waymaker Sync - Folder Service
3
+ * Auto-creates folder hierarchy to mirror IDE structure in Commander
4
+ */
5
+ import { CommanderClient } from './commander-client.js';
6
+ import * as path from 'node:path';
7
+ /**
8
+ * FolderService - Manages folder hierarchy syncing from IDE to Commander
9
+ *
10
+ * Responsibilities:
11
+ * 1. Parse file paths into folder hierarchy
12
+ * 2. Create missing folders in Commander
13
+ * 3. Cache folder lookups to avoid duplicates
14
+ * 4. Return folder_id for document assignment
15
+ *
16
+ * Example:
17
+ * File path: /Users/name/Projects/waymaker/docs/01-planning/features/api-keys.md
18
+ * Project root: /Users/name/Projects/waymaker
19
+ * Relative path: docs/01-planning/features/api-keys.md
20
+ * Folder hierarchy: docs → 01-planning → features
21
+ */
22
+ export class FolderService {
23
+ client;
24
+ config;
25
+ folderCache; // Cache: "folder/path" → folder object
26
+ initialized = false;
27
+ initializationPromise = null; // Lock for concurrent initialization
28
+ constructor(config, client) {
29
+ this.config = config;
30
+ this.client = client || new CommanderClient();
31
+ this.folderCache = new Map();
32
+ }
33
+ /**
34
+ * Initialize folder cache by loading all existing folders from Commander
35
+ * Call this once before starting sync operations
36
+ * Uses promise lock to prevent concurrent initialization
37
+ */
38
+ async initialize() {
39
+ // If already initialized, return immediately
40
+ if (this.initialized) {
41
+ return;
42
+ }
43
+ // If initialization is in progress, wait for it
44
+ if (this.initializationPromise) {
45
+ console.log('[FolderService] Waiting for ongoing initialization...');
46
+ await this.initializationPromise;
47
+ return;
48
+ }
49
+ // Start initialization
50
+ console.log('[FolderService] Initializing folder cache...');
51
+ this.initializationPromise = (async () => {
52
+ try {
53
+ const folders = await this.listAllFolders();
54
+ console.log(`[FolderService] Loaded ${folders.length} existing folders`);
55
+ // Build folder path map
56
+ const folderMap = new Map();
57
+ folders.forEach(folder => folderMap.set(folder.id, folder));
58
+ // Build cache with full paths
59
+ for (const folder of folders) {
60
+ const fullPath = this.buildFolderPath(folder, folderMap);
61
+ this.folderCache.set(fullPath, folder);
62
+ }
63
+ this.initialized = true;
64
+ console.log('[FolderService] ✅ Initialization complete');
65
+ }
66
+ catch (error) {
67
+ console.error('[FolderService] ❌ Initialization failed:', error);
68
+ this.initializationPromise = null; // Reset on error to allow retry
69
+ throw error;
70
+ }
71
+ })();
72
+ await this.initializationPromise;
73
+ }
74
+ /**
75
+ * Ensure folder hierarchy exists for a file path
76
+ * Returns folder_id for the deepest folder (to assign to document)
77
+ *
78
+ * Example:
79
+ * Input: /Users/name/Projects/waymaker/docs/01-planning/features/api-keys.md
80
+ * Output: folder_id for "features" folder
81
+ * Side effect: Creates "docs", "01-planning", "features" if they don't exist
82
+ */
83
+ async ensureFolderHierarchy(absoluteFilePath) {
84
+ if (!this.initialized) {
85
+ await this.initialize();
86
+ }
87
+ // Extract relative path from project root
88
+ const relativePath = this.getRelativePath(absoluteFilePath);
89
+ if (!relativePath) {
90
+ console.log('[FolderService] File is at project root, no folder needed');
91
+ return null;
92
+ }
93
+ // Parse folder path (remove filename)
94
+ const folderPath = path.dirname(relativePath);
95
+ if (folderPath === '.' || folderPath === '') {
96
+ console.log('[FolderService] File is at project root, no folder needed');
97
+ return null;
98
+ }
99
+ console.log(`[FolderService] Ensuring folder hierarchy for: ${folderPath}`);
100
+ // Split into folder parts: "docs/01-planning/features" → ["docs", "01-planning", "features"]
101
+ const folderParts = folderPath.split(path.sep).filter(p => p && p !== '.');
102
+ // Create folders recursively
103
+ let parentFolderId = null;
104
+ let currentPath = '';
105
+ for (let i = 0; i < folderParts.length; i++) {
106
+ const folderName = folderParts[i];
107
+ currentPath = i === 0 ? folderName : `${currentPath}/${folderName}`;
108
+ // Check cache first
109
+ let cached = this.folderCache.get(currentPath);
110
+ if (cached) {
111
+ console.log(`[FolderService] ✅ Folder exists (cached): ${currentPath} → ${cached.id}`);
112
+ parentFolderId = cached.id;
113
+ continue;
114
+ }
115
+ // Create folder (with race condition handling)
116
+ console.log(`[FolderService] 🆕 Creating folder: ${folderName} (parent: ${parentFolderId || 'root'})`);
117
+ const folder = await this.createFolderWithRetry({
118
+ name: folderName,
119
+ parent_folder_id: parentFolderId,
120
+ folderPath: currentPath,
121
+ });
122
+ // Cache the created/fetched folder
123
+ this.folderCache.set(currentPath, folder);
124
+ console.log(`[FolderService] ✅ Folder ready: ${currentPath} → ${folder.id}`);
125
+ parentFolderId = folder.id;
126
+ }
127
+ return parentFolderId;
128
+ }
129
+ /**
130
+ * Create a single folder in Commander with retry logic for race conditions
131
+ * If folder creation fails due to unique constraint, fetch the existing folder
132
+ */
133
+ async createFolderWithRetry(params) {
134
+ try {
135
+ // Attempt to create folder
136
+ const response = await this.client.callEdgeFunction('commander-folder-operations', {
137
+ operation: 'create',
138
+ data: {
139
+ name: params.name,
140
+ project_id: this.config.projectId,
141
+ workspace_id: this.config.workspaceId,
142
+ organization_id: this.config.organizationId,
143
+ parent_folder_id: params.parent_folder_id,
144
+ sort_order: 0,
145
+ },
146
+ });
147
+ return response.data;
148
+ }
149
+ catch (error) {
150
+ // Check if error is due to unique constraint violation (folder already exists)
151
+ const isDuplicateError = error?.message?.includes('duplicate key value') ||
152
+ error?.message?.includes('unique constraint') ||
153
+ error?.message?.includes('unique_folder_name');
154
+ if (isDuplicateError) {
155
+ console.log(`[FolderService] ⚠️ Folder already exists (race condition), fetching...`);
156
+ // Double-check cache (another concurrent call may have added it)
157
+ const cached = this.folderCache.get(params.folderPath);
158
+ if (cached) {
159
+ console.log(`[FolderService] ✅ Found in cache after race: ${params.folderPath}`);
160
+ return cached;
161
+ }
162
+ // Fetch the existing folder from database
163
+ const folders = await this.listAllFolders();
164
+ const existingFolder = folders.find(f => f.name === params.name && f.parent_folder_id === params.parent_folder_id);
165
+ if (existingFolder) {
166
+ console.log(`[FolderService] ✅ Fetched existing folder: ${params.name} → ${existingFolder.id}`);
167
+ return existingFolder;
168
+ }
169
+ // If we still can't find it, re-throw the original error
170
+ console.error(`[FolderService] ❌ Could not find folder after duplicate error`);
171
+ throw error;
172
+ }
173
+ // Re-throw non-duplicate errors
174
+ throw error;
175
+ }
176
+ }
177
+ /**
178
+ * List all folders for the project
179
+ */
180
+ async listAllFolders() {
181
+ const response = await this.client.callEdgeFunction('commander-folder-operations', {
182
+ operation: 'list',
183
+ data: {
184
+ project_id: this.config.projectId,
185
+ },
186
+ });
187
+ return response.data || [];
188
+ }
189
+ /**
190
+ * Build full folder path from folder ID by traversing parent hierarchy
191
+ */
192
+ buildFolderPath(folder, folderMap) {
193
+ const parts = [];
194
+ let current = folder;
195
+ while (current) {
196
+ parts.unshift(current.name);
197
+ if (current.parent_folder_id) {
198
+ current = folderMap.get(current.parent_folder_id);
199
+ }
200
+ else {
201
+ break;
202
+ }
203
+ }
204
+ return parts.join('/');
205
+ }
206
+ /**
207
+ * Get relative path from project root
208
+ * Example:
209
+ * Absolute: /Users/name/Projects/waymaker/docs/file.md
210
+ * Root: /Users/name/Projects/waymaker
211
+ * Relative: docs/file.md
212
+ */
213
+ getRelativePath(absolutePath) {
214
+ // Normalize both paths
215
+ const normalizedRoot = path.resolve(this.config.projectRoot);
216
+ const normalizedFile = path.resolve(absolutePath);
217
+ // Check if file is within project root
218
+ if (!normalizedFile.startsWith(normalizedRoot)) {
219
+ throw new Error(`File ${absolutePath} is not within project root ${this.config.projectRoot}`);
220
+ }
221
+ // Get relative path
222
+ const relativePath = path.relative(normalizedRoot, normalizedFile);
223
+ return relativePath;
224
+ }
225
+ /**
226
+ * Ensure a folder path exists (for empty folder sync)
227
+ * Unlike ensureFolderHierarchy which takes a file path, this takes a folder path directly
228
+ *
229
+ * Example:
230
+ * Input: "docs/05-reference/api" (relative to project root)
231
+ * Output: folder_id for "api" folder
232
+ * Side effect: Creates "docs", "05-reference", "api" if they don't exist
233
+ */
234
+ async ensureFolderPath(relativeFolderPath) {
235
+ if (!this.initialized) {
236
+ await this.initialize();
237
+ }
238
+ // Normalize path
239
+ const folderPath = relativeFolderPath.replace(/\\/g, '/').replace(/\/$/, '');
240
+ if (!folderPath || folderPath === '.' || folderPath === '') {
241
+ console.log('[FolderService] Empty path, no folder needed');
242
+ return null;
243
+ }
244
+ console.log(`[FolderService] Ensuring folder path: ${folderPath}`);
245
+ // Split into folder parts: "docs/01-planning/features" → ["docs", "01-planning", "features"]
246
+ const folderParts = folderPath.split('/').filter(p => p && p !== '.');
247
+ // Create folders recursively
248
+ let parentFolderId = null;
249
+ let currentPath = '';
250
+ for (let i = 0; i < folderParts.length; i++) {
251
+ const folderName = folderParts[i];
252
+ currentPath = i === 0 ? folderName : `${currentPath}/${folderName}`;
253
+ // Check cache first
254
+ let cached = this.folderCache.get(currentPath);
255
+ if (cached) {
256
+ parentFolderId = cached.id;
257
+ continue;
258
+ }
259
+ // Create folder (with race condition handling)
260
+ console.log(`[FolderService] 🆕 Creating folder: ${folderName} (parent: ${parentFolderId || 'root'})`);
261
+ const folder = await this.createFolderWithRetry({
262
+ name: folderName,
263
+ parent_folder_id: parentFolderId,
264
+ folderPath: currentPath,
265
+ });
266
+ // Cache the created/fetched folder
267
+ this.folderCache.set(currentPath, folder);
268
+ console.log(`[FolderService] ✅ Folder ready: ${currentPath} → ${folder.id}`);
269
+ parentFolderId = folder.id;
270
+ }
271
+ return parentFolderId;
272
+ }
273
+ /**
274
+ * Clear cache (useful for testing or when folders are modified externally)
275
+ */
276
+ clearCache() {
277
+ this.folderCache.clear();
278
+ this.initialized = false;
279
+ this.initializationPromise = null;
280
+ console.log('[FolderService] Cache cleared');
281
+ }
282
+ /**
283
+ * Get folder by path (for testing/debugging)
284
+ */
285
+ getFolderByPath(folderPath) {
286
+ return this.folderCache.get(folderPath);
287
+ }
288
+ /**
289
+ * Get cache statistics (for debugging)
290
+ */
291
+ getCacheStats() {
292
+ return {
293
+ size: this.folderCache.size,
294
+ paths: Array.from(this.folderCache.keys()),
295
+ };
296
+ }
297
+ }
298
+ //# sourceMappingURL=folder-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folder-service.js","sourceRoot":"","sources":["../../src/sync/folder-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Waymaker Sync - Folder Status Mapper
3
+ * Maps folder locations to Commander status sections
4
+ *
5
+ * The "folder = status" paradigm: file location determines task status
6
+ * Moving a file between folders = changing task status
7
+ */
8
+ /**
9
+ * Default folder-to-status mappings
10
+ * These map common folder names to Commander status sections
11
+ */
12
+ export declare const DEFAULT_FOLDER_MAPPINGS: FolderMapping[];
13
+ /**
14
+ * Folder mapping configuration
15
+ */
16
+ export interface FolderMapping {
17
+ folderName: string;
18
+ statusSection: string;
19
+ isCompleted?: boolean;
20
+ }
21
+ /**
22
+ * Result of status extraction from path
23
+ */
24
+ export interface StatusFromPath {
25
+ statusSection: string;
26
+ isCompleted: boolean;
27
+ folderName: string;
28
+ confidence: 'exact' | 'inferred' | 'default';
29
+ }
30
+ /**
31
+ * Result of path generation from status
32
+ */
33
+ export interface PathFromStatus {
34
+ folderName: string;
35
+ suggestedPath: string;
36
+ }
37
+ /**
38
+ * Folder Status Mapper
39
+ * Handles bidirectional mapping between folder locations and status sections
40
+ */
41
+ export declare class FolderStatusMapper {
42
+ private mappings;
43
+ constructor(customMappings?: FolderMapping[]);
44
+ /**
45
+ * Extract status from file path
46
+ *
47
+ * Examples:
48
+ * /docs/02-working/tasks/in-progress/feature.md → "In Progress"
49
+ * /docs/02-working/tasks/done/feature.md → "Done"
50
+ * /docs/01-planning/epics/active/payments.md → "In Progress"
51
+ */
52
+ getStatusFromPath(filePath: string): StatusFromPath;
53
+ /**
54
+ * Infer status from path patterns when no exact match
55
+ */
56
+ private inferStatusFromPath;
57
+ /**
58
+ * Get folder name for a given status section
59
+ * Used when creating files from Commander tasks
60
+ */
61
+ getFolderForStatus(statusSection: string): PathFromStatus;
62
+ /**
63
+ * Calculate new file path when status changes
64
+ *
65
+ * @param currentPath Current file path
66
+ * @param newStatus New status section name
67
+ * @param basePath Base path for tasks (e.g., /docs/02-working/tasks)
68
+ */
69
+ getNewPathForStatus(currentPath: string, newStatus: string, basePath?: string): string;
70
+ /**
71
+ * Check if a path contains a status folder
72
+ */
73
+ hasStatusFolder(filePath: string): boolean;
74
+ /**
75
+ * Get all registered folder mappings
76
+ */
77
+ getAllMappings(): FolderMapping[];
78
+ /**
79
+ * Add or update a custom mapping
80
+ */
81
+ addMapping(mapping: FolderMapping): void;
82
+ /**
83
+ * Remove a mapping
84
+ */
85
+ removeMapping(folderName: string): boolean;
86
+ /**
87
+ * Get status sections grouped by completion state
88
+ */
89
+ getStatusSectionsByCompletion(): {
90
+ open: string[];
91
+ completed: string[];
92
+ };
93
+ /**
94
+ * Detect file move between status folders
95
+ * Returns the status change if detected
96
+ */
97
+ detectStatusChange(oldPath: string, newPath: string): {
98
+ oldStatus: StatusFromPath;
99
+ newStatus: StatusFromPath;
100
+ } | null;
101
+ }
102
+ /**
103
+ * Singleton instance with default mappings
104
+ */
105
+ export declare const folderStatusMapper: FolderStatusMapper;
106
+ //# sourceMappingURL=folder-status-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folder-status-mapper.d.ts","sourceRoot":"","sources":["../../src/sync/folder-status-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,aAAa,EAelD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAA6B;gBAEjC,cAAc,GAAE,aAAa,EAAO;IAchD;;;;;;;OAOG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAmCnD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwC3B;;;OAGG;IACH,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc;IAyBzD;;;;;;OAMG;IACH,mBAAmB,CACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM;IA8BT;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAK1C;;OAEG;IACH,cAAc,IAAI,aAAa,EAAE;IAIjC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAIxC;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI1C;;OAEG;IACH,6BAA6B,IAAI;QAC/B,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB;IAkBD;;;OAGG;IACH,kBAAkB,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd;QAAE,SAAS,EAAE,cAAc,CAAC;QAAC,SAAS,EAAE,cAAc,CAAA;KAAE,GAAG,IAAI;CAWnE;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
@@ -0,0 +1,235 @@
1
+ /**
2
+ * Waymaker Sync - Folder Status Mapper
3
+ * Maps folder locations to Commander status sections
4
+ *
5
+ * The "folder = status" paradigm: file location determines task status
6
+ * Moving a file between folders = changing task status
7
+ */
8
+ import * as path from 'path';
9
+ /**
10
+ * Default folder-to-status mappings
11
+ * These map common folder names to Commander status sections
12
+ */
13
+ export const DEFAULT_FOLDER_MAPPINGS = [
14
+ { folderName: 'backlog', statusSection: 'Backlog', isCompleted: false },
15
+ { folderName: 'to-do', statusSection: 'To Do', isCompleted: false },
16
+ { folderName: 'todo', statusSection: 'To Do', isCompleted: false },
17
+ { folderName: 'in-progress', statusSection: 'In Progress', isCompleted: false },
18
+ { folderName: 'in_progress', statusSection: 'In Progress', isCompleted: false },
19
+ { folderName: 'review', statusSection: 'Review', isCompleted: false },
20
+ { folderName: 'blocked', statusSection: 'Blocked', isCompleted: false },
21
+ { folderName: 'done', statusSection: 'Done', isCompleted: true },
22
+ { folderName: 'completed', statusSection: 'Done', isCompleted: true },
23
+ { folderName: 'archived', statusSection: 'Archived', isCompleted: true },
24
+ // Epic/PRD status folders
25
+ { folderName: 'active', statusSection: 'In Progress', isCompleted: false },
26
+ { folderName: 'planned', statusSection: 'Backlog', isCompleted: false },
27
+ { folderName: 'cancelled', statusSection: 'Cancelled', isCompleted: true },
28
+ ];
29
+ /**
30
+ * Folder Status Mapper
31
+ * Handles bidirectional mapping between folder locations and status sections
32
+ */
33
+ export class FolderStatusMapper {
34
+ mappings;
35
+ constructor(customMappings = []) {
36
+ this.mappings = new Map();
37
+ // Load default mappings first
38
+ for (const mapping of DEFAULT_FOLDER_MAPPINGS) {
39
+ this.mappings.set(mapping.folderName.toLowerCase(), mapping);
40
+ }
41
+ // Override with custom mappings
42
+ for (const mapping of customMappings) {
43
+ this.mappings.set(mapping.folderName.toLowerCase(), mapping);
44
+ }
45
+ }
46
+ /**
47
+ * Extract status from file path
48
+ *
49
+ * Examples:
50
+ * /docs/02-working/tasks/in-progress/feature.md → "In Progress"
51
+ * /docs/02-working/tasks/done/feature.md → "Done"
52
+ * /docs/01-planning/epics/active/payments.md → "In Progress"
53
+ */
54
+ getStatusFromPath(filePath) {
55
+ const normalizedPath = filePath.replace(/\\/g, '/');
56
+ const parts = normalizedPath.split('/');
57
+ // Check each folder in the path, from deepest to root
58
+ // The deepest matching folder wins
59
+ for (let i = parts.length - 2; i >= 0; i--) {
60
+ const folderName = parts[i].toLowerCase();
61
+ const mapping = this.mappings.get(folderName);
62
+ if (mapping) {
63
+ return {
64
+ statusSection: mapping.statusSection,
65
+ isCompleted: mapping.isCompleted ?? false,
66
+ folderName: mapping.folderName,
67
+ confidence: 'exact',
68
+ };
69
+ }
70
+ }
71
+ // Try to infer from path patterns
72
+ const inferred = this.inferStatusFromPath(normalizedPath);
73
+ if (inferred) {
74
+ return inferred;
75
+ }
76
+ // Default to "Backlog" if no status can be determined
77
+ return {
78
+ statusSection: 'Backlog',
79
+ isCompleted: false,
80
+ folderName: 'backlog',
81
+ confidence: 'default',
82
+ };
83
+ }
84
+ /**
85
+ * Infer status from path patterns when no exact match
86
+ */
87
+ inferStatusFromPath(normalizedPath) {
88
+ // Check for common patterns in path
89
+ const pathLower = normalizedPath.toLowerCase();
90
+ // Session briefs are typically completed
91
+ if (pathLower.includes('/sessions/completed/') ||
92
+ pathLower.includes('/sessions/done/')) {
93
+ return {
94
+ statusSection: 'Done',
95
+ isCompleted: true,
96
+ folderName: 'completed',
97
+ confidence: 'inferred',
98
+ };
99
+ }
100
+ // Current sessions are in progress
101
+ if (pathLower.includes('/sessions/current/') ||
102
+ pathLower.includes('/sessions/active/')) {
103
+ return {
104
+ statusSection: 'In Progress',
105
+ isCompleted: false,
106
+ folderName: 'current',
107
+ confidence: 'inferred',
108
+ };
109
+ }
110
+ // PRDs in planning are typically backlog unless marked active
111
+ if (pathLower.includes('/01-planning/') &&
112
+ !pathLower.includes('/active/')) {
113
+ return {
114
+ statusSection: 'Backlog',
115
+ isCompleted: false,
116
+ folderName: 'planning',
117
+ confidence: 'inferred',
118
+ };
119
+ }
120
+ return null;
121
+ }
122
+ /**
123
+ * Get folder name for a given status section
124
+ * Used when creating files from Commander tasks
125
+ */
126
+ getFolderForStatus(statusSection) {
127
+ const statusLower = statusSection.toLowerCase();
128
+ // Find matching mapping
129
+ for (const [folderName, mapping] of this.mappings) {
130
+ if (mapping.statusSection.toLowerCase() === statusLower) {
131
+ return {
132
+ folderName,
133
+ suggestedPath: folderName,
134
+ };
135
+ }
136
+ }
137
+ // Convert status to folder-friendly name
138
+ const folderName = statusSection
139
+ .toLowerCase()
140
+ .replace(/\s+/g, '-')
141
+ .replace(/[^a-z0-9-]/g, '');
142
+ return {
143
+ folderName,
144
+ suggestedPath: folderName,
145
+ };
146
+ }
147
+ /**
148
+ * Calculate new file path when status changes
149
+ *
150
+ * @param currentPath Current file path
151
+ * @param newStatus New status section name
152
+ * @param basePath Base path for tasks (e.g., /docs/02-working/tasks)
153
+ */
154
+ getNewPathForStatus(currentPath, newStatus, basePath) {
155
+ const normalizedPath = currentPath.replace(/\\/g, '/');
156
+ const currentStatus = this.getStatusFromPath(currentPath);
157
+ const newFolder = this.getFolderForStatus(newStatus);
158
+ // If the current path contains a known status folder, replace it
159
+ if (currentStatus.confidence === 'exact') {
160
+ const oldFolderPattern = new RegExp(`/${currentStatus.folderName}/`, 'i');
161
+ if (oldFolderPattern.test(normalizedPath)) {
162
+ return normalizedPath.replace(oldFolderPattern, `/${newFolder.folderName}/`);
163
+ }
164
+ }
165
+ // If we have a base path, construct the new path
166
+ if (basePath) {
167
+ const fileName = path.basename(currentPath);
168
+ return path.join(basePath, newFolder.folderName, fileName);
169
+ }
170
+ // Fallback: just return the current path (can't determine new location)
171
+ return currentPath;
172
+ }
173
+ /**
174
+ * Check if a path contains a status folder
175
+ */
176
+ hasStatusFolder(filePath) {
177
+ const status = this.getStatusFromPath(filePath);
178
+ return status.confidence !== 'default';
179
+ }
180
+ /**
181
+ * Get all registered folder mappings
182
+ */
183
+ getAllMappings() {
184
+ return Array.from(this.mappings.values());
185
+ }
186
+ /**
187
+ * Add or update a custom mapping
188
+ */
189
+ addMapping(mapping) {
190
+ this.mappings.set(mapping.folderName.toLowerCase(), mapping);
191
+ }
192
+ /**
193
+ * Remove a mapping
194
+ */
195
+ removeMapping(folderName) {
196
+ return this.mappings.delete(folderName.toLowerCase());
197
+ }
198
+ /**
199
+ * Get status sections grouped by completion state
200
+ */
201
+ getStatusSectionsByCompletion() {
202
+ const open = new Set();
203
+ const completed = new Set();
204
+ for (const mapping of this.mappings.values()) {
205
+ if (mapping.isCompleted) {
206
+ completed.add(mapping.statusSection);
207
+ }
208
+ else {
209
+ open.add(mapping.statusSection);
210
+ }
211
+ }
212
+ return {
213
+ open: Array.from(open),
214
+ completed: Array.from(completed),
215
+ };
216
+ }
217
+ /**
218
+ * Detect file move between status folders
219
+ * Returns the status change if detected
220
+ */
221
+ detectStatusChange(oldPath, newPath) {
222
+ const oldStatus = this.getStatusFromPath(oldPath);
223
+ const newStatus = this.getStatusFromPath(newPath);
224
+ // Only report if status actually changed
225
+ if (oldStatus.statusSection !== newStatus.statusSection) {
226
+ return { oldStatus, newStatus };
227
+ }
228
+ return null;
229
+ }
230
+ }
231
+ /**
232
+ * Singleton instance with default mappings
233
+ */
234
+ export const folderStatusMapper = new FolderStatusMapper();
235
+ //# sourceMappingURL=folder-status-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folder-status-mapper.js","sourceRoot":"","sources":["../../src/sync/folder-status-mapper.ts"],"names":[],"mappings":"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"}