@doist/todoist-cli 1.31.0 → 1.32.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 (529) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/commands/auth/helpers.d.ts +4 -0
  3. package/dist/commands/auth/helpers.d.ts.map +1 -0
  4. package/dist/commands/auth/helpers.js +31 -0
  5. package/dist/commands/auth/helpers.js.map +1 -0
  6. package/dist/commands/{auth.d.ts → auth/index.d.ts} +1 -1
  7. package/dist/commands/auth/index.d.ts.map +1 -0
  8. package/dist/commands/auth/index.js +17 -0
  9. package/dist/commands/auth/index.js.map +1 -0
  10. package/dist/commands/auth/login.d.ts +2 -0
  11. package/dist/commands/auth/login.d.ts.map +1 -0
  12. package/dist/commands/auth/login.js +30 -0
  13. package/dist/commands/auth/login.js.map +1 -0
  14. package/dist/commands/auth/logout.d.ts +2 -0
  15. package/dist/commands/auth/logout.d.ts.map +1 -0
  16. package/dist/commands/auth/logout.js +9 -0
  17. package/dist/commands/auth/logout.js.map +1 -0
  18. package/dist/commands/auth/status.d.ts +4 -0
  19. package/dist/commands/auth/status.d.ts.map +1 -0
  20. package/dist/commands/auth/status.js +39 -0
  21. package/dist/commands/auth/status.js.map +1 -0
  22. package/dist/commands/auth/token.d.ts +2 -0
  23. package/dist/commands/auth/token.d.ts.map +1 -0
  24. package/dist/commands/auth/token.js +17 -0
  25. package/dist/commands/auth/token.js.map +1 -0
  26. package/dist/commands/changelog.js +1 -1
  27. package/dist/commands/changelog.js.map +1 -1
  28. package/dist/commands/comment/add.d.ts +11 -0
  29. package/dist/commands/comment/add.d.ts.map +1 -0
  30. package/dist/commands/comment/add.js +71 -0
  31. package/dist/commands/comment/add.js.map +1 -0
  32. package/dist/commands/comment/browse.d.ts +2 -0
  33. package/dist/commands/comment/browse.d.ts.map +1 -0
  34. package/dist/commands/comment/browse.js +19 -0
  35. package/dist/commands/comment/browse.js.map +1 -0
  36. package/dist/commands/comment/delete.d.ts +5 -0
  37. package/dist/commands/comment/delete.d.ts.map +1 -0
  38. package/dist/commands/comment/delete.js +21 -0
  39. package/dist/commands/comment/delete.js.map +1 -0
  40. package/dist/commands/comment/helpers.d.ts +2 -0
  41. package/dist/commands/comment/helpers.d.ts.map +1 -0
  42. package/dist/commands/comment/helpers.js +7 -0
  43. package/dist/commands/comment/helpers.js.map +1 -0
  44. package/dist/commands/{comment.d.ts → comment/index.d.ts} +1 -1
  45. package/dist/commands/comment/index.d.ts.map +1 -0
  46. package/dist/commands/comment/index.js +91 -0
  47. package/dist/commands/comment/index.js.map +1 -0
  48. package/dist/commands/comment/list.d.ts +8 -0
  49. package/dist/commands/comment/list.d.ts.map +1 -0
  50. package/dist/commands/comment/list.js +63 -0
  51. package/dist/commands/comment/list.js.map +1 -0
  52. package/dist/commands/comment/update.d.ts +6 -0
  53. package/dist/commands/comment/update.d.ts.map +1 -0
  54. package/dist/commands/comment/update.js +22 -0
  55. package/dist/commands/comment/update.js.map +1 -0
  56. package/dist/commands/comment/view.d.ts +3 -0
  57. package/dist/commands/comment/view.d.ts.map +1 -0
  58. package/dist/commands/comment/view.js +40 -0
  59. package/dist/commands/comment/view.js.map +1 -0
  60. package/dist/commands/completion/helpers.d.ts +13 -0
  61. package/dist/commands/completion/helpers.d.ts.map +1 -0
  62. package/dist/commands/completion/helpers.js +26 -0
  63. package/dist/commands/completion/helpers.js.map +1 -0
  64. package/dist/commands/{completion.d.ts → completion/index.d.ts} +1 -1
  65. package/dist/commands/completion/index.d.ts.map +1 -0
  66. package/dist/commands/completion/index.js +28 -0
  67. package/dist/commands/completion/index.js.map +1 -0
  68. package/dist/commands/completion/install.d.ts +2 -0
  69. package/dist/commands/completion/install.d.ts.map +1 -0
  70. package/dist/commands/completion/install.js +16 -0
  71. package/dist/commands/completion/install.js.map +1 -0
  72. package/dist/commands/completion/server.d.ts +3 -0
  73. package/dist/commands/completion/server.d.ts.map +1 -0
  74. package/dist/commands/completion/server.js +35 -0
  75. package/dist/commands/completion/server.js.map +1 -0
  76. package/dist/commands/completion/uninstall.d.ts +2 -0
  77. package/dist/commands/completion/uninstall.d.ts.map +1 -0
  78. package/dist/commands/completion/uninstall.js +19 -0
  79. package/dist/commands/completion/uninstall.js.map +1 -0
  80. package/dist/commands/filter/browse.d.ts +2 -0
  81. package/dist/commands/filter/browse.d.ts.map +1 -0
  82. package/dist/commands/filter/browse.js +8 -0
  83. package/dist/commands/filter/browse.js.map +1 -0
  84. package/dist/commands/filter/create.d.ts +11 -0
  85. package/dist/commands/filter/create.d.ts.map +1 -0
  86. package/dist/commands/filter/create.js +28 -0
  87. package/dist/commands/filter/create.js.map +1 -0
  88. package/dist/commands/filter/delete.d.ts +5 -0
  89. package/dist/commands/filter/delete.d.ts.map +1 -0
  90. package/dist/commands/filter/delete.js +20 -0
  91. package/dist/commands/filter/delete.js.map +1 -0
  92. package/dist/commands/filter/helpers.d.ts +3 -0
  93. package/dist/commands/filter/helpers.d.ts.map +1 -0
  94. package/dist/commands/filter/helpers.js +33 -0
  95. package/dist/commands/filter/helpers.js.map +1 -0
  96. package/dist/commands/filter/index.d.ts +4 -0
  97. package/dist/commands/filter/index.d.ts.map +1 -0
  98. package/dist/commands/filter/index.js +91 -0
  99. package/dist/commands/filter/index.js.map +1 -0
  100. package/dist/commands/filter/list.d.ts +3 -0
  101. package/dist/commands/filter/list.d.ts.map +1 -0
  102. package/dist/commands/filter/list.js +31 -0
  103. package/dist/commands/filter/list.js.map +1 -0
  104. package/dist/commands/filter/update.d.ts +10 -0
  105. package/dist/commands/filter/update.d.ts.map +1 -0
  106. package/dist/commands/filter/update.js +31 -0
  107. package/dist/commands/filter/update.js.map +1 -0
  108. package/dist/commands/filter/view.d.ts +3 -0
  109. package/dist/commands/filter/view.d.ts.map +1 -0
  110. package/dist/commands/filter/view.js +77 -0
  111. package/dist/commands/filter/view.js.map +1 -0
  112. package/dist/commands/label/browse.d.ts +2 -0
  113. package/dist/commands/label/browse.d.ts.map +1 -0
  114. package/dist/commands/label/browse.js +8 -0
  115. package/dist/commands/label/browse.js.map +1 -0
  116. package/dist/commands/label/create.d.ts +10 -0
  117. package/dist/commands/label/create.d.ts.map +1 -0
  118. package/dist/commands/label/create.js +26 -0
  119. package/dist/commands/label/create.js.map +1 -0
  120. package/dist/commands/label/delete.d.ts +5 -0
  121. package/dist/commands/label/delete.d.ts.map +1 -0
  122. package/dist/commands/label/delete.js +19 -0
  123. package/dist/commands/label/delete.js.map +1 -0
  124. package/dist/commands/label/helpers.d.ts +8 -0
  125. package/dist/commands/label/helpers.d.ts.map +1 -0
  126. package/dist/commands/label/helpers.js +62 -0
  127. package/dist/commands/label/helpers.js.map +1 -0
  128. package/dist/commands/label/index.d.ts +4 -0
  129. package/dist/commands/label/index.d.ts.map +1 -0
  130. package/dist/commands/label/index.js +90 -0
  131. package/dist/commands/label/index.js.map +1 -0
  132. package/dist/commands/label/list.d.ts +3 -0
  133. package/dist/commands/label/list.d.ts.map +1 -0
  134. package/dist/commands/label/list.js +52 -0
  135. package/dist/commands/label/list.js.map +1 -0
  136. package/dist/commands/label/update.d.ts +10 -0
  137. package/dist/commands/label/update.d.ts.map +1 -0
  138. package/dist/commands/label/update.js +35 -0
  139. package/dist/commands/label/update.js.map +1 -0
  140. package/dist/commands/label/view.d.ts +3 -0
  141. package/dist/commands/label/view.d.ts.map +1 -0
  142. package/dist/commands/label/view.js +70 -0
  143. package/dist/commands/label/view.js.map +1 -0
  144. package/dist/commands/notification/accept.d.ts +2 -0
  145. package/dist/commands/notification/accept.d.ts.map +1 -0
  146. package/dist/commands/notification/accept.js +16 -0
  147. package/dist/commands/notification/accept.js.map +1 -0
  148. package/dist/commands/notification/helpers.d.ts +6 -0
  149. package/dist/commands/notification/helpers.d.ts.map +1 -0
  150. package/dist/commands/notification/helpers.js +78 -0
  151. package/dist/commands/notification/helpers.js.map +1 -0
  152. package/dist/commands/{notification.d.ts → notification/index.d.ts} +1 -1
  153. package/dist/commands/notification/index.d.ts.map +1 -0
  154. package/dist/commands/notification/index.js +69 -0
  155. package/dist/commands/notification/index.js.map +1 -0
  156. package/dist/commands/notification/list.d.ts +10 -0
  157. package/dist/commands/notification/list.d.ts.map +1 -0
  158. package/dist/commands/notification/list.js +61 -0
  159. package/dist/commands/notification/list.js.map +1 -0
  160. package/dist/commands/notification/read.d.ts +7 -0
  161. package/dist/commands/notification/read.d.ts.map +1 -0
  162. package/dist/commands/notification/read.js +23 -0
  163. package/dist/commands/notification/read.js.map +1 -0
  164. package/dist/commands/notification/reject.d.ts +2 -0
  165. package/dist/commands/notification/reject.d.ts.map +1 -0
  166. package/dist/commands/notification/reject.js +16 -0
  167. package/dist/commands/notification/reject.js.map +1 -0
  168. package/dist/commands/notification/unread.d.ts +2 -0
  169. package/dist/commands/notification/unread.d.ts.map +1 -0
  170. package/dist/commands/notification/unread.js +8 -0
  171. package/dist/commands/notification/unread.js.map +1 -0
  172. package/dist/commands/notification/view.d.ts +3 -0
  173. package/dist/commands/notification/view.d.ts.map +1 -0
  174. package/dist/commands/notification/view.js +31 -0
  175. package/dist/commands/notification/view.js.map +1 -0
  176. package/dist/commands/project/activity-stats.d.ts +6 -0
  177. package/dist/commands/project/activity-stats.d.ts.map +1 -0
  178. package/dist/commands/project/activity-stats.js +41 -0
  179. package/dist/commands/project/activity-stats.js.map +1 -0
  180. package/dist/commands/project/analyze-health.d.ts +5 -0
  181. package/dist/commands/project/analyze-health.d.ts.map +1 -0
  182. package/dist/commands/project/analyze-health.js +20 -0
  183. package/dist/commands/project/analyze-health.js.map +1 -0
  184. package/dist/commands/project/archive.d.ts +4 -0
  185. package/dist/commands/project/archive.d.ts.map +1 -0
  186. package/dist/commands/project/archive.js +14 -0
  187. package/dist/commands/project/archive.js.map +1 -0
  188. package/dist/commands/project/archived-count.d.ts +6 -0
  189. package/dist/commands/project/archived-count.d.ts.map +1 -0
  190. package/dist/commands/project/archived-count.js +26 -0
  191. package/dist/commands/project/archived-count.js.map +1 -0
  192. package/dist/commands/project/browse.d.ts +2 -0
  193. package/dist/commands/project/browse.d.ts.map +1 -0
  194. package/dist/commands/project/browse.js +10 -0
  195. package/dist/commands/project/browse.js.map +1 -0
  196. package/dist/commands/project/collaborators.d.ts +2 -0
  197. package/dist/commands/project/collaborators.d.ts.map +1 -0
  198. package/dist/commands/project/collaborators.js +48 -0
  199. package/dist/commands/project/collaborators.js.map +1 -0
  200. package/dist/commands/project/create.d.ts +12 -0
  201. package/dist/commands/project/create.d.ts.map +1 -0
  202. package/dist/commands/project/create.js +39 -0
  203. package/dist/commands/project/create.js.map +1 -0
  204. package/dist/commands/project/delete.d.ts +5 -0
  205. package/dist/commands/project/delete.d.ts.map +1 -0
  206. package/dist/commands/project/delete.js +23 -0
  207. package/dist/commands/project/delete.js.map +1 -0
  208. package/dist/commands/project/health-context.d.ts +4 -0
  209. package/dist/commands/project/health-context.d.ts.map +1 -0
  210. package/dist/commands/project/health-context.js +44 -0
  211. package/dist/commands/project/health-context.js.map +1 -0
  212. package/dist/commands/project/health.d.ts +4 -0
  213. package/dist/commands/project/health.d.ts.map +1 -0
  214. package/dist/commands/project/health.js +39 -0
  215. package/dist/commands/project/health.js.map +1 -0
  216. package/dist/commands/project/helpers.d.ts +3 -0
  217. package/dist/commands/project/helpers.d.ts.map +1 -0
  218. package/dist/commands/project/helpers.js +2 -0
  219. package/dist/commands/project/helpers.js.map +1 -0
  220. package/dist/commands/project/index.d.ts +4 -0
  221. package/dist/commands/project/index.d.ts.map +1 -0
  222. package/dist/commands/project/index.js +239 -0
  223. package/dist/commands/project/index.js.map +1 -0
  224. package/dist/commands/project/join.d.ts +5 -0
  225. package/dist/commands/project/join.d.ts.map +1 -0
  226. package/dist/commands/project/join.js +20 -0
  227. package/dist/commands/project/join.js.map +1 -0
  228. package/dist/commands/project/list.d.ts +7 -0
  229. package/dist/commands/project/list.d.ts.map +1 -0
  230. package/dist/commands/project/list.js +109 -0
  231. package/dist/commands/project/list.js.map +1 -0
  232. package/dist/commands/project/move.d.ts +10 -0
  233. package/dist/commands/project/move.d.ts.map +1 -0
  234. package/dist/commands/project/move.js +79 -0
  235. package/dist/commands/project/move.js.map +1 -0
  236. package/dist/commands/project/permissions.d.ts +4 -0
  237. package/dist/commands/project/permissions.d.ts.map +1 -0
  238. package/dist/commands/project/permissions.js +34 -0
  239. package/dist/commands/project/permissions.js.map +1 -0
  240. package/dist/commands/project/progress.d.ts +4 -0
  241. package/dist/commands/project/progress.d.ts.map +1 -0
  242. package/dist/commands/project/progress.js +20 -0
  243. package/dist/commands/project/progress.js.map +1 -0
  244. package/dist/commands/project/unarchive.d.ts +4 -0
  245. package/dist/commands/project/unarchive.d.ts.map +1 -0
  246. package/dist/commands/project/unarchive.js +14 -0
  247. package/dist/commands/project/unarchive.js.map +1 -0
  248. package/dist/commands/project/update.d.ts +11 -0
  249. package/dist/commands/project/update.d.ts.map +1 -0
  250. package/dist/commands/project/update.js +38 -0
  251. package/dist/commands/project/update.js.map +1 -0
  252. package/dist/commands/project/view.d.ts +5 -0
  253. package/dist/commands/project/view.d.ts.map +1 -0
  254. package/dist/commands/project/view.js +151 -0
  255. package/dist/commands/project/view.js.map +1 -0
  256. package/dist/commands/reminder/add.d.ts +9 -0
  257. package/dist/commands/reminder/add.d.ts.map +1 -0
  258. package/dist/commands/reminder/add.js +87 -0
  259. package/dist/commands/reminder/add.js.map +1 -0
  260. package/dist/commands/reminder/delete.d.ts +7 -0
  261. package/dist/commands/reminder/delete.d.ts.map +1 -0
  262. package/dist/commands/reminder/delete.js +27 -0
  263. package/dist/commands/reminder/delete.js.map +1 -0
  264. package/dist/commands/reminder/helpers.d.ts +4 -0
  265. package/dist/commands/reminder/helpers.d.ts.map +1 -0
  266. package/dist/commands/reminder/helpers.js +35 -0
  267. package/dist/commands/reminder/helpers.js.map +1 -0
  268. package/dist/commands/{reminder.d.ts → reminder/index.d.ts} +1 -1
  269. package/dist/commands/reminder/index.d.ts.map +1 -0
  270. package/dist/commands/reminder/index.js +70 -0
  271. package/dist/commands/reminder/index.js.map +1 -0
  272. package/dist/commands/reminder/list.d.ts +3 -0
  273. package/dist/commands/reminder/list.d.ts.map +1 -0
  274. package/dist/commands/reminder/list.js +29 -0
  275. package/dist/commands/reminder/list.js.map +1 -0
  276. package/dist/commands/reminder/update.d.ts +8 -0
  277. package/dist/commands/reminder/update.d.ts.map +1 -0
  278. package/dist/commands/reminder/update.js +50 -0
  279. package/dist/commands/reminder/update.js.map +1 -0
  280. package/dist/commands/section/archive.d.ts +4 -0
  281. package/dist/commands/section/archive.d.ts.map +1 -0
  282. package/dist/commands/section/archive.js +15 -0
  283. package/dist/commands/section/archive.js.map +1 -0
  284. package/dist/commands/section/browse.d.ts +2 -0
  285. package/dist/commands/section/browse.d.ts.map +1 -0
  286. package/dist/commands/section/browse.js +8 -0
  287. package/dist/commands/section/browse.js.map +1 -0
  288. package/dist/commands/section/create.d.ts +9 -0
  289. package/dist/commands/section/create.d.ts.map +1 -0
  290. package/dist/commands/section/create.js +26 -0
  291. package/dist/commands/section/create.js.map +1 -0
  292. package/dist/commands/section/delete.d.ts +5 -0
  293. package/dist/commands/section/delete.d.ts.map +1 -0
  294. package/dist/commands/section/delete.js +24 -0
  295. package/dist/commands/section/delete.js.map +1 -0
  296. package/dist/commands/{section.d.ts → section/index.d.ts} +1 -1
  297. package/dist/commands/section/index.d.ts.map +1 -0
  298. package/dist/commands/section/index.js +103 -0
  299. package/dist/commands/section/index.js.map +1 -0
  300. package/dist/commands/section/list.d.ts +3 -0
  301. package/dist/commands/section/list.d.ts.map +1 -0
  302. package/dist/commands/section/list.js +37 -0
  303. package/dist/commands/section/list.js.map +1 -0
  304. package/dist/commands/section/unarchive.d.ts +4 -0
  305. package/dist/commands/section/unarchive.d.ts.map +1 -0
  306. package/dist/commands/section/unarchive.js +15 -0
  307. package/dist/commands/section/unarchive.js.map +1 -0
  308. package/dist/commands/section/update.d.ts +6 -0
  309. package/dist/commands/section/update.d.ts.map +1 -0
  310. package/dist/commands/section/update.js +20 -0
  311. package/dist/commands/section/update.js.map +1 -0
  312. package/dist/commands/settings/helpers.d.ts +29 -0
  313. package/dist/commands/settings/helpers.d.ts.map +1 -0
  314. package/dist/commands/settings/helpers.js +183 -0
  315. package/dist/commands/settings/helpers.js.map +1 -0
  316. package/dist/commands/settings/index.d.ts +4 -0
  317. package/dist/commands/settings/index.d.ts.map +1 -0
  318. package/dist/commands/settings/index.js +46 -0
  319. package/dist/commands/settings/index.js.map +1 -0
  320. package/dist/commands/settings/update.d.ts +18 -0
  321. package/dist/commands/settings/update.d.ts.map +1 -0
  322. package/dist/commands/settings/update.js +52 -0
  323. package/dist/commands/settings/update.js.map +1 -0
  324. package/dist/commands/settings/view.d.ts +3 -0
  325. package/dist/commands/settings/view.d.ts.map +1 -0
  326. package/dist/commands/settings/view.js +44 -0
  327. package/dist/commands/settings/view.js.map +1 -0
  328. package/dist/commands/{skill.d.ts → skill/index.d.ts} +1 -1
  329. package/dist/commands/skill/index.d.ts.map +1 -0
  330. package/dist/commands/skill/index.js +46 -0
  331. package/dist/commands/skill/index.js.map +1 -0
  332. package/dist/commands/skill/install.d.ts +6 -0
  333. package/dist/commands/skill/install.d.ts.map +1 -0
  334. package/dist/commands/skill/install.js +19 -0
  335. package/dist/commands/skill/install.js.map +1 -0
  336. package/dist/commands/skill/list.d.ts +2 -0
  337. package/dist/commands/skill/list.d.ts.map +1 -0
  338. package/dist/commands/skill/list.js +23 -0
  339. package/dist/commands/skill/list.js.map +1 -0
  340. package/dist/commands/skill/uninstall.d.ts +5 -0
  341. package/dist/commands/skill/uninstall.d.ts.map +1 -0
  342. package/dist/commands/skill/uninstall.js +16 -0
  343. package/dist/commands/skill/uninstall.js.map +1 -0
  344. package/dist/commands/skill/update.d.ts +6 -0
  345. package/dist/commands/skill/update.d.ts.map +1 -0
  346. package/dist/commands/skill/update.js +39 -0
  347. package/dist/commands/skill/update.js.map +1 -0
  348. package/dist/commands/stats/goals.d.ts +8 -0
  349. package/dist/commands/stats/goals.d.ts.map +1 -0
  350. package/dist/commands/stats/goals.js +26 -0
  351. package/dist/commands/stats/goals.js.map +1 -0
  352. package/dist/commands/stats/helpers.d.ts +9 -0
  353. package/dist/commands/stats/helpers.d.ts.map +1 -0
  354. package/dist/commands/{stats.js → stats/helpers.js} +8 -72
  355. package/dist/commands/stats/helpers.js.map +1 -0
  356. package/dist/commands/{stats.d.ts → stats/index.d.ts} +1 -1
  357. package/dist/commands/stats/index.d.ts.map +1 -0
  358. package/dist/commands/stats/index.js +24 -0
  359. package/dist/commands/stats/index.js.map +1 -0
  360. package/dist/commands/stats/vacation.d.ts +8 -0
  361. package/dist/commands/stats/vacation.d.ts.map +1 -0
  362. package/dist/commands/stats/vacation.js +13 -0
  363. package/dist/commands/stats/vacation.js.map +1 -0
  364. package/dist/commands/stats/view.d.ts +3 -0
  365. package/dist/commands/stats/view.d.ts.map +1 -0
  366. package/dist/commands/stats/view.js +11 -0
  367. package/dist/commands/stats/view.js.map +1 -0
  368. package/dist/commands/task/add.d.ts +20 -0
  369. package/dist/commands/task/add.d.ts.map +1 -0
  370. package/dist/commands/task/add.js +112 -0
  371. package/dist/commands/task/add.js.map +1 -0
  372. package/dist/commands/task/browse.d.ts +2 -0
  373. package/dist/commands/task/browse.d.ts.map +1 -0
  374. package/dist/commands/task/browse.js +10 -0
  375. package/dist/commands/task/browse.js.map +1 -0
  376. package/dist/commands/task/complete.d.ts +5 -0
  377. package/dist/commands/task/complete.d.ts.map +1 -0
  378. package/dist/commands/task/complete.js +34 -0
  379. package/dist/commands/task/complete.js.map +1 -0
  380. package/dist/commands/task/delete.d.ts +5 -0
  381. package/dist/commands/task/delete.d.ts.map +1 -0
  382. package/dist/commands/task/delete.js +19 -0
  383. package/dist/commands/task/delete.js.map +1 -0
  384. package/dist/commands/task/helpers.d.ts +6 -0
  385. package/dist/commands/task/helpers.d.ts.map +1 -0
  386. package/dist/commands/task/helpers.js +13 -0
  387. package/dist/commands/task/helpers.js.map +1 -0
  388. package/dist/commands/task/index.d.ts +4 -0
  389. package/dist/commands/task/index.d.ts.map +1 -0
  390. package/dist/commands/task/index.js +197 -0
  391. package/dist/commands/task/index.js.map +1 -0
  392. package/dist/commands/task/list.d.ts +6 -0
  393. package/dist/commands/task/list.d.ts.map +1 -0
  394. package/dist/commands/task/list.js +19 -0
  395. package/dist/commands/task/list.js.map +1 -0
  396. package/dist/commands/task/move.d.ts +8 -0
  397. package/dist/commands/task/move.d.ts.map +1 -0
  398. package/dist/commands/task/move.js +51 -0
  399. package/dist/commands/task/move.js.map +1 -0
  400. package/dist/commands/task/reschedule.d.ts +5 -0
  401. package/dist/commands/task/reschedule.d.ts.map +1 -0
  402. package/dist/commands/task/reschedule.js +36 -0
  403. package/dist/commands/task/reschedule.js.map +1 -0
  404. package/dist/commands/task/uncomplete.d.ts +4 -0
  405. package/dist/commands/task/uncomplete.d.ts.map +1 -0
  406. package/dist/commands/task/uncomplete.js +14 -0
  407. package/dist/commands/task/uncomplete.js.map +1 -0
  408. package/dist/commands/task/update.d.ts +19 -0
  409. package/dist/commands/task/update.d.ts.map +1 -0
  410. package/dist/commands/task/update.js +82 -0
  411. package/dist/commands/task/update.js.map +1 -0
  412. package/dist/commands/task/view.d.ts +3 -0
  413. package/dist/commands/task/view.d.ts.map +1 -0
  414. package/dist/commands/task/view.js +28 -0
  415. package/dist/commands/task/view.js.map +1 -0
  416. package/dist/commands/template/create.d.ts +10 -0
  417. package/dist/commands/template/create.d.ts.map +1 -0
  418. package/dist/commands/template/create.js +59 -0
  419. package/dist/commands/template/create.js.map +1 -0
  420. package/dist/commands/template/export-file.d.ts +8 -0
  421. package/dist/commands/template/export-file.d.ts.map +1 -0
  422. package/dist/commands/template/export-file.js +26 -0
  423. package/dist/commands/template/export-file.js.map +1 -0
  424. package/dist/commands/template/export-url.d.ts +7 -0
  425. package/dist/commands/template/export-url.d.ts.map +1 -0
  426. package/dist/commands/template/export-url.js +19 -0
  427. package/dist/commands/template/export-url.js.map +1 -0
  428. package/dist/commands/template/helpers.d.ts +3 -0
  429. package/dist/commands/template/helpers.d.ts.map +1 -0
  430. package/dist/commands/template/helpers.js +17 -0
  431. package/dist/commands/template/helpers.js.map +1 -0
  432. package/dist/commands/template/import-file.d.ts +9 -0
  433. package/dist/commands/template/import-file.d.ts.map +1 -0
  434. package/dist/commands/template/import-file.js +47 -0
  435. package/dist/commands/template/import-file.js.map +1 -0
  436. package/dist/commands/template/import-id.d.ts +9 -0
  437. package/dist/commands/template/import-id.d.ts.map +1 -0
  438. package/dist/commands/template/import-id.js +30 -0
  439. package/dist/commands/template/import-id.js.map +1 -0
  440. package/dist/commands/template/index.d.ts +3 -0
  441. package/dist/commands/template/index.d.ts.map +1 -0
  442. package/dist/commands/template/index.js +96 -0
  443. package/dist/commands/template/index.js.map +1 -0
  444. package/dist/commands/view.js +4 -4
  445. package/dist/commands/view.js.map +1 -1
  446. package/dist/commands/workspace/helpers.d.ts +2 -0
  447. package/dist/commands/workspace/helpers.d.ts.map +1 -0
  448. package/dist/commands/workspace/helpers.js +2 -0
  449. package/dist/commands/workspace/helpers.js.map +1 -0
  450. package/dist/commands/{workspace.d.ts → workspace/index.d.ts} +1 -1
  451. package/dist/commands/workspace/index.d.ts.map +1 -0
  452. package/dist/commands/workspace/index.js +89 -0
  453. package/dist/commands/workspace/index.js.map +1 -0
  454. package/dist/commands/workspace/insights.d.ts +5 -0
  455. package/dist/commands/workspace/insights.d.ts.map +1 -0
  456. package/dist/commands/workspace/insights.js +54 -0
  457. package/dist/commands/workspace/insights.js.map +1 -0
  458. package/dist/commands/workspace/list.d.ts +3 -0
  459. package/dist/commands/workspace/list.d.ts.map +1 -0
  460. package/dist/commands/workspace/list.js +47 -0
  461. package/dist/commands/workspace/list.js.map +1 -0
  462. package/dist/commands/workspace/projects.d.ts +3 -0
  463. package/dist/commands/workspace/projects.d.ts.map +1 -0
  464. package/dist/commands/workspace/projects.js +97 -0
  465. package/dist/commands/workspace/projects.js.map +1 -0
  466. package/dist/commands/workspace/users.d.ts +5 -0
  467. package/dist/commands/workspace/users.d.ts.map +1 -0
  468. package/dist/commands/workspace/users.js +93 -0
  469. package/dist/commands/workspace/users.js.map +1 -0
  470. package/dist/commands/workspace/view.d.ts +2 -0
  471. package/dist/commands/workspace/view.d.ts.map +1 -0
  472. package/dist/commands/workspace/view.js +17 -0
  473. package/dist/commands/workspace/view.js.map +1 -0
  474. package/dist/index.js +21 -14
  475. package/dist/index.js.map +1 -1
  476. package/dist/lib/api/core.d.ts.map +1 -1
  477. package/dist/lib/api/core.js +5 -0
  478. package/dist/lib/api/core.js.map +1 -1
  479. package/dist/lib/skills/content.d.ts +1 -1
  480. package/dist/lib/skills/content.d.ts.map +1 -1
  481. package/dist/lib/skills/content.js +21 -0
  482. package/dist/lib/skills/content.js.map +1 -1
  483. package/package.json +4 -4
  484. package/dist/commands/auth.d.ts.map +0 -1
  485. package/dist/commands/auth.js +0 -124
  486. package/dist/commands/auth.js.map +0 -1
  487. package/dist/commands/comment.d.ts.map +0 -1
  488. package/dist/commands/comment.js +0 -301
  489. package/dist/commands/comment.js.map +0 -1
  490. package/dist/commands/completion.d.ts.map +0 -1
  491. package/dist/commands/completion.js +0 -107
  492. package/dist/commands/completion.js.map +0 -1
  493. package/dist/commands/filter.d.ts +0 -5
  494. package/dist/commands/filter.d.ts.map +0 -1
  495. package/dist/commands/filter.js +0 -287
  496. package/dist/commands/filter.js.map +0 -1
  497. package/dist/commands/label.d.ts +0 -5
  498. package/dist/commands/label.d.ts.map +0 -1
  499. package/dist/commands/label.js +0 -328
  500. package/dist/commands/label.js.map +0 -1
  501. package/dist/commands/notification.d.ts.map +0 -1
  502. package/dist/commands/notification.js +0 -274
  503. package/dist/commands/notification.js.map +0 -1
  504. package/dist/commands/project.d.ts +0 -7
  505. package/dist/commands/project.d.ts.map +0 -1
  506. package/dist/commands/project.js +0 -912
  507. package/dist/commands/project.js.map +0 -1
  508. package/dist/commands/reminder.d.ts.map +0 -1
  509. package/dist/commands/reminder.js +0 -271
  510. package/dist/commands/reminder.js.map +0 -1
  511. package/dist/commands/section.d.ts.map +0 -1
  512. package/dist/commands/section.js +0 -216
  513. package/dist/commands/section.js.map +0 -1
  514. package/dist/commands/settings.d.ts +0 -12
  515. package/dist/commands/settings.d.ts.map +0 -1
  516. package/dist/commands/settings.js +0 -312
  517. package/dist/commands/settings.js.map +0 -1
  518. package/dist/commands/skill.d.ts.map +0 -1
  519. package/dist/commands/skill.js +0 -127
  520. package/dist/commands/skill.js.map +0 -1
  521. package/dist/commands/stats.d.ts.map +0 -1
  522. package/dist/commands/stats.js.map +0 -1
  523. package/dist/commands/task.d.ts +0 -5
  524. package/dist/commands/task.d.ts.map +0 -1
  525. package/dist/commands/task.js +0 -559
  526. package/dist/commands/task.js.map +0 -1
  527. package/dist/commands/workspace.d.ts.map +0 -1
  528. package/dist/commands/workspace.js +0 -375
  529. package/dist/commands/workspace.js.map +0 -1
