@doist/todoist-cli 1.29.3 → 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 (246) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/package.json +8 -3
  3. package/dist/__mocks__/chalk.d.ts +0 -3
  4. package/dist/__mocks__/chalk.d.ts.map +0 -1
  5. package/dist/__mocks__/chalk.js +0 -8
  6. package/dist/__mocks__/chalk.js.map +0 -1
  7. package/dist/commands/activity.d.ts +0 -3
  8. package/dist/commands/activity.d.ts.map +0 -1
  9. package/dist/commands/activity.js +0 -267
  10. package/dist/commands/activity.js.map +0 -1
  11. package/dist/commands/add.d.ts +0 -3
  12. package/dist/commands/add.d.ts.map +0 -1
  13. package/dist/commands/add.js +0 -36
  14. package/dist/commands/add.js.map +0 -1
  15. package/dist/commands/attachment.d.ts +0 -3
  16. package/dist/commands/attachment.d.ts.map +0 -1
  17. package/dist/commands/attachment.js +0 -156
  18. package/dist/commands/attachment.js.map +0 -1
  19. package/dist/commands/auth.d.ts +0 -3
  20. package/dist/commands/auth.d.ts.map +0 -1
  21. package/dist/commands/auth.js +0 -124
  22. package/dist/commands/auth.js.map +0 -1
  23. package/dist/commands/changelog.d.ts +0 -8
  24. package/dist/commands/changelog.d.ts.map +0 -1
  25. package/dist/commands/changelog.js +0 -92
  26. package/dist/commands/changelog.js.map +0 -1
  27. package/dist/commands/comment.d.ts +0 -3
  28. package/dist/commands/comment.d.ts.map +0 -1
  29. package/dist/commands/comment.js +0 -301
  30. package/dist/commands/comment.js.map +0 -1
  31. package/dist/commands/completed.d.ts +0 -3
  32. package/dist/commands/completed.d.ts.map +0 -1
  33. package/dist/commands/completed.js +0 -107
  34. package/dist/commands/completed.js.map +0 -1
  35. package/dist/commands/completion.d.ts +0 -3
  36. package/dist/commands/completion.d.ts.map +0 -1
  37. package/dist/commands/completion.js +0 -107
  38. package/dist/commands/completion.js.map +0 -1
  39. package/dist/commands/filter.d.ts +0 -5
  40. package/dist/commands/filter.d.ts.map +0 -1
  41. package/dist/commands/filter.js +0 -287
  42. package/dist/commands/filter.js.map +0 -1
  43. package/dist/commands/inbox.d.ts +0 -3
  44. package/dist/commands/inbox.d.ts.map +0 -1
  45. package/dist/commands/inbox.js +0 -25
  46. package/dist/commands/inbox.js.map +0 -1
  47. package/dist/commands/label.d.ts +0 -5
  48. package/dist/commands/label.d.ts.map +0 -1
  49. package/dist/commands/label.js +0 -328
  50. package/dist/commands/label.js.map +0 -1
  51. package/dist/commands/notification.d.ts +0 -3
  52. package/dist/commands/notification.d.ts.map +0 -1
  53. package/dist/commands/notification.js +0 -274
  54. package/dist/commands/notification.js.map +0 -1
  55. package/dist/commands/project.d.ts +0 -5
  56. package/dist/commands/project.d.ts.map +0 -1
  57. package/dist/commands/project.js +0 -528
  58. package/dist/commands/project.js.map +0 -1
  59. package/dist/commands/reminder.d.ts +0 -3
  60. package/dist/commands/reminder.d.ts.map +0 -1
  61. package/dist/commands/reminder.js +0 -271
  62. package/dist/commands/reminder.js.map +0 -1
  63. package/dist/commands/section.d.ts +0 -3
  64. package/dist/commands/section.d.ts.map +0 -1
  65. package/dist/commands/section.js +0 -172
  66. package/dist/commands/section.js.map +0 -1
  67. package/dist/commands/settings.d.ts +0 -12
  68. package/dist/commands/settings.d.ts.map +0 -1
  69. package/dist/commands/settings.js +0 -312
  70. package/dist/commands/settings.js.map +0 -1
  71. package/dist/commands/skill.d.ts +0 -3
  72. package/dist/commands/skill.d.ts.map +0 -1
  73. package/dist/commands/skill.js +0 -127
  74. package/dist/commands/skill.js.map +0 -1
  75. package/dist/commands/stats.d.ts +0 -3
  76. package/dist/commands/stats.d.ts.map +0 -1
  77. package/dist/commands/stats.js +0 -151
  78. package/dist/commands/stats.js.map +0 -1
  79. package/dist/commands/task.d.ts +0 -5
  80. package/dist/commands/task.d.ts.map +0 -1
  81. package/dist/commands/task.js +0 -559
  82. package/dist/commands/task.js.map +0 -1
  83. package/dist/commands/today.d.ts +0 -18
  84. package/dist/commands/today.d.ts.map +0 -1
  85. package/dist/commands/today.js +0 -108
  86. package/dist/commands/today.js.map +0 -1
  87. package/dist/commands/upcoming.d.ts +0 -17
  88. package/dist/commands/upcoming.d.ts.map +0 -1
  89. package/dist/commands/upcoming.js +0 -129
  90. package/dist/commands/upcoming.js.map +0 -1
  91. package/dist/commands/update.d.ts +0 -6
  92. package/dist/commands/update.d.ts.map +0 -1
  93. package/dist/commands/update.js +0 -90
  94. package/dist/commands/update.js.map +0 -1
  95. package/dist/commands/view.d.ts +0 -3
  96. package/dist/commands/view.d.ts.map +0 -1
  97. package/dist/commands/view.js +0 -79
  98. package/dist/commands/view.js.map +0 -1
  99. package/dist/commands/workspace.d.ts +0 -3
  100. package/dist/commands/workspace.d.ts.map +0 -1
  101. package/dist/commands/workspace.js +0 -309
  102. package/dist/commands/workspace.js.map +0 -1
  103. package/dist/index.d.ts +0 -3
  104. package/dist/index.d.ts.map +0 -1
  105. package/dist/index.js +0 -176
  106. package/dist/index.js.map +0 -1
  107. package/dist/lib/api/core.d.ts +0 -13
  108. package/dist/lib/api/core.d.ts.map +0 -1
  109. package/dist/lib/api/core.js +0 -170
  110. package/dist/lib/api/core.js.map +0 -1
  111. package/dist/lib/api/filters.d.ts +0 -19
  112. package/dist/lib/api/filters.d.ts.map +0 -1
  113. package/dist/lib/api/filters.js +0 -60
  114. package/dist/lib/api/filters.js.map +0 -1
  115. package/dist/lib/api/notifications.d.ts +0 -33
  116. package/dist/lib/api/notifications.d.ts.map +0 -1
  117. package/dist/lib/api/notifications.js +0 -94
  118. package/dist/lib/api/notifications.js.map +0 -1
  119. package/dist/lib/api/reminders.d.ts +0 -30
  120. package/dist/lib/api/reminders.d.ts.map +0 -1
  121. package/dist/lib/api/reminders.js +0 -65
  122. package/dist/lib/api/reminders.js.map +0 -1
  123. package/dist/lib/api/stats.d.ts +0 -41
  124. package/dist/lib/api/stats.d.ts.map +0 -1
  125. package/dist/lib/api/stats.js +0 -74
  126. package/dist/lib/api/stats.js.map +0 -1
  127. package/dist/lib/api/uploads.d.ts +0 -10
  128. package/dist/lib/api/uploads.d.ts.map +0 -1
  129. package/dist/lib/api/uploads.js +0 -31
  130. package/dist/lib/api/uploads.js.map +0 -1
  131. package/dist/lib/api/user-settings.d.ts +0 -34
  132. package/dist/lib/api/user-settings.d.ts.map +0 -1
  133. package/dist/lib/api/user-settings.js +0 -58
  134. package/dist/lib/api/user-settings.js.map +0 -1
  135. package/dist/lib/api/workspaces.d.ts +0 -23
  136. package/dist/lib/api/workspaces.d.ts.map +0 -1
  137. package/dist/lib/api/workspaces.js +0 -61
  138. package/dist/lib/api/workspaces.js.map +0 -1
  139. package/dist/lib/auth.d.ts +0 -14
  140. package/dist/lib/auth.d.ts.map +0 -1
  141. package/dist/lib/auth.js +0 -182
  142. package/dist/lib/auth.js.map +0 -1
  143. package/dist/lib/browser.d.ts +0 -2
  144. package/dist/lib/browser.d.ts.map +0 -1
  145. package/dist/lib/browser.js +0 -6
  146. package/dist/lib/browser.js.map +0 -1
  147. package/dist/lib/collaborators.d.ts +0 -29
  148. package/dist/lib/collaborators.d.ts.map +0 -1
  149. package/dist/lib/collaborators.js +0 -184
  150. package/dist/lib/collaborators.js.map +0 -1
  151. package/dist/lib/completion.d.ts +0 -41
  152. package/dist/lib/completion.d.ts.map +0 -1
  153. package/dist/lib/completion.js +0 -191
  154. package/dist/lib/completion.js.map +0 -1
  155. package/dist/lib/dates.d.ts +0 -16
  156. package/dist/lib/dates.d.ts.map +0 -1
  157. package/dist/lib/dates.js +0 -45
  158. package/dist/lib/dates.js.map +0 -1
  159. package/dist/lib/duration.d.ts +0 -14
  160. package/dist/lib/duration.d.ts.map +0 -1
  161. package/dist/lib/duration.js +0 -58
  162. package/dist/lib/duration.js.map +0 -1
  163. package/dist/lib/logger.d.ts +0 -42
  164. package/dist/lib/logger.d.ts.map +0 -1
  165. package/dist/lib/logger.js +0 -227
  166. package/dist/lib/logger.js.map +0 -1
  167. package/dist/lib/markdown.d.ts +0 -3
  168. package/dist/lib/markdown.d.ts.map +0 -1
  169. package/dist/lib/markdown.js +0 -22
  170. package/dist/lib/markdown.js.map +0 -1
  171. package/dist/lib/oauth-server.d.ts +0 -6
  172. package/dist/lib/oauth-server.d.ts.map +0 -1
  173. package/dist/lib/oauth-server.js +0 -773
  174. package/dist/lib/oauth-server.js.map +0 -1
  175. package/dist/lib/oauth.d.ts +0 -3
  176. package/dist/lib/oauth.d.ts.map +0 -1
  177. package/dist/lib/oauth.js +0 -38
  178. package/dist/lib/oauth.js.map +0 -1
  179. package/dist/lib/options.d.ts +0 -16
  180. package/dist/lib/options.d.ts.map +0 -1
  181. package/dist/lib/options.js +0 -2
  182. package/dist/lib/options.js.map +0 -1
  183. package/dist/lib/output.d.ts +0 -39
  184. package/dist/lib/output.d.ts.map +0 -1
  185. package/dist/lib/output.js +0 -311
  186. package/dist/lib/output.js.map +0 -1
  187. package/dist/lib/pagination.d.ts +0 -23
  188. package/dist/lib/pagination.d.ts.map +0 -1
  189. package/dist/lib/pagination.js +0 -26
  190. package/dist/lib/pagination.js.map +0 -1
  191. package/dist/lib/pkce.d.ts +0 -4
  192. package/dist/lib/pkce.d.ts.map +0 -1
  193. package/dist/lib/pkce.js +0 -19
  194. package/dist/lib/pkce.js.map +0 -1
  195. package/dist/lib/progress.d.ts +0 -29
  196. package/dist/lib/progress.d.ts.map +0 -1
  197. package/dist/lib/progress.js +0 -101
  198. package/dist/lib/progress.js.map +0 -1
  199. package/dist/lib/refs.d.ts +0 -52
  200. package/dist/lib/refs.d.ts.map +0 -1
  201. package/dist/lib/refs.js +0 -225
  202. package/dist/lib/refs.js.map +0 -1
  203. package/dist/lib/secure-store.d.ts +0 -11
  204. package/dist/lib/secure-store.d.ts.map +0 -1
  205. package/dist/lib/secure-store.js +0 -57
  206. package/dist/lib/secure-store.js.map +0 -1
  207. package/dist/lib/skills/content.d.ts +0 -4
  208. package/dist/lib/skills/content.d.ts.map +0 -1
  209. package/dist/lib/skills/content.js +0 -418
  210. package/dist/lib/skills/content.js.map +0 -1
  211. package/dist/lib/skills/create-installer.d.ts +0 -10
  212. package/dist/lib/skills/create-installer.d.ts.map +0 -1
  213. package/dist/lib/skills/create-installer.js +0 -77
  214. package/dist/lib/skills/create-installer.js.map +0 -1
  215. package/dist/lib/skills/index.d.ts +0 -6
  216. package/dist/lib/skills/index.d.ts.map +0 -1
  217. package/dist/lib/skills/index.js +0 -40
  218. package/dist/lib/skills/index.js.map +0 -1
  219. package/dist/lib/skills/types.d.ts +0 -11
  220. package/dist/lib/skills/types.d.ts.map +0 -1
  221. package/dist/lib/skills/types.js +0 -2
  222. package/dist/lib/skills/types.js.map +0 -1
  223. package/dist/lib/skills/update-installed.d.ts +0 -7
  224. package/dist/lib/skills/update-installed.d.ts.map +0 -1
  225. package/dist/lib/skills/update-installed.js +0 -23
  226. package/dist/lib/skills/update-installed.js.map +0 -1
  227. package/dist/lib/spinner.d.ts +0 -23
  228. package/dist/lib/spinner.d.ts.map +0 -1
  229. package/dist/lib/spinner.js +0 -138
  230. package/dist/lib/spinner.js.map +0 -1
  231. package/dist/lib/stdin.d.ts +0 -2
  232. package/dist/lib/stdin.d.ts.map +0 -1
  233. package/dist/lib/stdin.js +0 -12
  234. package/dist/lib/stdin.js.map +0 -1
  235. package/dist/lib/task-list.d.ts +0 -31
  236. package/dist/lib/task-list.d.ts.map +0 -1
  237. package/dist/lib/task-list.js +0 -271
  238. package/dist/lib/task-list.js.map +0 -1
  239. package/dist/lib/urls.d.ts +0 -8
  240. package/dist/lib/urls.d.ts.map +0 -1
  241. package/dist/lib/urls.js +0 -26
  242. package/dist/lib/urls.js.map +0 -1
  243. package/dist/postinstall.d.ts +0 -2
  244. package/dist/postinstall.d.ts.map +0 -1
  245. package/dist/postinstall.js +0 -3
  246. package/dist/postinstall.js.map +0 -1
