@doist/todoist-cli 1.1.2

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 (170) hide show
  1. package/README.md +76 -0
  2. package/dist/commands/activity.d.ts +3 -0
  3. package/dist/commands/activity.d.ts.map +1 -0
  4. package/dist/commands/activity.js +193 -0
  5. package/dist/commands/activity.js.map +1 -0
  6. package/dist/commands/add.d.ts +3 -0
  7. package/dist/commands/add.d.ts.map +1 -0
  8. package/dist/commands/add.js +28 -0
  9. package/dist/commands/add.js.map +1 -0
  10. package/dist/commands/auth.d.ts +3 -0
  11. package/dist/commands/auth.d.ts.map +1 -0
  12. package/dist/commands/auth.js +62 -0
  13. package/dist/commands/auth.js.map +1 -0
  14. package/dist/commands/comment.d.ts +3 -0
  15. package/dist/commands/comment.d.ts.map +1 -0
  16. package/dist/commands/comment.js +251 -0
  17. package/dist/commands/comment.js.map +1 -0
  18. package/dist/commands/completed.d.ts +3 -0
  19. package/dist/commands/completed.d.ts.map +1 -0
  20. package/dist/commands/completed.js +74 -0
  21. package/dist/commands/completed.js.map +1 -0
  22. package/dist/commands/filter.d.ts +3 -0
  23. package/dist/commands/filter.d.ts.map +1 -0
  24. package/dist/commands/filter.js +249 -0
  25. package/dist/commands/filter.js.map +1 -0
  26. package/dist/commands/inbox.d.ts +3 -0
  27. package/dist/commands/inbox.d.ts.map +1 -0
  28. package/dist/commands/inbox.js +23 -0
  29. package/dist/commands/inbox.js.map +1 -0
  30. package/dist/commands/label.d.ts +3 -0
  31. package/dist/commands/label.d.ts.map +1 -0
  32. package/dist/commands/label.js +196 -0
  33. package/dist/commands/label.js.map +1 -0
  34. package/dist/commands/notification.d.ts +3 -0
  35. package/dist/commands/notification.d.ts.map +1 -0
  36. package/dist/commands/notification.js +274 -0
  37. package/dist/commands/notification.js.map +1 -0
  38. package/dist/commands/project.d.ts +3 -0
  39. package/dist/commands/project.d.ts.map +1 -0
  40. package/dist/commands/project.js +364 -0
  41. package/dist/commands/project.js.map +1 -0
  42. package/dist/commands/reminder.d.ts +3 -0
  43. package/dist/commands/reminder.d.ts.map +1 -0
  44. package/dist/commands/reminder.js +225 -0
  45. package/dist/commands/reminder.js.map +1 -0
  46. package/dist/commands/section.d.ts +3 -0
  47. package/dist/commands/section.d.ts.map +1 -0
  48. package/dist/commands/section.js +138 -0
  49. package/dist/commands/section.js.map +1 -0
  50. package/dist/commands/settings.d.ts +3 -0
  51. package/dist/commands/settings.d.ts.map +1 -0
  52. package/dist/commands/settings.js +250 -0
  53. package/dist/commands/settings.js.map +1 -0
  54. package/dist/commands/stats.d.ts +3 -0
  55. package/dist/commands/stats.d.ts.map +1 -0
  56. package/dist/commands/stats.js +151 -0
  57. package/dist/commands/stats.js.map +1 -0
  58. package/dist/commands/task.d.ts +3 -0
  59. package/dist/commands/task.d.ts.map +1 -0
  60. package/dist/commands/task.js +363 -0
  61. package/dist/commands/task.js.map +1 -0
  62. package/dist/commands/today.d.ts +3 -0
  63. package/dist/commands/today.d.ts.map +1 -0
  64. package/dist/commands/today.js +97 -0
  65. package/dist/commands/today.js.map +1 -0
  66. package/dist/commands/upcoming.d.ts +3 -0
  67. package/dist/commands/upcoming.d.ts.map +1 -0
  68. package/dist/commands/upcoming.js +121 -0
  69. package/dist/commands/upcoming.js.map +1 -0
  70. package/dist/commands/workspace.d.ts +3 -0
  71. package/dist/commands/workspace.d.ts.map +1 -0
  72. package/dist/commands/workspace.js +289 -0
  73. package/dist/commands/workspace.js.map +1 -0
  74. package/dist/index.d.ts +3 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +53 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/lib/api/core.d.ts +40 -0
  79. package/dist/lib/api/core.d.ts.map +1 -0
  80. package/dist/lib/api/core.js +142 -0
  81. package/dist/lib/api/core.js.map +1 -0
  82. package/dist/lib/api/filters.d.ts +26 -0
  83. package/dist/lib/api/filters.d.ts.map +1 -0
  84. package/dist/lib/api/filters.js +86 -0
  85. package/dist/lib/api/filters.js.map +1 -0
  86. package/dist/lib/api/notifications.d.ts +33 -0
  87. package/dist/lib/api/notifications.d.ts.map +1 -0
  88. package/dist/lib/api/notifications.js +112 -0
  89. package/dist/lib/api/notifications.js.map +1 -0
  90. package/dist/lib/api/reminders.d.ts +30 -0
  91. package/dist/lib/api/reminders.d.ts.map +1 -0
  92. package/dist/lib/api/reminders.js +79 -0
  93. package/dist/lib/api/reminders.js.map +1 -0
  94. package/dist/lib/api/stats.d.ts +41 -0
  95. package/dist/lib/api/stats.d.ts.map +1 -0
  96. package/dist/lib/api/stats.js +79 -0
  97. package/dist/lib/api/stats.js.map +1 -0
  98. package/dist/lib/api/uploads.d.ts +10 -0
  99. package/dist/lib/api/uploads.d.ts.map +1 -0
  100. package/dist/lib/api/uploads.js +31 -0
  101. package/dist/lib/api/uploads.js.map +1 -0
  102. package/dist/lib/api/user-settings.d.ts +33 -0
  103. package/dist/lib/api/user-settings.d.ts.map +1 -0
  104. package/dist/lib/api/user-settings.js +90 -0
  105. package/dist/lib/api/user-settings.js.map +1 -0
  106. package/dist/lib/api/workspaces.d.ts +23 -0
  107. package/dist/lib/api/workspaces.d.ts.map +1 -0
  108. package/dist/lib/api/workspaces.js +67 -0
  109. package/dist/lib/api/workspaces.js.map +1 -0
  110. package/dist/lib/auth.d.ts +4 -0
  111. package/dist/lib/auth.d.ts.map +1 -0
  112. package/dist/lib/auth.js +66 -0
  113. package/dist/lib/auth.js.map +1 -0
  114. package/dist/lib/browser.d.ts +2 -0
  115. package/dist/lib/browser.d.ts.map +1 -0
  116. package/dist/lib/browser.js +6 -0
  117. package/dist/lib/browser.js.map +1 -0
  118. package/dist/lib/collaborators.d.ts +29 -0
  119. package/dist/lib/collaborators.d.ts.map +1 -0
  120. package/dist/lib/collaborators.js +184 -0
  121. package/dist/lib/collaborators.js.map +1 -0
  122. package/dist/lib/dates.d.ts +3 -0
  123. package/dist/lib/dates.d.ts.map +1 -0
  124. package/dist/lib/dates.js +20 -0
  125. package/dist/lib/dates.js.map +1 -0
  126. package/dist/lib/duration.d.ts +14 -0
  127. package/dist/lib/duration.d.ts.map +1 -0
  128. package/dist/lib/duration.js +58 -0
  129. package/dist/lib/duration.js.map +1 -0
  130. package/dist/lib/markdown.d.ts +2 -0
  131. package/dist/lib/markdown.d.ts.map +1 -0
  132. package/dist/lib/markdown.js +14 -0
  133. package/dist/lib/markdown.js.map +1 -0
  134. package/dist/lib/oauth-server.d.ts +6 -0
  135. package/dist/lib/oauth-server.d.ts.map +1 -0
  136. package/dist/lib/oauth-server.js +141 -0
  137. package/dist/lib/oauth-server.js.map +1 -0
  138. package/dist/lib/oauth.d.ts +3 -0
  139. package/dist/lib/oauth.d.ts.map +1 -0
  140. package/dist/lib/oauth.js +38 -0
  141. package/dist/lib/oauth.js.map +1 -0
  142. package/dist/lib/output.d.ts +36 -0
  143. package/dist/lib/output.d.ts.map +1 -0
  144. package/dist/lib/output.js +293 -0
  145. package/dist/lib/output.js.map +1 -0
  146. package/dist/lib/pagination.d.ts +23 -0
  147. package/dist/lib/pagination.d.ts.map +1 -0
  148. package/dist/lib/pagination.js +26 -0
  149. package/dist/lib/pagination.js.map +1 -0
  150. package/dist/lib/pkce.d.ts +4 -0
  151. package/dist/lib/pkce.d.ts.map +1 -0
  152. package/dist/lib/pkce.js +19 -0
  153. package/dist/lib/pkce.js.map +1 -0
  154. package/dist/lib/refs.d.ts +13 -0
  155. package/dist/lib/refs.d.ts.map +1 -0
  156. package/dist/lib/refs.js +117 -0
  157. package/dist/lib/refs.js.map +1 -0
  158. package/dist/lib/spinner.d.ts +20 -0
  159. package/dist/lib/spinner.d.ts.map +1 -0
  160. package/dist/lib/spinner.js +70 -0
  161. package/dist/lib/spinner.js.map +1 -0
  162. package/dist/lib/task-list.d.ts +28 -0
  163. package/dist/lib/task-list.d.ts.map +1 -0
  164. package/dist/lib/task-list.js +234 -0
  165. package/dist/lib/task-list.js.map +1 -0
  166. package/dist/lib/urls.d.ts +8 -0
  167. package/dist/lib/urls.d.ts.map +1 -0
  168. package/dist/lib/urls.js +26 -0
  169. package/dist/lib/urls.js.map +1 -0
  170. package/package.json +66 -0
