@doist/todoist-cli 1.29.2 → 1.29.4

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 (248) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/package.json +11 -4
  3. package/scripts/check-skill-sync.js +40 -0
  4. package/scripts/sync-skill.js +28 -0
  5. package/dist/__mocks__/chalk.d.ts +0 -3
  6. package/dist/__mocks__/chalk.d.ts.map +0 -1
  7. package/dist/__mocks__/chalk.js +0 -8
  8. package/dist/__mocks__/chalk.js.map +0 -1
  9. package/dist/commands/activity.d.ts +0 -3
  10. package/dist/commands/activity.d.ts.map +0 -1
  11. package/dist/commands/activity.js +0 -267
  12. package/dist/commands/activity.js.map +0 -1
  13. package/dist/commands/add.d.ts +0 -3
  14. package/dist/commands/add.d.ts.map +0 -1
  15. package/dist/commands/add.js +0 -36
  16. package/dist/commands/add.js.map +0 -1
  17. package/dist/commands/attachment.d.ts +0 -3
  18. package/dist/commands/attachment.d.ts.map +0 -1
  19. package/dist/commands/attachment.js +0 -156
  20. package/dist/commands/attachment.js.map +0 -1
  21. package/dist/commands/auth.d.ts +0 -3
  22. package/dist/commands/auth.d.ts.map +0 -1
  23. package/dist/commands/auth.js +0 -124
  24. package/dist/commands/auth.js.map +0 -1
  25. package/dist/commands/changelog.d.ts +0 -8
  26. package/dist/commands/changelog.d.ts.map +0 -1
  27. package/dist/commands/changelog.js +0 -92
  28. package/dist/commands/changelog.js.map +0 -1
  29. package/dist/commands/comment.d.ts +0 -3
  30. package/dist/commands/comment.d.ts.map +0 -1
  31. package/dist/commands/comment.js +0 -301
  32. package/dist/commands/comment.js.map +0 -1
  33. package/dist/commands/completed.d.ts +0 -3
  34. package/dist/commands/completed.d.ts.map +0 -1
  35. package/dist/commands/completed.js +0 -107
  36. package/dist/commands/completed.js.map +0 -1
  37. package/dist/commands/completion.d.ts +0 -3
  38. package/dist/commands/completion.d.ts.map +0 -1
  39. package/dist/commands/completion.js +0 -107
  40. package/dist/commands/completion.js.map +0 -1
  41. package/dist/commands/filter.d.ts +0 -5
  42. package/dist/commands/filter.d.ts.map +0 -1
  43. package/dist/commands/filter.js +0 -287
  44. package/dist/commands/filter.js.map +0 -1
  45. package/dist/commands/inbox.d.ts +0 -3
  46. package/dist/commands/inbox.d.ts.map +0 -1
  47. package/dist/commands/inbox.js +0 -25
  48. package/dist/commands/inbox.js.map +0 -1
  49. package/dist/commands/label.d.ts +0 -5
  50. package/dist/commands/label.d.ts.map +0 -1
  51. package/dist/commands/label.js +0 -328
  52. package/dist/commands/label.js.map +0 -1
  53. package/dist/commands/notification.d.ts +0 -3
  54. package/dist/commands/notification.d.ts.map +0 -1
  55. package/dist/commands/notification.js +0 -274
  56. package/dist/commands/notification.js.map +0 -1
  57. package/dist/commands/project.d.ts +0 -5
  58. package/dist/commands/project.d.ts.map +0 -1
  59. package/dist/commands/project.js +0 -528
  60. package/dist/commands/project.js.map +0 -1
  61. package/dist/commands/reminder.d.ts +0 -3
  62. package/dist/commands/reminder.d.ts.map +0 -1
  63. package/dist/commands/reminder.js +0 -271
  64. package/dist/commands/reminder.js.map +0 -1
  65. package/dist/commands/section.d.ts +0 -3
  66. package/dist/commands/section.d.ts.map +0 -1
  67. package/dist/commands/section.js +0 -172
  68. package/dist/commands/section.js.map +0 -1
  69. package/dist/commands/settings.d.ts +0 -12
  70. package/dist/commands/settings.d.ts.map +0 -1
  71. package/dist/commands/settings.js +0 -312
  72. package/dist/commands/settings.js.map +0 -1
  73. package/dist/commands/skill.d.ts +0 -3
  74. package/dist/commands/skill.d.ts.map +0 -1
  75. package/dist/commands/skill.js +0 -127
  76. package/dist/commands/skill.js.map +0 -1
  77. package/dist/commands/stats.d.ts +0 -3
  78. package/dist/commands/stats.d.ts.map +0 -1
  79. package/dist/commands/stats.js +0 -151
  80. package/dist/commands/stats.js.map +0 -1
  81. package/dist/commands/task.d.ts +0 -5
  82. package/dist/commands/task.d.ts.map +0 -1
  83. package/dist/commands/task.js +0 -559
  84. package/dist/commands/task.js.map +0 -1
  85. package/dist/commands/today.d.ts +0 -18
  86. package/dist/commands/today.d.ts.map +0 -1
  87. package/dist/commands/today.js +0 -108
  88. package/dist/commands/today.js.map +0 -1
  89. package/dist/commands/upcoming.d.ts +0 -17
  90. package/dist/commands/upcoming.d.ts.map +0 -1
  91. package/dist/commands/upcoming.js +0 -129
  92. package/dist/commands/upcoming.js.map +0 -1
  93. package/dist/commands/update.d.ts +0 -6
  94. package/dist/commands/update.d.ts.map +0 -1
  95. package/dist/commands/update.js +0 -90
  96. package/dist/commands/update.js.map +0 -1
  97. package/dist/commands/view.d.ts +0 -3
  98. package/dist/commands/view.d.ts.map +0 -1
  99. package/dist/commands/view.js +0 -79
  100. package/dist/commands/view.js.map +0 -1
  101. package/dist/commands/workspace.d.ts +0 -3
  102. package/dist/commands/workspace.d.ts.map +0 -1
  103. package/dist/commands/workspace.js +0 -309
  104. package/dist/commands/workspace.js.map +0 -1
  105. package/dist/index.d.ts +0 -3
  106. package/dist/index.d.ts.map +0 -1
  107. package/dist/index.js +0 -176
  108. package/dist/index.js.map +0 -1
  109. package/dist/lib/api/core.d.ts +0 -13
  110. package/dist/lib/api/core.d.ts.map +0 -1
  111. package/dist/lib/api/core.js +0 -170
  112. package/dist/lib/api/core.js.map +0 -1
  113. package/dist/lib/api/filters.d.ts +0 -19
  114. package/dist/lib/api/filters.d.ts.map +0 -1
  115. package/dist/lib/api/filters.js +0 -60
  116. package/dist/lib/api/filters.js.map +0 -1
  117. package/dist/lib/api/notifications.d.ts +0 -33
  118. package/dist/lib/api/notifications.d.ts.map +0 -1
  119. package/dist/lib/api/notifications.js +0 -94
  120. package/dist/lib/api/notifications.js.map +0 -1
  121. package/dist/lib/api/reminders.d.ts +0 -30
  122. package/dist/lib/api/reminders.d.ts.map +0 -1
  123. package/dist/lib/api/reminders.js +0 -65
  124. package/dist/lib/api/reminders.js.map +0 -1
  125. package/dist/lib/api/stats.d.ts +0 -41
  126. package/dist/lib/api/stats.d.ts.map +0 -1
  127. package/dist/lib/api/stats.js +0 -74
  128. package/dist/lib/api/stats.js.map +0 -1
  129. package/dist/lib/api/uploads.d.ts +0 -10
  130. package/dist/lib/api/uploads.d.ts.map +0 -1
  131. package/dist/lib/api/uploads.js +0 -31
  132. package/dist/lib/api/uploads.js.map +0 -1
  133. package/dist/lib/api/user-settings.d.ts +0 -34
  134. package/dist/lib/api/user-settings.d.ts.map +0 -1
  135. package/dist/lib/api/user-settings.js +0 -58
  136. package/dist/lib/api/user-settings.js.map +0 -1
  137. package/dist/lib/api/workspaces.d.ts +0 -23
  138. package/dist/lib/api/workspaces.d.ts.map +0 -1
  139. package/dist/lib/api/workspaces.js +0 -61
  140. package/dist/lib/api/workspaces.js.map +0 -1
  141. package/dist/lib/auth.d.ts +0 -14
  142. package/dist/lib/auth.d.ts.map +0 -1
  143. package/dist/lib/auth.js +0 -182
  144. package/dist/lib/auth.js.map +0 -1
  145. package/dist/lib/browser.d.ts +0 -2
  146. package/dist/lib/browser.d.ts.map +0 -1
  147. package/dist/lib/browser.js +0 -6
  148. package/dist/lib/browser.js.map +0 -1
  149. package/dist/lib/collaborators.d.ts +0 -29
  150. package/dist/lib/collaborators.d.ts.map +0 -1
  151. package/dist/lib/collaborators.js +0 -184
  152. package/dist/lib/collaborators.js.map +0 -1
  153. package/dist/lib/completion.d.ts +0 -41
  154. package/dist/lib/completion.d.ts.map +0 -1
  155. package/dist/lib/completion.js +0 -191
  156. package/dist/lib/completion.js.map +0 -1
  157. package/dist/lib/dates.d.ts +0 -16
  158. package/dist/lib/dates.d.ts.map +0 -1
  159. package/dist/lib/dates.js +0 -45
  160. package/dist/lib/dates.js.map +0 -1
  161. package/dist/lib/duration.d.ts +0 -14
  162. package/dist/lib/duration.d.ts.map +0 -1
  163. package/dist/lib/duration.js +0 -58
  164. package/dist/lib/duration.js.map +0 -1
  165. package/dist/lib/logger.d.ts +0 -42
  166. package/dist/lib/logger.d.ts.map +0 -1
  167. package/dist/lib/logger.js +0 -227
  168. package/dist/lib/logger.js.map +0 -1
  169. package/dist/lib/markdown.d.ts +0 -3
  170. package/dist/lib/markdown.d.ts.map +0 -1
  171. package/dist/lib/markdown.js +0 -22
  172. package/dist/lib/markdown.js.map +0 -1
  173. package/dist/lib/oauth-server.d.ts +0 -6
  174. package/dist/lib/oauth-server.d.ts.map +0 -1
  175. package/dist/lib/oauth-server.js +0 -773
  176. package/dist/lib/oauth-server.js.map +0 -1
  177. package/dist/lib/oauth.d.ts +0 -3
  178. package/dist/lib/oauth.d.ts.map +0 -1
  179. package/dist/lib/oauth.js +0 -38
  180. package/dist/lib/oauth.js.map +0 -1
  181. package/dist/lib/options.d.ts +0 -16
  182. package/dist/lib/options.d.ts.map +0 -1
  183. package/dist/lib/options.js +0 -2
  184. package/dist/lib/options.js.map +0 -1
  185. package/dist/lib/output.d.ts +0 -39
  186. package/dist/lib/output.d.ts.map +0 -1
  187. package/dist/lib/output.js +0 -311
  188. package/dist/lib/output.js.map +0 -1
  189. package/dist/lib/pagination.d.ts +0 -23
  190. package/dist/lib/pagination.d.ts.map +0 -1
  191. package/dist/lib/pagination.js +0 -26
  192. package/dist/lib/pagination.js.map +0 -1
  193. package/dist/lib/pkce.d.ts +0 -4
  194. package/dist/lib/pkce.d.ts.map +0 -1
  195. package/dist/lib/pkce.js +0 -19
  196. package/dist/lib/pkce.js.map +0 -1
  197. package/dist/lib/progress.d.ts +0 -29
  198. package/dist/lib/progress.d.ts.map +0 -1
  199. package/dist/lib/progress.js +0 -101
  200. package/dist/lib/progress.js.map +0 -1
  201. package/dist/lib/refs.d.ts +0 -52
  202. package/dist/lib/refs.d.ts.map +0 -1
  203. package/dist/lib/refs.js +0 -225
  204. package/dist/lib/refs.js.map +0 -1
  205. package/dist/lib/secure-store.d.ts +0 -11
  206. package/dist/lib/secure-store.d.ts.map +0 -1
  207. package/dist/lib/secure-store.js +0 -57
  208. package/dist/lib/secure-store.js.map +0 -1
  209. package/dist/lib/skills/content.d.ts +0 -4
  210. package/dist/lib/skills/content.d.ts.map +0 -1
  211. package/dist/lib/skills/content.js +0 -415
  212. package/dist/lib/skills/content.js.map +0 -1
  213. package/dist/lib/skills/create-installer.d.ts +0 -9
  214. package/dist/lib/skills/create-installer.d.ts.map +0 -1
  215. package/dist/lib/skills/create-installer.js +0 -77
  216. package/dist/lib/skills/create-installer.js.map +0 -1
  217. package/dist/lib/skills/index.d.ts +0 -6
  218. package/dist/lib/skills/index.d.ts.map +0 -1
  219. package/dist/lib/skills/index.js +0 -40
  220. package/dist/lib/skills/index.js.map +0 -1
  221. package/dist/lib/skills/types.d.ts +0 -11
  222. package/dist/lib/skills/types.d.ts.map +0 -1
  223. package/dist/lib/skills/types.js +0 -2
  224. package/dist/lib/skills/types.js.map +0 -1
  225. package/dist/lib/skills/update-installed.d.ts +0 -7
  226. package/dist/lib/skills/update-installed.d.ts.map +0 -1
  227. package/dist/lib/skills/update-installed.js +0 -23
  228. package/dist/lib/skills/update-installed.js.map +0 -1
  229. package/dist/lib/spinner.d.ts +0 -23
  230. package/dist/lib/spinner.d.ts.map +0 -1
  231. package/dist/lib/spinner.js +0 -138
  232. package/dist/lib/spinner.js.map +0 -1
  233. package/dist/lib/stdin.d.ts +0 -2
  234. package/dist/lib/stdin.d.ts.map +0 -1
  235. package/dist/lib/stdin.js +0 -12
  236. package/dist/lib/stdin.js.map +0 -1
  237. package/dist/lib/task-list.d.ts +0 -31
  238. package/dist/lib/task-list.d.ts.map +0 -1
  239. package/dist/lib/task-list.js +0 -271
  240. package/dist/lib/task-list.js.map +0 -1
  241. package/dist/lib/urls.d.ts +0 -8
  242. package/dist/lib/urls.d.ts.map +0 -1
  243. package/dist/lib/urls.js +0 -26
  244. package/dist/lib/urls.js.map +0 -1
  245. package/dist/postinstall.d.ts +0 -2
  246. package/dist/postinstall.d.ts.map +0 -1
  247. package/dist/postinstall.js +0 -3
  248. package/dist/postinstall.js.map +0 -1