@@ -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,8 +0,0 @@
1
- import { Command } from 'commander';
2
- interface ChangelogOptions {
3
- count: string;
4
- }
5
- export declare function changelogAction(options: ChangelogOptions): Promise<void>;
6
- export declare function registerChangelogCommand(program: Command): void;
7
- export {};
8
- //# sourceMappingURL=changelog.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"changelog.d.ts","sourceRoot":"","sources":["../../src/commands/changelog.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAqEnC,UAAU,gBAAgB;IACtB,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB9E;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAM/D"}
@@ -1,92 +0,0 @@
1
- import { readFile } from 'node:fs/promises';
2
- import { dirname, join } from 'node:path';
3
- import { fileURLToPath } from 'node:url';
4
- import chalk from 'chalk';
5
- import packageJson from '../../package.json' with { type: 'json' };
6
- const CHANGELOG_PATH = join(dirname(fileURLToPath(import.meta.url)), '..', '..', 'CHANGELOG.md');
7
- const CHANGELOG_URL = `https://github.com/Doist/todoist-cli/blob/v${packageJson.version}/CHANGELOG.md`;
8
- function formatInline(text) {
9
- return text
10
- .replace(/\*\*([^*]+)\*\*/g, (_, content) => chalk.bold(content))
11
- .replace(/`([^`]+)`/g, (_, code) => chalk.cyan(code));
12
- }
13
- function formatForTerminal(text) {
14
- return text
15
- .split('\n')
16
- .map((line) => {
17
- // Version headers: ## 1.25.0 (date) → bold green
18
- if (line.startsWith('## ')) {
19
- return chalk.green.bold(line.slice(3));
20
- }
21
- // Section headers: ### Features → bold
22
- if (line.startsWith('### ')) {
23
- return chalk.bold(line.slice(4));
24
- }
25
- // Bullet items: * description → dimmed bullet + text
26
- if (line.startsWith('* ')) {
27
- return ` ${chalk.dim('•')} ${formatInline(line.slice(2))}`;
28
- }
29
- return formatInline(line);
30
- })
31
- .join('\n');
32
- }
33
- function cleanChangelog(text) {
34
- return (text
35
- // Version headers: ## [1.25.0](https://...) (date) → ## 1.25.0 (date)
36
- .replace(/## \[([^\]]+)\]\([^)]*\)/g, '## $1')
37
- // Remove commit hash links: ([abc1234](https://...))
38
- .replace(/ \([a-f0-9]{7}\)/g, '')
39
- .replace(/ \(\[[a-f0-9]{7}\]\([^)]*\)\)/g, '')
40
- // Issue/PR links: [#151](https://...) → #151
41
- .replace(/\[#(\d+)\]\([^)]*\)/g, '#$1')
42
- // Remove **deps:** dependency update lines (not useful to end users)
43
- .replace(/^\* \*\*deps:\*\*.*$/gm, '')
44
- // Remove **scope:** prefixes but keep the text: **task:** foo → foo
45
- .replace(/\*\*[\w-]+:\*\* /g, '')
46
- // Clean up blank lines left by removed dep lines
47
- .replace(/\n{3,}/g, '\n\n')
48
- // Remove section headers left empty after filtering (e.g. ### Bug Fixes with no items)
49
- .replace(/### [\w ]+\n\n(?=##|$)/gm, ''));
50
- }
51
- function parseChangelog(content, count) {
52
- const sections = content.split(/\n(?=## \[)/);
53
- const versionSections = sections.slice(1);
54
- const selected = versionSections.slice(0, count);
55
- if (selected.length === 0) {
56
- return { text: 'No changelog entries found.', hasMore: false };
57
- }
58
- return {
59
- text: cleanChangelog(selected.join('\n').trimEnd()),
60
- hasMore: versionSections.length > count,
61
- };
62
- }
63
- export async function changelogAction(options) {
64
- const count = parseInt(options.count, 10);
65
- if (isNaN(count) || count < 1) {
66
- console.error(chalk.red('Error:'), 'Count must be a positive number');
67
- process.exitCode = 1;
68
- return;
69
- }
70
- let content;
71
- try {
72
- content = await readFile(CHANGELOG_PATH, 'utf-8');
73
- }
74
- catch {
75
- console.error(chalk.red('Error:'), 'Could not read changelog file');
76
- process.exitCode = 1;
77
- return;
78
- }
79
- const { text, hasMore } = parseChangelog(content, count);
80
- console.log(formatForTerminal(text));
81
- if (hasMore) {
82
- console.log(chalk.dim(`\nView full changelog: ${CHANGELOG_URL}`));
83
- }
84
- }
85
- export function registerChangelogCommand(program) {
86
- program
87
- .command('changelog')
88
- .description('Show recent changelog entries')
89
- .option('-n, --count <number>', 'Number of versions to show', '5')
90
- .action(changelogAction);
91
- }
92
- //# sourceMappingURL=changelog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"changelog.js","sourceRoot":"","sources":["../../src/commands/changelog.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function registerCommentCommand(program: Command): void;
3
- //# sourceMappingURL=comment.d.ts.map
@@ -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,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function registerCompletedCommand(program: Command): void;
3
- //# sourceMappingURL=completed.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"completed.d.ts","sourceRoot":"","sources":["../../src/commands/completed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA+BnC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyI/D"}