@@ -23,7 +23,9 @@ Use this skill when the user wants to interact with their Todoist tasks.
23
23
  - \`td workspace insights <ref>\` - Workspace-wide project insights
24
24
  - \`td activity\` - Activity logs
25
25
  - \`td notification list\` - Notifications
26
+ - \`td reminder list\` - List reminders (all or per task)
26
27
  - \`td reminder add\` - Task reminders
28
+ - \`td template create/export-file/export-url/import-file/import-id\` - Project templates
27
29
  - \`td auth status\` - Authentication status
28
30
  - \`td stats\` - Productivity stats
29
31
  - \`td settings view\` - User settings
@@ -49,6 +51,7 @@ The following mutating commands also support \`--json\` to return the created or
49
51
  - \`section create\`, \`section update\`
50
52
  - \`filter create\`
51
53
  - \`reminder add\`
54
+ - \`template create\`, \`template import-file\`, \`template import-id\`
52
55
  - \`project analyze-health\`
53
56
 
54
57
  All mutating commands support \`--dry-run\` to preview what would happen without executing:
@@ -361,6 +364,24 @@ td reminder add "task name" --before 30m --dry-run # Preview reminder creation
361
364
  td reminder delete id:123 --yes
362
365
  \`\`\`
363
366
 
367
+ ### Templates
368
+ \`\`\`bash
369
+ td template export-file "My Project" # Export project as CSV template to stdout
370
+ td template export-file "My Project" --output template.csv # Write to file
371
+ td template export-file "My Project" --relative-dates # Use relative dates
372
+ td template export-file "My Project" --json # JSON: { "content": "..." }
373
+ td template export-url "My Project" # Get template download URL
374
+ td template export-url "My Project" --json # JSON: { fileName, fileUrl }
375
+ td template create --name "New Project" --file template.csv # Create project from template
376
+ td template create --name "New Project" --file template.csv --workspace "Work" # In workspace
377
+ td template create --name "New Project" --file template.csv --json # Return created data as JSON
378
+ td template create --name "New Project" --file template.csv --dry-run # Preview
379
+ td template import-file "My Project" --file template.csv # Import template into project
380
+ td template import-file "My Project" --file template.csv --json # Return import result as JSON
381
+ td template import-id "My Project" --template-id product-launch # Import template by ID
382
+ td template import-id "My Project" --template-id product-launch --locale fr # With locale
383
+ \`\`\`
384
+
364
385
  ### Auth
365
386
  \`\`\`bash
366
387
  td auth status # Check authentication
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/lib/skills/content.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAA;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAC1B,2EAA2E,CAAA;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8b5B,CAAA"}
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/lib/skills/content.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAA;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAC1B,2EAA2E,CAAA;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmd5B,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@doist/todoist-cli",
3
- "version": "1.31.0",
3
+ "version": "1.32.0",
4
4
  "description": "TypeScript CLI for Todoist",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -71,10 +71,10 @@
71
71
  "@types/node": "25.5.0",
72
72
  "conventional-changelog-conventionalcommits": "9.3.0",
73
73
  "lefthook": "2.1.4",
74
- "oxfmt": "0.41.0",
75
- "oxlint": "1.56.0",
74
+ "oxfmt": "0.42.0",
75
+ "oxlint": "1.57.0",
76
76
  "semantic-release": "25.0.3",
77
77
  "typescript": "6.0.2",
78
- "vitest": "4.1.0"
78
+ "vitest": "4.1.1"
79
79
  }
80
80
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA+HnC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAe1D"}
@@ -1,124 +0,0 @@
1
- import { createInterface } from 'node:readline';
2
- import chalk from 'chalk';
3
- import open from 'open';
4
- import { getApi } from '../lib/api/core.js';
5
- import { NoTokenError, clearApiToken, saveApiToken } from '../lib/auth.js';
6
- import { startCallbackServer } from '../lib/oauth-server.js';
7
- import { buildAuthorizationUrl, exchangeCodeForToken } from '../lib/oauth.js';
8
- import { generateCodeChallenge, generateCodeVerifier, generateState } from '../lib/pkce.js';
9
- function promptHiddenInput(prompt) {
10
- return new Promise((resolve) => {
11
- const rl = createInterface({
12
- input: process.stdin,
13
- output: process.stdout,
14
- });
15
- // biome-ignore lint/suspicious/noExplicitAny: accessing private readline property
16
- const origWrite = rl._writeToOutput;
17
- rl._writeToOutput = (str) => {
18
- if (str.includes(prompt)) {
19
- origWrite.call(rl, prompt);
20
- }
21
- };
22
- rl.question(prompt, (answer) => {
23
- rl.close();
24
- process.stdout.write('\n');
25
- resolve(answer);
26
- });
27
- });
28
- }
29
- async function loginWithToken(token) {
30
- if (!token) {
31
- token = await promptHiddenInput('API token: ');
32
- if (!token.trim()) {
33
- console.error(chalk.red('Error:'), 'No token provided');
34
- process.exitCode = 1;
35
- return;
36
- }
37
- }
38
- const result = await saveApiToken(token.trim());
39
- console.log(chalk.green('✓'), 'API token saved successfully!');
40
- logTokenStorageResult(result, 'Token stored securely in the system credential manager');
41
- }
42
- async function loginWithOAuth() {
43
- const codeVerifier = generateCodeVerifier();
44
- const codeChallenge = generateCodeChallenge(codeVerifier);
45
- const state = generateState();
46
- console.log('Opening browser for Todoist authorization...');
47
- const authUrl = buildAuthorizationUrl(codeChallenge, state);
48
- const { promise: callbackPromise, cleanup } = startCallbackServer(state);
49
- try {
50
- await open(authUrl);
51
- console.log(chalk.dim('Waiting for authorization...'));
52
- const code = await callbackPromise;
53
- console.log(chalk.dim('Exchanging code for token...'));
54
- const accessToken = await exchangeCodeForToken(code, codeVerifier);
55
- const result = await saveApiToken(accessToken);
56
- console.log(chalk.green('✓'), 'Successfully logged in!');
57
- logTokenStorageResult(result, 'Token stored securely in the system credential manager');
58
- }
59
- catch (error) {
60
- cleanup();
61
- throw error;
62
- }
63
- }
64
- async function showStatus(options) {
65
- try {
66
- const api = await getApi();
67
- const user = await api.getUser();
68
- if (options.json) {
69
- console.log(JSON.stringify({ id: user.id, email: user.email, fullName: user.fullName }, null, 2));
70
- }
71
- else {
72
- console.log(chalk.green('✓'), 'Authenticated');
73
- console.log(` Email: ${user.email}`);
74
- console.log(` Name: ${user.fullName}`);
75
- }
76
- }
77
- catch (error) {
78
- const isAuthError = error instanceof NoTokenError;
79
- if (options.json) {
80
- if (isAuthError) {
81
- console.log(JSON.stringify({ error: 'Not authenticated' }, null, 2));
82
- process.exitCode = 1;
83
- }
84
- else {
85
- throw error;
86
- }
87
- }
88
- else {
89
- if (isAuthError) {
90
- console.log(chalk.yellow('Not authenticated'));
91
- console.log(chalk.dim('Run `td auth login` or `td auth token <token>` to authenticate'));
92
- }
93
- else {
94
- throw error;
95
- }
96
- }
97
- }
98
- }
99
- async function logout() {
100
- const result = await clearApiToken();
101
- console.log(chalk.green('✓'), 'Logged out');
102
- logTokenStorageResult(result, 'Stored token removed from the system credential manager');
103
- }
104
- function logTokenStorageResult(result, secureStoreMessage) {
105
- if (result.storage === 'secure-store') {
106
- console.log(chalk.dim(secureStoreMessage));
107
- }
108
- if (result.warning) {
109
- console.error(chalk.yellow('Warning:'), result.warning);
110
- }
111
- }
112
- export function registerAuthCommand(program) {
113
- const auth = program.command('auth').description('Manage authentication');
114
- auth.command('login').description('Authenticate with Todoist via OAuth').action(loginWithOAuth);
115
- auth.command('token [token]')
116
- .description('Save API token for CLI authentication')
117
- .action(loginWithToken);
118
- auth.command('status')
119
- .description('Show current authentication status')
120
- .option('--json', 'Output as JSON')
121
- .action(showStatus);
122
- auth.command('logout').description('Remove saved authentication token').action(logout);
123
- }
124
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"comment.d.ts","sourceRoot":"","sources":["../../src/commands/comment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA2SnC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyF7D"}
@@ -1,301 +0,0 @@
1
- import chalk from 'chalk';
2
- import { getApi } from '../lib/api/core.js';
3
- import { uploadFile } from '../lib/api/uploads.js';
4
- import { openInBrowser } from '../lib/browser.js';
5
- import { renderMarkdown } from '../lib/markdown.js';
6
- import { formatFileSize, formatJson, formatNextCursorFooter, formatPaginatedJson, formatPaginatedNdjson, printDryRun, } from '../lib/output.js';
7
- import { LIMITS, paginate } from '../lib/pagination.js';
8
- import { lenientIdRef, resolveProjectRef, resolveTaskRef } from '../lib/refs.js';
9
- import { readStdin } from '../lib/stdin.js';
10
- import { commentUrl, projectCommentUrl } from '../lib/urls.js';
11
- function truncateContent(content, maxLines) {
12
- const lines = content.split('\n');
13
- if (lines.length <= maxLines)
14
- return content;
15
- return `${lines.slice(0, maxLines).join('\n')}\n...`;
16
- }
17
- async function listComments(ref, options) {
18
- const api = await getApi();
19
- let queryArgs;
20
- if (options.project) {
21
- const project = await resolveProjectRef(api, ref);
22
- queryArgs = { projectId: project.id };
23
- }
24
- else {
25
- const task = await resolveTaskRef(api, ref);
26
- queryArgs = { taskId: task.id };
27
- }
28
- const targetLimit = options.all
29
- ? Number.MAX_SAFE_INTEGER
30
- : options.limit
31
- ? parseInt(options.limit, 10)
32
- : LIMITS.comments;
33
- const { results: comments, nextCursor } = await paginate((cursor, limit) => api.getComments({ ...queryArgs, cursor: cursor ?? undefined, limit }), { limit: targetLimit });
34
- const enrichedComments = comments.map((c) => ({
35
- ...c,
36
- hasAttachment: c.fileAttachment !== null,
37
- }));
38
- if (options.json) {
39
- console.log(formatPaginatedJson({ results: enrichedComments, nextCursor }, 'comment', options.full, options.showUrls));
40
- return;
41
- }
42
- if (options.ndjson) {
43
- console.log(formatPaginatedNdjson({ results: enrichedComments, nextCursor }, 'comment', options.full, options.showUrls));
44
- return;
45
- }
46
- if (comments.length === 0) {
47
- console.log('No comments.');
48
- return;
49
- }
50
- const maxLines = options.lines ? parseInt(options.lines, 10) : 3;
51
- for (const comment of comments) {
52
- const id = chalk.dim(comment.id);
53
- const date = chalk.green(comment.postedAt.split('T')[0]);
54
- const hasAttachment = comment.fileAttachment !== null;
55
- console.log(`${id} ${date}${hasAttachment ? ` ${chalk.blue('[file]')}` : ''}`);
56
- const content = options.raw ? comment.content : renderMarkdown(comment.content);
57
- const truncated = truncateContent(content, maxLines);
58
- for (const line of truncated.split('\n')) {
59
- console.log(` ${line}`);
60
- }
61
- if (options.showUrls) {
62
- const url = 'taskId' in queryArgs
63
- ? commentUrl(queryArgs.taskId, comment.id)
64
- : projectCommentUrl(queryArgs.projectId, comment.id);
65
- console.log(` ${chalk.dim(url)}`);
66
- }
67
- console.log('');
68
- }
69
- console.log(formatNextCursorFooter(nextCursor));
70
- }
71
- async function addComment(ref, options) {
72
- if (options.content !== undefined && options.stdin) {
73
- throw new Error('Cannot use both --content and --stdin');
74
- }
75
- let content;
76
- if (options.stdin) {
77
- content = await readStdin();
78
- if (!content.trim()) {
79
- throw new Error('Content is required: use --content or --stdin');
80
- }
81
- }
82
- else if (options.content) {
83
- content = options.content;
84
- }
85
- else {
86
- throw new Error('Content is required: use --content or --stdin');
87
- }
88
- if (options.dryRun) {
89
- printDryRun('add comment', {
90
- Target: ref,
91
- 'Target type': options.project ? 'project' : 'task',
92
- Content: content.length > 80 ? `${content.slice(0, 80)}...` : content,
93
- File: options.file,
94
- });
95
- return;
96
- }
97
- const api = await getApi();
98
- let targetArgs;
99
- let targetName;
100
- if (options.project) {
101
- const project = await resolveProjectRef(api, ref);
102
- targetArgs = { projectId: project.id };
103
- targetName = project.name;
104
- }
105
- else {
106
- const task = await resolveTaskRef(api, ref);
107
- targetArgs = { taskId: task.id };
108
- targetName = task.content;
109
- }
110
- let attachment;
111
- if (options.file) {
112
- const uploadResult = await uploadFile(options.file);
113
- attachment = {
114
- fileUrl: uploadResult.fileUrl,
115
- fileName: uploadResult.fileName,
116
- fileType: uploadResult.fileType,
117
- resourceType: uploadResult.resourceType,
118
- };
119
- }
120
- const comment = await api.addComment({
121
- ...targetArgs,
122
- content,
123
- ...(attachment && { attachment }),
124
- });
125
- if (options.json) {
126
- console.log(formatJson(comment, 'comment'));
127
- return;
128
- }
129
- console.log(`Added comment to "${targetName}"`);
130
- if (attachment) {
131
- console.log(chalk.dim(`Attached: ${attachment.fileName}`));
132
- }
133
- console.log(chalk.dim(`ID: ${comment.id}`));
134
- }
135
- async function deleteComment(commentId, options) {
136
- const id = lenientIdRef(commentId, 'comment');
137
- const api = await getApi();
138
- const comment = await api.getComment(id);
139
- const preview = comment.content.length > 50 ? `${comment.content.slice(0, 50)}...` : comment.content;
140
- if (options.dryRun) {
141
- printDryRun('delete comment', { Comment: preview });
142
- return;
143
- }
144
- if (!options.yes) {
145
- console.log(`Would delete comment: ${preview}`);
146
- console.log('Use --yes to confirm.');
147
- return;
148
- }
149
- await api.deleteComment(id);
150
- console.log(`Deleted comment: ${preview}`);
151
- }
152
- async function updateComment(commentId, options) {
153
- const id = lenientIdRef(commentId, 'comment');
154
- if (options.dryRun) {
155
- const preview = options.content.length > 80 ? `${options.content.slice(0, 80)}...` : options.content;
156
- printDryRun('update comment', { ID: id, Content: preview });
157
- return;
158
- }
159
- const api = await getApi();
160
- if (options.json) {
161
- const updated = await api.updateComment(id, { content: options.content });
162
- console.log(formatJson(updated, 'comment'));
163
- return;
164
- }
165
- const comment = await api.getComment(id);
166
- const oldPreview = comment.content.length > 50 ? `${comment.content.slice(0, 50)}...` : comment.content;
167
- await api.updateComment(id, { content: options.content });
168
- console.log(`Updated comment: ${oldPreview}`);
169
- }
170
- async function viewComment(commentId, options) {
171
- const api = await getApi();
172
- const id = lenientIdRef(commentId, 'comment');
173
- const comment = await api.getComment(id);
174
- const url = comment.taskId
175
- ? commentUrl(comment.taskId, comment.id)
176
- : comment.projectId
177
- ? projectCommentUrl(comment.projectId, comment.id)
178
- : '';
179
- console.log(chalk.bold('Comment'));
180
- console.log('');
181
- console.log(`ID: ${comment.id}`);
182
- console.log(`Posted: ${comment.postedAt}`);
183
- if (url)
184
- console.log(`URL: ${url}`);
185
- console.log('');
186
- console.log('Content:');
187
- const content = options.raw ? comment.content : renderMarkdown(comment.content);
188
- console.log(content);
189
- if (comment.fileAttachment) {
190
- const att = comment.fileAttachment;
191
- console.log('');
192
- console.log(chalk.bold('Attachment:'));
193
- if (att.fileName)
194
- console.log(` Name: ${att.fileName}`);
195
- if (att.fileSize)
196
- console.log(` Size: ${formatFileSize(att.fileSize)}`);
197
- if (att.fileType)
198
- console.log(` Type: ${att.fileType}`);
199
- if (att.fileUrl)
200
- console.log(` URL: ${att.fileUrl}`);
201
- }
202
- }
203
- async function browseComment(commentId) {
204
- const api = await getApi();
205
- const id = lenientIdRef(commentId, 'comment');
206
- const comment = await api.getComment(id);
207
- const url = comment.taskId
208
- ? commentUrl(comment.taskId, comment.id)
209
- : comment.projectId
210
- ? projectCommentUrl(comment.projectId, comment.id)
211
- : null;
212
- if (!url) {
213
- throw new Error('Comment has no associated task or project.');
214
- }
215
- await openInBrowser(url);
216
- }
217
- export function registerCommentCommand(program) {
218
- const comment = program.command('comment').description('Manage comments');
219
- const listCmd = comment
220
- .command('list [ref]')
221
- .description('List comments on a task (or project with --project)')
222
- .option('-P, --project', 'Target a project instead of a task')
223
- .option('--limit <n>', 'Limit number of results (default: 10)')
224
- .option('--all', 'Fetch all results (no limit)')
225
- .option('--show-urls', 'Show web app URLs for each comment')
226
- .option('--json', 'Output as JSON')
227
- .option('--ndjson', 'Output as newline-delimited JSON')
228
- .option('--full', 'Include all fields in JSON output')
229
- .option('--lines <n>', 'Number of content lines to show (default: 3)')
230
- .option('--raw', 'Disable markdown rendering')
231
- .action((ref, options) => {
232
- if (!ref) {
233
- listCmd.help();
234
- return;
235
- }
236
- return listComments(ref, options);
237
- });
238
- const addCmd = comment
239
- .command('add [ref]')
240
- .description('Add a comment to a task (or project with --project)')
241
- .option('-P, --project', 'Target a project instead of a task')
242
- .option('--content <text>', 'Comment content')
243
- .option('--stdin', 'Read comment content from stdin')
244
- .option('--file <path>', 'Attach a file to the comment')
245
- .option('--json', 'Output the created comment as JSON')
246
- .option('--dry-run', 'Preview what would happen without executing')
247
- .action((ref, options) => {
248
- if (!ref || (!options.content && !options.stdin)) {
249
- addCmd.help();
250
- return;
251
- }
252
- return addComment(ref, options);
253
- });
254
- const deleteCmd = comment
255
- .command('delete [id]')
256
- .description('Delete a comment')
257
- .option('--yes', 'Confirm deletion')
258
- .option('--dry-run', 'Preview what would happen without executing')
259
- .action((id, options) => {
260
- if (!id) {
261
- deleteCmd.help();
262
- return;
263
- }
264
- return deleteComment(id, options);
265
- });
266
- const updateCmd = comment
267
- .command('update [id]')
268
- .description('Update a comment')
269
- .option('--content <text>', 'New comment content (required)')
270
- .option('--json', 'Output the updated comment as JSON')
271
- .option('--dry-run', 'Preview what would happen without executing')
272
- .action((id, options) => {
273
- if (!id || !options.content) {
274
- updateCmd.help();
275
- return;
276
- }
277
- return updateComment(id, options);
278
- });
279
- comment
280
- .command('view [id]', { isDefault: true })
281
- .description('View a single comment with full details')
282
- .option('--raw', 'Disable markdown rendering')
283
- .action((id, options) => {
284
- if (!id) {
285
- comment.help();
286
- return;
287
- }
288
- return viewComment(id, options);
289
- });
290
- const browseCmd = comment
291
- .command('browse [id]')
292
- .description('Open comment in browser (requires id:xxx)')
293
- .action((id) => {
294
- if (!id) {
295
- browseCmd.help();
296
- return;
297
- }
298
- return browseComment(id);
299
- });
300
- }
301
- //# sourceMappingURL=comment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"comment.js","sourceRoot":"","sources":["../../src/commands/comment.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA6BnC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+FhE"}
@@ -1,107 +0,0 @@
1
- import { existsSync } from 'node:fs';
2
- import { homedir } from 'node:os';
3
- import { join } from 'node:path';
4
- import { getCompletions, parseCompLine } from '../lib/completion.js';
5
- // pwsh is included because tabtab supports it — installedShells() needs to
6
- // detect and clean up pwsh completion files even though we don't advertise it.
7
- const COMPLETION_EXTENSIONS = {
8
- bash: 'bash',
9
- zsh: 'zsh',
10
- fish: 'fish',
11
- pwsh: 'ps1',
12
- };
13
- /**
14
- * Find which shells have td completions installed by checking for the
15
- * completion script files that tabtab creates.
16
- *
17
- * FIXME: Workaround for https://github.com/pnpm/tabtab/issues/34 —
18
- * tabtab.uninstall() without a shell tries all shells and throws ENOENT
19
- * for ones that were never installed. We detect which shells are actually
20
- * installed and uninstall only those. Remove once the upstream issue is fixed.
21
- */
22
- function installedShells() {
23
- return Object.entries(COMPLETION_EXTENSIONS)
24
- .filter(([shell, ext]) => existsSync(join(homedir(), '.config', 'tabtab', shell, `td.${ext}`)))
25
- .map(([shell]) => shell);
26
- }
27
- export function registerCompletionCommand(program) {
28
- const completion = program.command('completion').description('Manage shell completions');
29
- completion
30
- .command('install [shell]')
31
- .description('Install shell completions (bash, zsh, fish)')
32
- .action(async (shell) => {
33
- const tabtab = await import('@pnpm/tabtab');
34
- if (shell && !tabtab.isShellSupported(shell)) {
35
- console.error(`Unsupported shell: ${shell}. Supported: ${tabtab.SUPPORTED_SHELLS.join(', ')}`);
36
- process.exitCode = 1;
37
- return;
38
- }
39
- await tabtab.install({
40
- name: 'td',
41
- completer: 'td',
42
- shell: shell,
43
- });
44
- console.log('Shell completions installed successfully.');
45
- console.log('Restart your shell or source your shell config to activate.');
46
- });
47
- completion
48
- .command('uninstall')
49
- .description('Remove shell completions')
50
- .action(async () => {
51
- // FIXME: Replace with plain tabtab.uninstall({ name: 'td' }) once
52
- // https://github.com/pnpm/tabtab/issues/34 is fixed.
53
- const shells = installedShells();
54
- if (shells.length === 0) {
55
- console.log('No shell completions installed.');
56
- return;
57
- }
58
- const tabtab = await import('@pnpm/tabtab');
59
- for (const shell of shells) {
60
- await tabtab.uninstall({
61
- name: 'td',
62
- shell,
63
- });
64
- }
65
- console.log('Shell completions removed.');
66
- });
67
- // Hidden command invoked by the shell completion script at TAB time
68
- program
69
- .command('completion-server', { hidden: true })
70
- .description('Completion server (internal)')
71
- .allowUnknownOption()
72
- .allowExcessArguments()
73
- .action(async () => {
74
- const tabtab = await import('@pnpm/tabtab');
75
- const env = tabtab.parseEnv(process.env);
76
- if (!env.complete) {
77
- return;
78
- }
79
- const shell = tabtab.getShellFromEnv(process.env);
80
- const words = parseCompLine(env.line);
81
- let current = env.last;
82
- // The fish/zsh completion templates always append a trailing space
83
- // to COMP_LINE, making env.last empty even when the cursor is right
84
- // after '--flag='. Use env.lastPartial (cursor-position-aware) to
85
- // detect this case and restore the actual word being completed.
86
- if (current === '' && env.lastPartial.includes('=')) {
87
- if (words.at(-1) === '')
88
- words.pop();
89
- current = env.lastPartial;
90
- }
91
- const completions = getCompletions(program, words, current);
92
- // Bash treats '=' as a word break (COMP_WORDBREAKS), so readline
93
- // replaces only the part after '=' with COMPREPLY values. If we
94
- // return '--flag=value', bash produces '--flag=--flag=value'.
95
- // Strip the flag prefix so bash gets just the value part.
96
- if (shell === 'bash' && current.includes('=')) {
97
- const prefix = current.slice(0, current.indexOf('=') + 1);
98
- const values = completions
99
- .map((c) => (c.name.startsWith(prefix) ? c.name.slice(prefix.length) : c.name))
100
- .filter(Boolean);
101
- console.log(values.join('\n'));
102
- return;
103
- }
104
- tabtab.log(completions, shell);
105
- });
106
- }
107
- //# sourceMappingURL=completion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"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"}