@@ -1,328 +0,0 @@
1
- import chalk from 'chalk';
2
- import { getApi } from '../lib/api/core.js';
3
- import { openInBrowser } from '../lib/browser.js';
4
- import { CollaboratorCache, formatAssignee } from '../lib/collaborators.js';
5
- import { formatError, formatJson, formatNextCursorFooter, formatPaginatedJson, formatPaginatedNdjson, formatTaskRow, isAccessible, printDryRun, } from '../lib/output.js';
6
- import { LIMITS, paginate } from '../lib/pagination.js';
7
- import { isIdRef, lenientIdRef, looksLikeRawId, parseTodoistUrl } from '../lib/refs.js';
8
- import { labelUrl } from '../lib/urls.js';
9
- async function listLabels(options) {
10
- const api = await getApi();
11
- const targetLimit = options.all
12
- ? Number.MAX_SAFE_INTEGER
13
- : options.limit
14
- ? parseInt(options.limit, 10)
15
- : LIMITS.labels;
16
- const { results: labels, nextCursor } = await paginate((cursor, limit) => api.getLabels({ cursor: cursor ?? undefined, limit }), { limit: targetLimit });
17
- // Fetch shared-only labels (not in personal labels)
18
- const { results: sharedLabels } = await paginate((cursor, limit) => api.getSharedLabels({
19
- omitPersonal: true,
20
- cursor: cursor ?? undefined,
21
- limit,
22
- }), { limit: targetLimit });
23
- if (options.json) {
24
- const base = JSON.parse(formatPaginatedJson({ results: labels, nextCursor }, 'label', options.full, options.showUrls));
25
- base.sharedLabels = sharedLabels;
26
- console.log(JSON.stringify(base, null, 2));
27
- return;
28
- }
29
- if (options.ndjson) {
30
- console.log(formatPaginatedNdjson({ results: labels, nextCursor }, 'label', options.full, options.showUrls));
31
- for (const name of sharedLabels) {
32
- console.log(JSON.stringify({ _type: 'sharedLabel', name }));
33
- }
34
- return;
35
- }
36
- if (labels.length === 0 && sharedLabels.length === 0) {
37
- console.log('No labels found.');
38
- return;
39
- }
40
- for (const label of labels) {
41
- const id = chalk.dim(label.id);
42
- const name = label.isFavorite
43
- ? chalk.yellow(`@${label.name}${isAccessible() ? ' ★' : ''}`)
44
- : `@${label.name}`;
45
- console.log(`${id} ${name}`);
46
- if (options.showUrls) {
47
- console.log(` ${chalk.dim(labelUrl(label.id))}`);
48
- }
49
- }
50
- for (const name of sharedLabels) {
51
- console.log(`${chalk.dim('(shared)')} @${name}`);
52
- }
53
- console.log(formatNextCursorFooter(nextCursor));
54
- }
55
- async function createLabel(options) {
56
- if (options.dryRun) {
57
- printDryRun('create label', {
58
- Name: `@${options.name}`,
59
- Color: options.color,
60
- Favorite: options.favorite ? 'yes' : undefined,
61
- });
62
- return;
63
- }
64
- const api = await getApi();
65
- const label = await api.addLabel({
66
- name: options.name,
67
- color: options.color,
68
- isFavorite: options.favorite,
69
- });
70
- if (options.json) {
71
- console.log(formatJson(label, 'label'));
72
- return;
73
- }
74
- console.log(`Created: @${label.name}`);
75
- console.log(chalk.dim(`ID: ${label.id}`));
76
- }
77
- async function deleteLabel(nameOrId, options) {
78
- const label = await resolveLabelRef(nameOrId);
79
- if (options.dryRun) {
80
- printDryRun('delete label', { Label: `@${label.name}` });
81
- return;
82
- }
83
- if (!options.yes) {
84
- console.log(`Would delete: @${label.name}`);
85
- console.log('Use --yes to confirm.');
86
- return;
87
- }
88
- const api = await getApi();
89
- await api.deleteLabel(label.id);
90
- console.log(`Deleted: @${label.name}`);
91
- }
92
- async function updateLabel(nameOrId, options) {
93
- const label = await resolveLabelRef(nameOrId);
94
- const args = {};
95
- if (options.name)
96
- args.name = options.name;
97
- if (options.color)
98
- args.color = options.color;
99
- if (options.favorite === true)
100
- args.isFavorite = true;
101
- if (options.favorite === false)
102
- args.isFavorite = false;
103
- if (Object.keys(args).length === 0) {
104
- throw new Error(formatError('NO_CHANGES', 'No changes specified.'));
105
- }
106
- if (options.dryRun) {
107
- printDryRun('update label', {
108
- Label: `@${label.name}`,
109
- Name: args.name ? `@${args.name}` : undefined,
110
- Color: args.color,
111
- Favorite: args.isFavorite !== undefined ? String(args.isFavorite) : undefined,
112
- });
113
- return;
114
- }
115
- const api = await getApi();
116
- const updated = await api.updateLabel(label.id, args);
117
- if (options.json) {
118
- console.log(formatJson(updated, 'label'));
119
- return;
120
- }
121
- console.log(`Updated: @${label.name}${options.name ? ` → @${updated.name}` : ''}`);
122
- }
123
- // Resolves a label ref to a personal Label object. Used by delete/update/browse
124
- // which require an ID. Does NOT fall back to shared labels — use
125
- // resolveLabelNameForView() for view which only needs a name.
126
- async function resolveLabelRef(nameOrId) {
127
- const api = await getApi();
128
- const { results: labels } = await api.getLabels();
129
- if (parseTodoistUrl(nameOrId) || isIdRef(nameOrId)) {
130
- const id = lenientIdRef(nameOrId, 'label');
131
- const label = labels.find((l) => l.id === id);
132
- if (!label)
133
- throw new Error(formatError('LABEL_NOT_FOUND', 'Label not found.'));
134
- return label;
135
- }
136
- const name = nameOrId.startsWith('@') ? nameOrId.slice(1) : nameOrId;
137
- const lower = name.toLowerCase();
138
- const exact = labels.find((l) => l.name.toLowerCase() === lower);
139
- if (exact)
140
- return exact;
141
- if (looksLikeRawId(nameOrId)) {
142
- const byId = labels.find((l) => l.id === nameOrId);
143
- if (byId)
144
- return byId;
145
- }
146
- throw new Error(formatError('LABEL_NOT_FOUND', `Label "${nameOrId}" not found.`));
147
- }
148
- // Resolves a label ref for viewing. Falls back to shared labels when no
149
- // personal label matches, since view only needs a name for the filter query.
150
- async function resolveLabelNameForView(nameOrId) {
151
- const api = await getApi();
152
- const { results: labels } = await api.getLabels();
153
- // URL or id: ref → must be a personal label (shared labels have no IDs)
154
- if (parseTodoistUrl(nameOrId) || isIdRef(nameOrId)) {
155
- const id = lenientIdRef(nameOrId, 'label');
156
- const label = labels.find((l) => l.id === id);
157
- if (!label)
158
- throw new Error(formatError('LABEL_NOT_FOUND', 'Label not found.'));
159
- return { name: label.name, label };
160
- }
161
- const name = nameOrId.startsWith('@') ? nameOrId.slice(1) : nameOrId;
162
- const lower = name.toLowerCase();
163
- // Personal label by name (case-insensitive)
164
- const exact = labels.find((l) => l.name.toLowerCase() === lower);
165
- if (exact)
166
- return { name: exact.name, label: exact };
167
- // Raw ID fallback in personal labels
168
- if (looksLikeRawId(nameOrId)) {
169
- const byId = labels.find((l) => l.id === nameOrId);
170
- if (byId)
171
- return { name: byId.name, label: byId };
172
- }
173
- // Shared labels fallback — fetch and find by name
174
- const { results: sharedLabels } = await paginate((cursor, limit) => api.getSharedLabels({ cursor: cursor ?? undefined, limit }), { limit: Number.MAX_SAFE_INTEGER });
175
- const sharedMatch = sharedLabels.find((s) => s.toLowerCase() === lower);
176
- if (sharedMatch)
177
- return { name: sharedMatch, label: null };
178
- throw new Error(formatError('LABEL_NOT_FOUND', `Label "${nameOrId}" not found.`));
179
- }
180
- export async function viewLabel(nameOrId, options) {
181
- const resolved = await resolveLabelNameForView(nameOrId);
182
- const api = await getApi();
183
- const targetLimit = options.all
184
- ? Number.MAX_SAFE_INTEGER
185
- : options.limit
186
- ? parseInt(options.limit, 10)
187
- : LIMITS.tasks;
188
- const { results: tasks, nextCursor } = await paginate((cursor, limit) => api.getTasksByFilter({
189
- query: `@${resolved.name}`,
190
- cursor: cursor ?? undefined,
191
- limit,
192
- }), { limit: targetLimit });
193
- if (options.json) {
194
- console.log(formatPaginatedJson({ results: tasks, nextCursor }, 'task', options.full, options.showUrls));
195
- return;
196
- }
197
- if (options.ndjson) {
198
- console.log(formatPaginatedNdjson({ results: tasks, nextCursor }, 'task', options.full, options.showUrls));
199
- return;
200
- }
201
- console.log(chalk.bold(`@${resolved.name}`));
202
- if (resolved.label) {
203
- console.log(chalk.dim(`ID: ${resolved.label.id}`));
204
- console.log(chalk.dim(`Color: ${resolved.label.color}`));
205
- console.log(chalk.dim(`URL: ${labelUrl(resolved.label.id)}`));
206
- if (resolved.label.isFavorite)
207
- console.log(chalk.yellow('★ Favorite'));
208
- }
209
- else {
210
- console.log(chalk.dim('Type: shared label'));
211
- }
212
- console.log('');
213
- if (tasks.length === 0) {
214
- console.log('No tasks with this label.');
215
- console.log(formatNextCursorFooter(nextCursor));
216
- return;
217
- }
218
- const { results: projects } = await api.getProjects();
219
- const projectMap = new Map();
220
- for (const p of projects) {
221
- projectMap.set(p.id, p);
222
- }
223
- const collaboratorCache = new CollaboratorCache();
224
- await collaboratorCache.preload(api, tasks, projectMap);
225
- for (const task of tasks) {
226
- const assignee = formatAssignee({
227
- userId: task.responsibleUid,
228
- projectId: task.projectId,
229
- projects: projectMap,
230
- cache: collaboratorCache,
231
- });
232
- console.log(formatTaskRow({
233
- task,
234
- projectName: projectMap.get(task.projectId)?.name,
235
- assignee: assignee ?? undefined,
236
- showUrl: options.showUrls,
237
- }));
238
- console.log('');
239
- }
240
- console.log(formatNextCursorFooter(nextCursor));
241
- }
242
- async function browseLabel(nameOrId) {
243
- const label = await resolveLabelRef(nameOrId);
244
- await openInBrowser(labelUrl(label.id));
245
- }
246
- export function registerLabelCommand(program) {
247
- const label = program.command('label').description('Manage labels');
248
- label
249
- .command('view [ref]', { isDefault: true })
250
- .description('View label details and tasks')
251
- .option('--limit <n>', 'Limit number of results (default: 300)')
252
- .option('--all', 'Fetch all results (no limit)')
253
- .option('--json', 'Output as JSON')
254
- .option('--ndjson', 'Output as newline-delimited JSON')
255
- .option('--full', 'Include all fields in JSON output')
256
- .option('--show-urls', 'Show web app URLs for each task')
257
- .action((ref, options) => {
258
- if (!ref) {
259
- label.help();
260
- return;
261
- }
262
- return viewLabel(ref, options);
263
- });
264
- label
265
- .command('list')
266
- .description('List all labels')
267
- .option('--limit <n>', 'Limit number of results (default: 300)')
268
- .option('--all', 'Fetch all results (no limit)')
269
- .option('--json', 'Output as JSON')
270
- .option('--ndjson', 'Output as newline-delimited JSON')
271
- .option('--full', 'Include all fields in JSON output')
272
- .option('--show-urls', 'Show web app URLs for each label')
273
- .action(listLabels);
274
- const createCmd = label
275
- .command('create')
276
- .description('Create a label')
277
- .option('--name <name>', 'Label name (required)')
278
- .option('--color <color>', 'Label color')
279
- .option('--favorite', 'Mark as favorite')
280
- .option('--json', 'Output the created label as JSON')
281
- .option('--dry-run', 'Preview what would happen without executing')
282
- .action((options) => {
283
- if (!options.name) {
284
- createCmd.help();
285
- return;
286
- }
287
- return createLabel(options);
288
- });
289
- const deleteCmd = label
290
- .command('delete [name]')
291
- .description('Delete a label')
292
- .option('--yes', 'Confirm deletion')
293
- .option('--dry-run', 'Preview what would happen without executing')
294
- .action((name, options) => {
295
- if (!name) {
296
- deleteCmd.help();
297
- return;
298
- }
299
- return deleteLabel(name, options);
300
- });
301
- const updateCmd = label
302
- .command('update [ref]')
303
- .description('Update a label')
304
- .option('--name <name>', 'New name')
305
- .option('--color <color>', 'New color')
306
- .option('--favorite', 'Mark as favorite')
307
- .option('--no-favorite', 'Remove from favorites')
308
- .option('--json', 'Output the updated label as JSON')
309
- .option('--dry-run', 'Preview what would happen without executing')
310
- .action((ref, options) => {
311
- if (!ref) {
312
- updateCmd.help();
313
- return;
314
- }
315
- return updateLabel(ref, options);
316
- });
317
- const browseCmd = label
318
- .command('browse [ref]')
319
- .description('Open label in browser')
320
- .action((ref) => {
321
- if (!ref) {
322
- browseCmd.help();
323
- return;
324
- }
325
- return browseLabel(ref);
326
- });
327
- }
328
- //# sourceMappingURL=label.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"label.js","sourceRoot":"","sources":["../../src/commands/label.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function registerNotificationCommand(program: Command): void;
3
- //# sourceMappingURL=notification.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/commands/notification.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAgTnC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmElE"}
@@ -1,274 +0,0 @@
1
- import chalk from 'chalk';
2
- import { acceptInvitation, fetchNotifications, markAllNotificationsRead, markNotificationRead, markNotificationUnread, rejectInvitation, } from '../lib/api/notifications.js';
3
- import { formatError, formatPaginatedJson, formatPaginatedNdjson } from '../lib/output.js';
4
- import { extractId, isIdRef } from '../lib/refs.js';
5
- function formatRelativeTime(dateStr) {
6
- const date = new Date(dateStr);
7
- const now = new Date();
8
- const diffMs = now.getTime() - date.getTime();
9
- const diffMin = Math.floor(diffMs / 60000);
10
- const diffHour = Math.floor(diffMs / 3600000);
11
- const diffDay = Math.floor(diffMs / 86400000);
12
- if (diffMin < 1)
13
- return 'just now';
14
- if (diffMin < 60)
15
- return `${diffMin}m ago`;
16
- if (diffHour < 24)
17
- return `${diffHour}h ago`;
18
- if (diffDay < 7)
19
- return `${diffDay}d ago`;
20
- return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
21
- }
22
- function formatNotificationDetails(n) {
23
- switch (n.type) {
24
- case 'share_invitation_sent':
25
- return `${n.fromUser?.name || 'Someone'} invited you to "${n.project?.name || 'a project'}"`;
26
- case 'share_invitation_accepted':
27
- return `${n.fromUser?.name || 'Someone'} accepted your invite to "${n.project?.name || 'a project'}"`;
28
- case 'share_invitation_rejected':
29
- return `${n.fromUser?.name || 'Someone'} rejected your invite to "${n.project?.name || 'a project'}"`;
30
- case 'user_left_project':
31
- return `${n.fromUser?.name || 'Someone'} left "${n.project?.name || 'a project'}"`;
32
- case 'user_removed_from_project':
33
- return `You were removed from "${n.project?.name || 'a project'}"`;
34
- case 'item_assigned':
35
- return `"${n.task?.content || 'A task'}" assigned to you${n.project?.name ? ` in ${n.project.name}` : ''}`;
36
- case 'item_completed':
37
- return `"${n.task?.content || 'A task'}" was completed`;
38
- case 'item_uncompleted':
39
- return `"${n.task?.content || 'A task'}" was uncompleted`;
40
- case 'note_added':
41
- return `Comment on "${n.task?.content || 'a task'}"${n.fromUser?.name ? ` by ${n.fromUser.name}` : ''}`;
42
- case 'project_archived':
43
- return `"${n.project?.name || 'A project'}" was archived`;
44
- case 'project_unarchived':
45
- return `"${n.project?.name || 'A project'}" was unarchived`;
46
- case 'karma_daily_goal':
47
- return 'Daily karma goal reached';
48
- case 'karma_weekly_goal':
49
- return 'Weekly karma goal reached';
50
- case 'biz_trial_will_end':
51
- return 'Business trial ending soon';
52
- case 'biz_payment_failed':
53
- return 'Payment failed';
54
- case 'biz_account_disabled':
55
- return 'Account disabled';
56
- default:
57
- return n.type;
58
- }
59
- }
60
- function stripInvitationSecret(n) {
61
- const { invitationSecret: _, ...rest } = n;
62
- return rest;
63
- }
64
- async function listNotifications(options) {
65
- if (options.unread && options.read) {
66
- throw new Error(formatError('INVALID_OPTIONS', 'Cannot specify both --read and --unread'));
67
- }
68
- // Note: All filtering (type, read state, pagination) is done client-side because
69
- // the Todoist Sync API v9 live_notifications endpoint doesn't support server-side
70
- // filtering or pagination - it returns all notifications in a single response.
71
- let notifications = await fetchNotifications();
72
- if (options.type) {
73
- const types = options.type.split(',').map((t) => t.trim());
74
- notifications = notifications.filter((n) => types.includes(n.type));
75
- }
76
- if (options.unread) {
77
- notifications = notifications.filter((n) => n.isUnread);
78
- }
79
- else if (options.read) {
80
- notifications = notifications.filter((n) => !n.isUnread);
81
- }
82
- const totalCount = notifications.length;
83
- const offset = options.offset ? parseInt(options.offset, 10) : 0;
84
- const limit = options.limit ? parseInt(options.limit, 10) : 10;
85
- const hasMore = totalCount > offset + limit;
86
- notifications = notifications.slice(offset, offset + limit);
87
- const sanitized = notifications.map(stripInvitationSecret);
88
- if (options.json) {
89
- console.log(formatPaginatedJson({ results: sanitized, nextCursor: null }, 'notification', options.full, false));
90
- return;
91
- }
92
- if (options.ndjson) {
93
- console.log(formatPaginatedNdjson({ results: sanitized, nextCursor: null }, 'notification', options.full, false));
94
- return;
95
- }
96
- if (notifications.length === 0) {
97
- console.log('No notifications.');
98
- return;
99
- }
100
- const blocks = notifications.map((n) => {
101
- const unreadMarker = n.isUnread ? chalk.bold('●') : ' ';
102
- const details = formatNotificationDetails(n);
103
- const line1 = n.isUnread
104
- ? `${unreadMarker} ${chalk.bold(details)}`
105
- : `${unreadMarker} ${details}`;
106
- const metaParts = [
107
- chalk.dim(`id:${n.id}`),
108
- chalk.cyan(n.type),
109
- chalk.dim(formatRelativeTime(n.createdAt)),
110
- ];
111
- const line2 = ` ${metaParts.join(' ')}`;
112
- return `${line1}\n${line2}`;
113
- });
114
- console.log(blocks.join('\n\n'));
115
- if (hasMore) {
116
- const nextOffset = offset + limit;
117
- console.log(chalk.dim(`\n... showing ${offset + 1}-${offset + notifications.length} of ${totalCount}. Use --offset ${nextOffset} to see more.`));
118
- }
119
- }
120
- async function resolveNotification(idRef) {
121
- const notifications = await fetchNotifications();
122
- let id;
123
- if (isIdRef(idRef)) {
124
- id = extractId(idRef);
125
- }
126
- else {
127
- id = idRef;
128
- }
129
- const notification = notifications.find((n) => n.id === id);
130
- if (!notification) {
131
- throw new Error(formatError('NOTIFICATION_NOT_FOUND', `Notification not found: ${idRef}`));
132
- }
133
- return notification;
134
- }
135
- async function viewNotification(idRef, options) {
136
- const n = await resolveNotification(idRef);
137
- if (options.json) {
138
- console.log(JSON.stringify(stripInvitationSecret(n), null, 2));
139
- return;
140
- }
141
- console.log(`Type: ${n.type}`);
142
- if (n.fromUser?.name || n.fromUser?.email) {
143
- const fromParts = [n.fromUser.name, n.fromUser.email].filter(Boolean);
144
- console.log(`From: ${fromParts.join(' - ')}`);
145
- }
146
- if (n.project?.name) {
147
- console.log(`Project: ${n.project.name}`);
148
- }
149
- if (n.task?.content) {
150
- console.log(`Task: ${n.task.content}`);
151
- }
152
- const date = new Date(n.createdAt);
153
- console.log(`Received: ${formatRelativeTime(n.createdAt)} (${date.toLocaleString()})`);
154
- console.log(`Status: ${n.isUnread ? 'Unread' : 'Read'}`);
155
- console.log('');
156
- console.log(formatNotificationDetails(n));
157
- if (n.type === 'share_invitation_sent') {
158
- console.log('');
159
- console.log('Actions:');
160
- console.log(` td notification accept id:${n.id}`);
161
- console.log(` td notification reject id:${n.id}`);
162
- }
163
- }
164
- async function acceptNotification(idRef) {
165
- const n = await resolveNotification(idRef);
166
- if (n.type !== 'share_invitation_sent') {
167
- throw new Error(formatError('INVALID_NOTIFICATION_TYPE', `Cannot accept: notification is ${n.type}, not a share invitation`));
168
- }
169
- if (!n.invitationId || !n.invitationSecret) {
170
- throw new Error(formatError('MISSING_INVITATION_DATA', 'Invitation data missing from notification'));
171
- }
172
- await acceptInvitation(n.invitationId, n.invitationSecret);
173
- await markNotificationRead(n.id);
174
- console.log(`Accepted invitation to "${n.project?.name ?? 'project'}" from ${n.fromUser?.name ?? 'unknown'}.`);
175
- }
176
- async function rejectNotification(idRef) {
177
- const n = await resolveNotification(idRef);
178
- if (n.type !== 'share_invitation_sent') {
179
- throw new Error(formatError('INVALID_NOTIFICATION_TYPE', `Cannot reject: notification is ${n.type}, not a share invitation`));
180
- }
181
- if (!n.invitationId || !n.invitationSecret) {
182
- throw new Error(formatError('MISSING_INVITATION_DATA', 'Invitation data missing from notification'));
183
- }
184
- await rejectInvitation(n.invitationId, n.invitationSecret);
185
- await markNotificationRead(n.id);
186
- console.log(`Rejected invitation to "${n.project?.name ?? 'project'}" from ${n.fromUser?.name ?? 'unknown'}.`);
187
- }
188
- async function markRead(idRef, options) {
189
- if (options.all) {
190
- if (!options.yes) {
191
- console.log('Use --all --yes to mark all notifications as read.');
192
- return;
193
- }
194
- const notifications = await fetchNotifications();
195
- const unreadCount = notifications.filter((n) => n.isUnread).length;
196
- await markAllNotificationsRead();
197
- console.log(`Marked ${unreadCount} notification${unreadCount === 1 ? '' : 's'} as read.`);
198
- return;
199
- }
200
- if (!idRef) {
201
- throw new Error(formatError('MISSING_ID', 'Provide a notification ID or use --all'));
202
- }
203
- const n = await resolveNotification(idRef);
204
- await markNotificationRead(n.id);
205
- console.log('Marked as read.');
206
- }
207
- async function markUnread(idRef) {
208
- const n = await resolveNotification(idRef);
209
- await markNotificationUnread(n.id);
210
- console.log('Marked as unread.');
211
- }
212
- export function registerNotificationCommand(program) {
213
- const notification = program.command('notification').description('Manage notifications');
214
- notification
215
- .command('list')
216
- .description('List notifications')
217
- .option('--type <types>', 'Filter by type (comma-separated)')
218
- .option('--unread', 'Only show unread notifications')
219
- .option('--read', 'Only show read notifications')
220
- .option('--limit <n>', 'Max notifications to show (default: 10)')
221
- .option('--offset <n>', 'Skip first N notifications')
222
- .option('--json', 'Output as JSON')
223
- .option('--ndjson', 'Output as newline-delimited JSON')
224
- .option('--full', 'Include all fields in JSON output')
225
- .action(listNotifications);
226
- notification
227
- .command('view [id]', { isDefault: true })
228
- .description('View notification details')
229
- .option('--json', 'Output as JSON')
230
- .action((id, options) => {
231
- if (!id) {
232
- notification.help();
233
- return;
234
- }
235
- return viewNotification(id, options);
236
- });
237
- const acceptCmd = notification
238
- .command('accept [id]')
239
- .description('Accept a share invitation')
240
- .action((id) => {
241
- if (!id) {
242
- acceptCmd.help();
243
- return;
244
- }
245
- return acceptNotification(id);
246
- });
247
- const rejectCmd = notification
248
- .command('reject [id]')
249
- .description('Reject a share invitation')
250
- .action((id) => {
251
- if (!id) {
252
- rejectCmd.help();
253
- return;
254
- }
255
- return rejectNotification(id);
256
- });
257
- notification
258
- .command('read [id]')
259
- .description('Mark notification(s) as read')
260
- .option('--all', 'Mark all notifications as read')
261
- .option('--yes', 'Confirm marking all as read')
262
- .action((id, options) => markRead(id, options));
263
- const unreadCmd = notification
264
- .command('unread [id]')
265
- .description('Mark notification as unread')
266
- .action((id) => {
267
- if (!id) {
268
- unreadCmd.help();
269
- return;
270
- }
271
- return markUnread(id);
272
- });
273
- }
274
- //# sourceMappingURL=notification.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/commands/notification.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { Command } from 'commander';
2
- import type { ViewOptions } from '../lib/options.js';
3
- export declare function viewProject(ref: string, options?: ViewOptions): Promise<void>;
4
- export declare function registerProjectCommand(program: Command): void;
5
- //# sourceMappingURL=project.d.ts.map