@@ -0,0 +1,364 @@
1
+ import chalk from 'chalk';
2
+ import { getApi, isWorkspaceProject } from '../lib/api/core.js';
3
+ import { fetchWorkspaceFolders, fetchWorkspaces } from '../lib/api/workspaces.js';
4
+ import { openInBrowser } from '../lib/browser.js';
5
+ import { formatUserShortName } from '../lib/collaborators.js';
6
+ import { formatError, formatNextCursorFooter, formatPaginatedJson, formatPaginatedNdjson, } from '../lib/output.js';
7
+ import { LIMITS, paginate } from '../lib/pagination.js';
8
+ import { resolveProjectRef } from '../lib/refs.js';
9
+ import { projectUrl } from '../lib/urls.js';
10
+ async function listProjects(options) {
11
+ const api = await getApi();
12
+ const targetLimit = options.all
13
+ ? Number.MAX_SAFE_INTEGER
14
+ : options.limit
15
+ ? parseInt(options.limit, 10)
16
+ : LIMITS.projects;
17
+ const { results: projects, nextCursor } = await paginate((cursor, limit) => api.getProjects({ cursor: cursor ?? undefined, limit }), { limit: targetLimit, startCursor: options.cursor });
18
+ if (options.json) {
19
+ console.log(formatPaginatedJson({ results: projects, nextCursor }, 'project', options.full, options.showUrls));
20
+ return;
21
+ }
22
+ if (options.ndjson) {
23
+ console.log(formatPaginatedNdjson({ results: projects, nextCursor }, 'project', options.full, options.showUrls));
24
+ return;
25
+ }
26
+ if (options.personal) {
27
+ const personalOnly = projects.filter((p) => !isWorkspaceProject(p));
28
+ for (const project of personalOnly) {
29
+ const id = chalk.dim(project.id);
30
+ let name = project.isFavorite ? chalk.yellow(project.name) : project.name;
31
+ if (project.isShared) {
32
+ name = `${name} ${chalk.dim('[shared]')}`;
33
+ }
34
+ console.log(`${id} ${name}`);
35
+ if (options.showUrls) {
36
+ console.log(` ${chalk.dim(projectUrl(project.id))}`);
37
+ }
38
+ }
39
+ console.log(formatNextCursorFooter(nextCursor));
40
+ return;
41
+ }
42
+ const workspaceProjects = new Map();
43
+ const personalProjects = [];
44
+ for (const project of projects) {
45
+ if (isWorkspaceProject(project)) {
46
+ const list = workspaceProjects.get(project.workspaceId) || [];
47
+ list.push(project);
48
+ workspaceProjects.set(project.workspaceId, list);
49
+ }
50
+ else {
51
+ personalProjects.push(project);
52
+ }
53
+ }
54
+ let workspaces = [];
55
+ if (workspaceProjects.size > 0) {
56
+ workspaces = await fetchWorkspaces();
57
+ }
58
+ const workspaceMap = new Map(workspaces.map((w) => [w.id, w]));
59
+ if (personalProjects.length > 0) {
60
+ if (workspaceProjects.size > 0) {
61
+ console.log(chalk.bold('Personal'));
62
+ }
63
+ for (const project of personalProjects) {
64
+ const id = chalk.dim(project.id);
65
+ let name = project.isFavorite ? chalk.yellow(project.name) : project.name;
66
+ if (project.isShared) {
67
+ name = `${name} ${chalk.dim('[shared]')}`;
68
+ }
69
+ const indent = workspaceProjects.size > 0 ? ' ' : '';
70
+ console.log(`${indent}${id} ${name}`);
71
+ if (options.showUrls) {
72
+ console.log(`${indent} ${chalk.dim(projectUrl(project.id))}`);
73
+ }
74
+ }
75
+ if (workspaceProjects.size > 0) {
76
+ console.log('');
77
+ }
78
+ }
79
+ const sortedWorkspaceIds = [...workspaceProjects.keys()].sort((a, b) => {
80
+ const nameA = workspaceMap.get(a)?.name ?? '';
81
+ const nameB = workspaceMap.get(b)?.name ?? '';
82
+ return nameA.localeCompare(nameB);
83
+ });
84
+ for (const workspaceId of sortedWorkspaceIds) {
85
+ const wprojects = workspaceProjects.get(workspaceId);
86
+ if (!wprojects)
87
+ continue; // Should not happen since workspaceId comes from keys()
88
+ const workspace = workspaceMap.get(workspaceId);
89
+ const workspaceName = workspace?.name ?? `Workspace ${workspaceId}`;
90
+ console.log(chalk.bold(workspaceName));
91
+ for (const project of wprojects) {
92
+ const id = chalk.dim(project.id);
93
+ const name = project.isFavorite ? chalk.yellow(project.name) : project.name;
94
+ console.log(` ${id} ${name}`);
95
+ if (options.showUrls) {
96
+ console.log(` ${chalk.dim(projectUrl(project.id))}`);
97
+ }
98
+ }
99
+ console.log('');
100
+ }
101
+ console.log(formatNextCursorFooter(nextCursor));
102
+ if (sortedWorkspaceIds.length > 0) {
103
+ console.log(chalk.dim('Tip: Use `td workspace projects <name>` for a detailed view with folders.'));
104
+ }
105
+ }
106
+ async function viewProject(ref) {
107
+ const api = await getApi();
108
+ const project = await resolveProjectRef(api, ref);
109
+ console.log(chalk.bold(project.name));
110
+ console.log('');
111
+ console.log(`ID: ${project.id}`);
112
+ if (isWorkspaceProject(project)) {
113
+ const [workspaces, folders] = await Promise.all([
114
+ fetchWorkspaces(),
115
+ fetchWorkspaceFolders(),
116
+ ]);
117
+ const workspace = workspaces.find((w) => w.id === project.workspaceId);
118
+ if (workspace) {
119
+ console.log(`Workspace: ${workspace.name}`);
120
+ }
121
+ if (project.folderId) {
122
+ const folder = folders.find((f) => f.id === project.folderId);
123
+ if (folder) {
124
+ console.log(`Folder: ${folder.name}`);
125
+ }
126
+ }
127
+ }
128
+ else if (project.isShared) {
129
+ console.log(`Shared: Yes`);
130
+ }
131
+ console.log(`Color: ${project.color}`);
132
+ console.log(`Favorite: ${project.isFavorite ? 'Yes' : 'No'}`);
133
+ console.log(`URL: ${projectUrl(project.id)}`);
134
+ const { results: tasks } = await api.getTasks({ projectId: project.id });
135
+ if (tasks.length > 0) {
136
+ console.log('');
137
+ console.log(chalk.dim(`--- Tasks (${tasks.length}) ---`));
138
+ for (const task of tasks) {
139
+ const priority = chalk.dim(`p${5 - task.priority}`);
140
+ console.log(` ${priority} ${task.content}`);
141
+ }
142
+ }
143
+ }
144
+ async function deleteProject(ref, options) {
145
+ const api = await getApi();
146
+ const project = await resolveProjectRef(api, ref);
147
+ const { results: tasks } = await api.getTasks({ projectId: project.id });
148
+ if (tasks.length > 0) {
149
+ throw new Error(formatError('HAS_TASKS', `Cannot delete project: ${tasks.length} uncompleted task${tasks.length === 1 ? '' : 's'} remain.`));
150
+ }
151
+ if (!options.yes) {
152
+ console.log(`Would delete project: ${project.name}`);
153
+ console.log('Use --yes to confirm.');
154
+ return;
155
+ }
156
+ await api.deleteProject(project.id);
157
+ console.log(`Deleted project: ${project.name}`);
158
+ }
159
+ async function listCollaborators(ref) {
160
+ const api = await getApi();
161
+ const project = await resolveProjectRef(api, ref);
162
+ if (isWorkspaceProject(project)) {
163
+ const workspaceIdNum = parseInt(project.workspaceId, 10);
164
+ let cursor;
165
+ while (true) {
166
+ const response = await api.getWorkspaceUsers({
167
+ workspaceId: workspaceIdNum,
168
+ cursor,
169
+ limit: 200,
170
+ });
171
+ for (const user of response.workspaceUsers) {
172
+ const id = chalk.dim(user.userId);
173
+ const name = formatUserShortName(user.fullName);
174
+ const email = chalk.dim(`<${user.userEmail}>`);
175
+ const role = chalk.dim(`[${user.role}]`);
176
+ console.log(`${id} ${name} ${email} ${role}`);
177
+ }
178
+ if (!response.hasMore || !response.nextCursor)
179
+ break;
180
+ cursor = response.nextCursor;
181
+ }
182
+ return;
183
+ }
184
+ if (!project.isShared) {
185
+ throw new Error(formatError('NOT_SHARED', 'Project is not shared.'));
186
+ }
187
+ let cursor;
188
+ while (true) {
189
+ const response = await api.getProjectCollaborators(project.id, { cursor });
190
+ for (const user of response.results) {
191
+ const id = chalk.dim(user.id);
192
+ const name = formatUserShortName(user.name);
193
+ const email = chalk.dim(`<${user.email}>`);
194
+ console.log(`${id} ${name} ${email}`);
195
+ }
196
+ if (!response.nextCursor)
197
+ break;
198
+ cursor = response.nextCursor;
199
+ }
200
+ }
201
+ async function createProject(options) {
202
+ const api = await getApi();
203
+ let parentId;
204
+ if (options.parent) {
205
+ const parentProject = await resolveProjectRef(api, options.parent);
206
+ if (isWorkspaceProject(parentProject)) {
207
+ throw new Error(formatError('WORKSPACE_NO_SUBPROJECTS', 'Workspace projects do not support sub-projects.', ['Sub-projects are only supported for personal projects.']));
208
+ }
209
+ parentId = parentProject.id;
210
+ }
211
+ const project = await api.addProject({
212
+ name: options.name,
213
+ color: options.color,
214
+ isFavorite: options.favorite,
215
+ parentId,
216
+ viewStyle: options.viewStyle,
217
+ });
218
+ console.log(`Created: ${project.name}`);
219
+ console.log(chalk.dim(`ID: ${project.id}`));
220
+ }
221
+ async function updateProject(ref, options) {
222
+ const api = await getApi();
223
+ const project = await resolveProjectRef(api, ref);
224
+ const args = {};
225
+ if (options.name)
226
+ args.name = options.name;
227
+ if (options.color)
228
+ args.color = options.color;
229
+ if (options.favorite === true)
230
+ args.isFavorite = true;
231
+ if (options.favorite === false)
232
+ args.isFavorite = false;
233
+ if (options.viewStyle)
234
+ args.viewStyle = options.viewStyle;
235
+ if (Object.keys(args).length === 0) {
236
+ throw new Error(formatError('NO_CHANGES', 'No changes specified.'));
237
+ }
238
+ const updated = await api.updateProject(project.id, args);
239
+ console.log(`Updated: ${updated.name}`);
240
+ }
241
+ async function archiveProject(ref) {
242
+ const api = await getApi();
243
+ const project = await resolveProjectRef(api, ref);
244
+ await api.archiveProject(project.id);
245
+ console.log(`Archived: ${project.name}`);
246
+ }
247
+ async function unarchiveProject(ref) {
248
+ const api = await getApi();
249
+ const project = await resolveProjectRef(api, ref);
250
+ await api.unarchiveProject(project.id);
251
+ console.log(`Unarchived: ${project.name}`);
252
+ }
253
+ async function browseProject(ref) {
254
+ const api = await getApi();
255
+ const project = await resolveProjectRef(api, ref);
256
+ await openInBrowser(projectUrl(project.id));
257
+ }
258
+ export function registerProjectCommand(program) {
259
+ const project = program.command('project').description('Manage projects');
260
+ project
261
+ .command('list')
262
+ .description('List all projects')
263
+ .option('--limit <n>', 'Limit number of results (default: 50)')
264
+ .option('--cursor <cursor>', 'Continue from cursor')
265
+ .option('--all', 'Fetch all results (no limit)')
266
+ .option('--personal', 'Show only personal projects')
267
+ .option('--json', 'Output as JSON')
268
+ .option('--ndjson', 'Output as newline-delimited JSON')
269
+ .option('--full', 'Include all fields in JSON output')
270
+ .option('--show-urls', 'Show web app URLs for each project')
271
+ .action(listProjects);
272
+ const viewCmd = project
273
+ .command('view [ref]')
274
+ .description('View project details')
275
+ .action((ref) => {
276
+ if (!ref) {
277
+ viewCmd.help();
278
+ return;
279
+ }
280
+ return viewProject(ref);
281
+ });
282
+ const collaboratorsCmd = project
283
+ .command('collaborators [ref]')
284
+ .description('List project collaborators')
285
+ .action((ref) => {
286
+ if (!ref) {
287
+ collaboratorsCmd.help();
288
+ return;
289
+ }
290
+ return listCollaborators(ref);
291
+ });
292
+ const deleteCmd = project
293
+ .command('delete [ref]')
294
+ .description('Delete a project (must have no uncompleted tasks)')
295
+ .option('--yes', 'Confirm deletion')
296
+ .action((ref, options) => {
297
+ if (!ref) {
298
+ deleteCmd.help();
299
+ return;
300
+ }
301
+ return deleteProject(ref, options);
302
+ });
303
+ const createCmd = project
304
+ .command('create')
305
+ .description('Create a project')
306
+ .option('--name <name>', 'Project name (required)')
307
+ .option('--color <color>', 'Project color')
308
+ .option('--favorite', 'Mark as favorite')
309
+ .option('--parent <ref>', 'Parent project (name or id:xxx)')
310
+ .option('--view-style <style>', 'View style (list or board)')
311
+ .action((options) => {
312
+ if (!options.name) {
313
+ createCmd.help();
314
+ return;
315
+ }
316
+ return createProject(options);
317
+ });
318
+ const updateCmd = project
319
+ .command('update [ref]')
320
+ .description('Update a project')
321
+ .option('--name <name>', 'New name')
322
+ .option('--color <color>', 'New color')
323
+ .option('--favorite', 'Mark as favorite')
324
+ .option('--no-favorite', 'Remove from favorites')
325
+ .option('--view-style <style>', 'View style (list or board)')
326
+ .action((ref, options) => {
327
+ if (!ref) {
328
+ updateCmd.help();
329
+ return;
330
+ }
331
+ return updateProject(ref, options);
332
+ });
333
+ const archiveCmd = project
334
+ .command('archive [ref]')
335
+ .description('Archive a project')
336
+ .action((ref) => {
337
+ if (!ref) {
338
+ archiveCmd.help();
339
+ return;
340
+ }
341
+ return archiveProject(ref);
342
+ });
343
+ const unarchiveCmd = project
344
+ .command('unarchive [ref]')
345
+ .description('Unarchive a project')
346
+ .action((ref) => {
347
+ if (!ref) {
348
+ unarchiveCmd.help();
349
+ return;
350
+ }
351
+ return unarchiveProject(ref);
352
+ });
353
+ const browseCmd = project
354
+ .command('browse [ref]')
355
+ .description('Open project in browser')
356
+ .action((ref) => {
357
+ if (!ref) {
358
+ browseCmd.help();
359
+ return;
360
+ }
361
+ return browseProject(ref);
362
+ });
363
+ }
364
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerReminderCommand(program: Command): void;
3
+ //# sourceMappingURL=reminder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reminder.d.ts","sourceRoot":"","sources":["../../src/commands/reminder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA4PnC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsD9D"}
@@ -0,0 +1,225 @@
1
+ import chalk from 'chalk';
2
+ import { getApi } from '../lib/api/core.js';
3
+ import { addReminder as apiAddReminder, deleteReminder as apiDeleteReminder, updateReminder as apiUpdateReminder, fetchReminders, getTaskReminders, } from '../lib/api/reminders.js';
4
+ import { formatDuration, parseDuration } from '../lib/duration.js';
5
+ import { formatError, formatPaginatedJson, formatPaginatedNdjson } from '../lib/output.js';
6
+ import { requireIdRef, resolveTaskRef } from '../lib/refs.js';
7
+ function formatReminderTime(reminder) {
8
+ if (reminder.minuteOffset != null) {
9
+ return `${formatDuration(reminder.minuteOffset)} before due`;
10
+ }
11
+ if (reminder.due?.date) {
12
+ const date = reminder.due.date;
13
+ if (date.includes('T')) {
14
+ return `at ${date.replace('T', ' ').slice(0, 16)}`;
15
+ }
16
+ return `at ${date}`;
17
+ }
18
+ return 'unknown time';
19
+ }
20
+ async function listReminders(taskRef, options) {
21
+ const api = await getApi();
22
+ const task = await resolveTaskRef(api, taskRef);
23
+ const reminders = await getTaskReminders(task.id);
24
+ if (options.json) {
25
+ console.log(formatPaginatedJson({ results: reminders, nextCursor: null }, 'reminder', options.full));
26
+ return;
27
+ }
28
+ if (options.ndjson) {
29
+ console.log(formatPaginatedNdjson({ results: reminders, nextCursor: null }, 'reminder', options.full));
30
+ return;
31
+ }
32
+ if (reminders.length === 0) {
33
+ console.log('No reminders.');
34
+ return;
35
+ }
36
+ for (const reminder of reminders) {
37
+ const id = chalk.dim(reminder.id);
38
+ const time = formatReminderTime(reminder);
39
+ console.log(`${id} ${time}`);
40
+ }
41
+ }
42
+ function parseDateTime(value) {
43
+ const trimmed = value.trim();
44
+ // ISO format: 2024-01-15T10:00:00
45
+ if (/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/.test(trimmed)) {
46
+ return { date: trimmed };
47
+ }
48
+ // Space format: 2024-01-15 10:00
49
+ const spaceMatch = trimmed.match(/^(\d{4}-\d{2}-\d{2})\s+(\d{2}:\d{2})$/);
50
+ if (spaceMatch) {
51
+ return { date: `${spaceMatch[1]}T${spaceMatch[2]}:00` };
52
+ }
53
+ // Date only: 2024-01-15
54
+ if (/^\d{4}-\d{2}-\d{2}$/.test(trimmed)) {
55
+ return { date: trimmed };
56
+ }
57
+ throw new Error(formatError('INVALID_DATETIME', `Invalid datetime format: "${value}"`, [
58
+ 'Examples: 2024-01-15 10:00, 2024-01-15T10:00:00, 2024-01-15',
59
+ ]));
60
+ }
61
+ async function addReminder(taskRef, options) {
62
+ if (!options.before && !options.at) {
63
+ console.log(formatError('MISSING_TIME', 'Must specify --before or --at'));
64
+ process.exitCode = 1;
65
+ return;
66
+ }
67
+ if (options.before && options.at) {
68
+ console.log(formatError('CONFLICTING_OPTIONS', 'Cannot use both --before and --at'));
69
+ process.exitCode = 1;
70
+ return;
71
+ }
72
+ const api = await getApi();
73
+ const task = await resolveTaskRef(api, taskRef);
74
+ if (options.before) {
75
+ const taskDue = task.due;
76
+ if (!taskDue?.date) {
77
+ console.log(formatError('NO_DUE_DATE', 'Cannot use --before: task has no due date', [
78
+ 'Use --at to set a specific reminder time instead',
79
+ ]));
80
+ process.exitCode = 1;
81
+ return;
82
+ }
83
+ if (!taskDue.date.includes('T')) {
84
+ console.log(formatError('NO_DUE_TIME', 'Cannot use --before: task has a due date but no time', [
85
+ 'Use --at to set a specific reminder time, or add a time to the task',
86
+ ]));
87
+ process.exitCode = 1;
88
+ return;
89
+ }
90
+ }
91
+ let minuteOffset;
92
+ let due;
93
+ if (options.before) {
94
+ const parsed = parseDuration(options.before);
95
+ if (parsed === null) {
96
+ console.log(formatError('INVALID_DURATION', `Invalid duration format: "${options.before}"`, [
97
+ 'Examples: 30m, 1h, 2h15m, 1 hour 30 minutes',
98
+ ]));
99
+ process.exitCode = 1;
100
+ return;
101
+ }
102
+ minuteOffset = parsed;
103
+ }
104
+ if (options.at) {
105
+ due = parseDateTime(options.at);
106
+ }
107
+ const reminderId = await apiAddReminder({
108
+ itemId: task.id,
109
+ minuteOffset,
110
+ due,
111
+ });
112
+ if (minuteOffset !== undefined) {
113
+ console.log(`Added reminder: ${formatDuration(minuteOffset)} before due`);
114
+ }
115
+ else if (due) {
116
+ console.log(`Added reminder: at ${due.date.replace('T', ' ')}`);
117
+ }
118
+ console.log(chalk.dim(`ID: ${reminderId}`));
119
+ }
120
+ async function updateReminderCmd(reminderId, options) {
121
+ if (!options.before && !options.at) {
122
+ console.log(formatError('MISSING_TIME', 'Must specify --before or --at'));
123
+ process.exitCode = 1;
124
+ return;
125
+ }
126
+ if (options.before && options.at) {
127
+ console.log(formatError('CONFLICTING_OPTIONS', 'Cannot use both --before and --at'));
128
+ process.exitCode = 1;
129
+ return;
130
+ }
131
+ const id = requireIdRef(reminderId, 'reminder');
132
+ let minuteOffset;
133
+ let due;
134
+ if (options.before) {
135
+ const parsed = parseDuration(options.before);
136
+ if (parsed === null) {
137
+ console.log(formatError('INVALID_DURATION', `Invalid duration format: "${options.before}"`, [
138
+ 'Examples: 30m, 1h, 2h15m, 1 hour 30 minutes',
139
+ ]));
140
+ process.exitCode = 1;
141
+ return;
142
+ }
143
+ minuteOffset = parsed;
144
+ }
145
+ if (options.at) {
146
+ due = parseDateTime(options.at);
147
+ }
148
+ await apiUpdateReminder(id, { minuteOffset, due });
149
+ if (minuteOffset !== undefined) {
150
+ console.log(`Updated reminder: ${formatDuration(minuteOffset)} before due`);
151
+ }
152
+ else if (due) {
153
+ console.log(`Updated reminder: at ${due.date.replace('T', ' ')}`);
154
+ }
155
+ }
156
+ async function deleteReminderCmd(reminderId, options) {
157
+ const id = requireIdRef(reminderId, 'reminder');
158
+ const reminders = await fetchReminders();
159
+ const reminder = reminders.find((r) => r.id === id);
160
+ if (!reminder) {
161
+ console.log(formatError('NOT_FOUND', `Reminder not found: ${id}`));
162
+ process.exitCode = 1;
163
+ return;
164
+ }
165
+ const timeDesc = formatReminderTime(reminder);
166
+ if (!options.yes) {
167
+ console.log(`Would delete reminder: ${timeDesc}`);
168
+ console.log('Use --yes to confirm.');
169
+ return;
170
+ }
171
+ await apiDeleteReminder(id);
172
+ console.log(`Deleted reminder: ${timeDesc}`);
173
+ }
174
+ export function registerReminderCommand(program) {
175
+ const reminder = program.command('reminder').description('Manage task reminders');
176
+ const listCmd = reminder
177
+ .command('list [task]')
178
+ .description('List reminders for a task')
179
+ .option('--json', 'Output as JSON')
180
+ .option('--ndjson', 'Output as newline-delimited JSON')
181
+ .option('--full', 'Include all fields in JSON output')
182
+ .action((task, options) => {
183
+ if (!task) {
184
+ listCmd.help();
185
+ return;
186
+ }
187
+ return listReminders(task, options);
188
+ });
189
+ const addCmd = reminder
190
+ .command('add [task]')
191
+ .description('Add a reminder to a task')
192
+ .option('--before <duration>', 'Time before due (e.g., 30m, 1h)')
193
+ .option('--at <datetime>', 'Specific time (e.g., 2024-01-15 10:00)')
194
+ .action((task, options) => {
195
+ if (!task) {
196
+ addCmd.help();
197
+ return;
198
+ }
199
+ return addReminder(task, options);
200
+ });
201
+ const updateCmd = reminder
202
+ .command('update [id]')
203
+ .description('Update a reminder')
204
+ .option('--before <duration>', 'Time before due (e.g., 30m, 1h)')
205
+ .option('--at <datetime>', 'Specific time (e.g., 2024-01-15 10:00)')
206
+ .action((id, options) => {
207
+ if (!id) {
208
+ updateCmd.help();
209
+ return;
210
+ }
211
+ return updateReminderCmd(id, options);
212
+ });
213
+ const deleteCmd = reminder
214
+ .command('delete [id]')
215
+ .description('Delete a reminder')
216
+ .option('--yes', 'Confirm deletion')
217
+ .action((id, options) => {
218
+ if (!id) {
219
+ deleteCmd.help();
220
+ return;
221
+ }
222
+ return deleteReminderCmd(id, options);
223
+ });
224
+ }
225
+ //# sourceMappingURL=reminder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reminder.js","sourceRoot":"","sources":["../../src/commands/reminder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerSectionCommand(program: Command): void;
3
+ //# sourceMappingURL=section.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"section.d.ts","sourceRoot":"","sources":["../../src/commands/section.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAqInC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmE7D"}