@doist/twist-cli 2.21.0 → 2.21.1

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 (202) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/package.json +2 -4
  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/auth.d.ts +0 -3
  8. package/dist/commands/auth.d.ts.map +0 -1
  9. package/dist/commands/auth.js +0 -155
  10. package/dist/commands/auth.js.map +0 -1
  11. package/dist/commands/away.d.ts +0 -3
  12. package/dist/commands/away.d.ts.map +0 -1
  13. package/dist/commands/away.js +0 -120
  14. package/dist/commands/away.js.map +0 -1
  15. package/dist/commands/changelog.d.ts +0 -8
  16. package/dist/commands/changelog.d.ts.map +0 -1
  17. package/dist/commands/changelog.js +0 -113
  18. package/dist/commands/changelog.js.map +0 -1
  19. package/dist/commands/channel.d.ts +0 -3
  20. package/dist/commands/channel.d.ts.map +0 -1
  21. package/dist/commands/channel.js +0 -53
  22. package/dist/commands/channel.js.map +0 -1
  23. package/dist/commands/comment.d.ts +0 -3
  24. package/dist/commands/comment.d.ts.map +0 -1
  25. package/dist/commands/comment.js +0 -99
  26. package/dist/commands/comment.js.map +0 -1
  27. package/dist/commands/completion.d.ts +0 -3
  28. package/dist/commands/completion.d.ts.map +0 -1
  29. package/dist/commands/completion.js +0 -121
  30. package/dist/commands/completion.js.map +0 -1
  31. package/dist/commands/conversation.d.ts +0 -3
  32. package/dist/commands/conversation.d.ts.map +0 -1
  33. package/dist/commands/conversation.js +0 -458
  34. package/dist/commands/conversation.js.map +0 -1
  35. package/dist/commands/inbox.d.ts +0 -3
  36. package/dist/commands/inbox.d.ts.map +0 -1
  37. package/dist/commands/inbox.js +0 -127
  38. package/dist/commands/inbox.js.map +0 -1
  39. package/dist/commands/msg.d.ts +0 -3
  40. package/dist/commands/msg.d.ts.map +0 -1
  41. package/dist/commands/msg.js +0 -103
  42. package/dist/commands/msg.js.map +0 -1
  43. package/dist/commands/react.d.ts +0 -3
  44. package/dist/commands/react.d.ts.map +0 -1
  45. package/dist/commands/react.js +0 -102
  46. package/dist/commands/react.js.map +0 -1
  47. package/dist/commands/search.d.ts +0 -3
  48. package/dist/commands/search.d.ts.map +0 -1
  49. package/dist/commands/search.js +0 -160
  50. package/dist/commands/search.js.map +0 -1
  51. package/dist/commands/skill.d.ts +0 -3
  52. package/dist/commands/skill.d.ts.map +0 -1
  53. package/dist/commands/skill.js +0 -119
  54. package/dist/commands/skill.js.map +0 -1
  55. package/dist/commands/thread/create.d.ts +0 -7
  56. package/dist/commands/thread/create.d.ts.map +0 -1
  57. package/dist/commands/thread/create.js +0 -45
  58. package/dist/commands/thread/create.js.map +0 -1
  59. package/dist/commands/thread/helpers.d.ts +0 -10
  60. package/dist/commands/thread/helpers.d.ts.map +0 -1
  61. package/dist/commands/thread/helpers.js +0 -27
  62. package/dist/commands/thread/helpers.js.map +0 -1
  63. package/dist/commands/thread/mutate.d.ts +0 -5
  64. package/dist/commands/thread/mutate.d.ts.map +0 -1
  65. package/dist/commands/thread/mutate.js +0 -21
  66. package/dist/commands/thread/mutate.js.map +0 -1
  67. package/dist/commands/thread/mute.d.ts +0 -8
  68. package/dist/commands/thread/mute.d.ts.map +0 -1
  69. package/dist/commands/thread/mute.js +0 -58
  70. package/dist/commands/thread/mute.js.map +0 -1
  71. package/dist/commands/thread/reply.d.ts +0 -9
  72. package/dist/commands/thread/reply.d.ts.map +0 -1
  73. package/dist/commands/thread/reply.js +0 -68
  74. package/dist/commands/thread/reply.js.map +0 -1
  75. package/dist/commands/thread/view.d.ts +0 -9
  76. package/dist/commands/thread/view.d.ts.map +0 -1
  77. package/dist/commands/thread/view.js +0 -175
  78. package/dist/commands/thread/view.js.map +0 -1
  79. package/dist/commands/thread.d.ts +0 -3
  80. package/dist/commands/thread.d.ts.map +0 -1
  81. package/dist/commands/thread.js +0 -70
  82. package/dist/commands/thread.js.map +0 -1
  83. package/dist/commands/update.d.ts +0 -14
  84. package/dist/commands/update.d.ts.map +0 -1
  85. package/dist/commands/update.js +0 -91
  86. package/dist/commands/update.js.map +0 -1
  87. package/dist/commands/user.d.ts +0 -3
  88. package/dist/commands/user.d.ts.map +0 -1
  89. package/dist/commands/user.js +0 -67
  90. package/dist/commands/user.js.map +0 -1
  91. package/dist/commands/view.d.ts +0 -3
  92. package/dist/commands/view.d.ts.map +0 -1
  93. package/dist/commands/view.js +0 -63
  94. package/dist/commands/view.js.map +0 -1
  95. package/dist/commands/workspace.d.ts +0 -3
  96. package/dist/commands/workspace.d.ts.map +0 -1
  97. package/dist/commands/workspace.js +0 -48
  98. package/dist/commands/workspace.js.map +0 -1
  99. package/dist/index.d.ts +0 -3
  100. package/dist/index.d.ts.map +0 -1
  101. package/dist/index.js +0 -133
  102. package/dist/index.js.map +0 -1
  103. package/dist/lib/api.d.ts +0 -20
  104. package/dist/lib/api.d.ts.map +0 -1
  105. package/dist/lib/api.js +0 -227
  106. package/dist/lib/api.js.map +0 -1
  107. package/dist/lib/auth.d.ts +0 -21
  108. package/dist/lib/auth.d.ts.map +0 -1
  109. package/dist/lib/auth.js +0 -189
  110. package/dist/lib/auth.js.map +0 -1
  111. package/dist/lib/completion.d.ts +0 -31
  112. package/dist/lib/completion.d.ts.map +0 -1
  113. package/dist/lib/completion.js +0 -173
  114. package/dist/lib/completion.js.map +0 -1
  115. package/dist/lib/config.d.ts +0 -13
  116. package/dist/lib/config.d.ts.map +0 -1
  117. package/dist/lib/config.js +0 -26
  118. package/dist/lib/config.js.map +0 -1
  119. package/dist/lib/dates.d.ts +0 -3
  120. package/dist/lib/dates.d.ts.map +0 -1
  121. package/dist/lib/dates.js +0 -44
  122. package/dist/lib/dates.js.map +0 -1
  123. package/dist/lib/input.d.ts +0 -3
  124. package/dist/lib/input.d.ts.map +0 -1
  125. package/dist/lib/input.js +0 -52
  126. package/dist/lib/input.js.map +0 -1
  127. package/dist/lib/markdown.d.ts +0 -2
  128. package/dist/lib/markdown.d.ts.map +0 -1
  129. package/dist/lib/markdown.js +0 -16
  130. package/dist/lib/markdown.js.map +0 -1
  131. package/dist/lib/oauth-server.d.ts +0 -13
  132. package/dist/lib/oauth-server.d.ts.map +0 -1
  133. package/dist/lib/oauth-server.js +0 -824
  134. package/dist/lib/oauth-server.js.map +0 -1
  135. package/dist/lib/oauth.d.ts +0 -31
  136. package/dist/lib/oauth.d.ts.map +0 -1
  137. package/dist/lib/oauth.js +0 -140
  138. package/dist/lib/oauth.js.map +0 -1
  139. package/dist/lib/options.d.ts +0 -17
  140. package/dist/lib/options.d.ts.map +0 -1
  141. package/dist/lib/options.js +0 -2
  142. package/dist/lib/options.js.map +0 -1
  143. package/dist/lib/output.d.ts +0 -25
  144. package/dist/lib/output.d.ts.map +0 -1
  145. package/dist/lib/output.js +0 -128
  146. package/dist/lib/output.js.map +0 -1
  147. package/dist/lib/permissions.d.ts +0 -4
  148. package/dist/lib/permissions.d.ts.map +0 -1
  149. package/dist/lib/permissions.js +0 -35
  150. package/dist/lib/permissions.js.map +0 -1
  151. package/dist/lib/pkce.d.ts +0 -16
  152. package/dist/lib/pkce.d.ts.map +0 -1
  153. package/dist/lib/pkce.js +0 -35
  154. package/dist/lib/pkce.js.map +0 -1
  155. package/dist/lib/progress.d.ts +0 -29
  156. package/dist/lib/progress.d.ts.map +0 -1
  157. package/dist/lib/progress.js +0 -101
  158. package/dist/lib/progress.js.map +0 -1
  159. package/dist/lib/public-channels.d.ts +0 -5
  160. package/dist/lib/public-channels.d.ts.map +0 -1
  161. package/dist/lib/public-channels.js +0 -35
  162. package/dist/lib/public-channels.js.map +0 -1
  163. package/dist/lib/refs.d.ts +0 -37
  164. package/dist/lib/refs.d.ts.map +0 -1
  165. package/dist/lib/refs.js +0 -219
  166. package/dist/lib/refs.js.map +0 -1
  167. package/dist/lib/search-api.d.ts +0 -25
  168. package/dist/lib/search-api.d.ts.map +0 -1
  169. package/dist/lib/search-api.js +0 -85
  170. package/dist/lib/search-api.js.map +0 -1
  171. package/dist/lib/secure-store.d.ts +0 -11
  172. package/dist/lib/secure-store.d.ts.map +0 -1
  173. package/dist/lib/secure-store.js +0 -57
  174. package/dist/lib/secure-store.js.map +0 -1
  175. package/dist/lib/skills/content.d.ts +0 -5
  176. package/dist/lib/skills/content.d.ts.map +0 -1
  177. package/dist/lib/skills/content.js +0 -286
  178. package/dist/lib/skills/content.js.map +0 -1
  179. package/dist/lib/skills/create-installer.d.ts +0 -9
  180. package/dist/lib/skills/create-installer.d.ts.map +0 -1
  181. package/dist/lib/skills/create-installer.js +0 -60
  182. package/dist/lib/skills/create-installer.js.map +0 -1
  183. package/dist/lib/skills/index.d.ts +0 -7
  184. package/dist/lib/skills/index.d.ts.map +0 -1
  185. package/dist/lib/skills/index.js +0 -54
  186. package/dist/lib/skills/index.js.map +0 -1
  187. package/dist/lib/skills/types.d.ts +0 -30
  188. package/dist/lib/skills/types.d.ts.map +0 -1
  189. package/dist/lib/skills/types.js +0 -2
  190. package/dist/lib/skills/types.js.map +0 -1
  191. package/dist/lib/skills/update-installed.d.ts +0 -9
  192. package/dist/lib/skills/update-installed.d.ts.map +0 -1
  193. package/dist/lib/skills/update-installed.js +0 -20
  194. package/dist/lib/skills/update-installed.js.map +0 -1
  195. package/dist/lib/spinner.d.ts +0 -24
  196. package/dist/lib/spinner.d.ts.map +0 -1
  197. package/dist/lib/spinner.js +0 -126
  198. package/dist/lib/spinner.js.map +0 -1
  199. package/dist/postinstall.d.ts +0 -2
  200. package/dist/postinstall.d.ts.map +0 -1
  201. package/dist/postinstall.js +0 -3
  202. package/dist/postinstall.js.map +0 -1
@@ -1,27 +0,0 @@
1
- import chalk from 'chalk';
2
- import { formatRelativeDate } from '../../lib/dates.js';
3
- import { renderMarkdown } from '../../lib/markdown.js';
4
- import { colors, isAccessible } from '../../lib/output.js';
5
- export function printSeparator(label) {
6
- const totalWidth = 60;
7
- const labelWithPadding = ` ${label} `;
8
- const remainingWidth = totalWidth - labelWithPadding.length;
9
- const leftWidth = Math.floor(remainingWidth / 2);
10
- const rightWidth = remainingWidth - leftWidth;
11
- const dashChar = isAccessible() ? '-' : '─';
12
- const line = chalk.dim(dashChar.repeat(leftWidth) + labelWithPadding + dashChar.repeat(rightWidth));
13
- console.log('');
14
- console.log(line);
15
- console.log('');
16
- }
17
- export function pluralize(count, singular) {
18
- return count === 1 ? singular : `${singular}s`;
19
- }
20
- export function printComment(comment, userMap, raw) {
21
- const author = colors.author(userMap.get(comment.creator) || `user:${comment.creator}`);
22
- const time = colors.timestamp(formatRelativeDate(comment.posted));
23
- console.log(`${author} ${time} ${colors.timestamp(`id:${comment.id}`)}`);
24
- console.log(raw ? comment.content : renderMarkdown(comment.content));
25
- console.log('');
26
- }
27
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/thread/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAE1D,MAAM,UAAU,cAAc,CAAC,KAAa;IACxC,MAAM,UAAU,GAAG,EAAE,CAAA;IACrB,MAAM,gBAAgB,GAAG,IAAI,KAAK,GAAG,CAAA;IACrC,MAAM,cAAc,GAAG,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAA;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAA;IAChD,MAAM,UAAU,GAAG,cAAc,GAAG,SAAS,CAAA;IAC7C,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;IAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAClB,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAC9E,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,QAAgB;IACrD,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAA;AAClD,CAAC;AASD,MAAM,UAAU,YAAY,CACxB,OAAoB,EACpB,OAA4B,EAC5B,GAAY;IAEZ,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IACvF,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IACjE,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,KAAK,IAAI,KAAK,MAAM,CAAC,SAAS,CAAC,MAAM,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;IAC1E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IACpE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACnB,CAAC"}
@@ -1,5 +0,0 @@
1
- import type { MutationOptions } from '../../lib/options.js';
2
- type DoneOptions = MutationOptions;
3
- export declare function markThreadDone(ref: string, options: DoneOptions): Promise<void>;
4
- export {};
5
- //# sourceMappingURL=mutate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/mutate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAK3D,KAAK,WAAW,GAAG,eAAe,CAAA;AAElC,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBrF"}
@@ -1,21 +0,0 @@
1
- import { getTwistClient } from '../../lib/api.js';
2
- import { formatJson } from '../../lib/output.js';
3
- import { assertChannelIsPublic } from '../../lib/public-channels.js';
4
- import { resolveThreadId } from '../../lib/refs.js';
5
- export async function markThreadDone(ref, options) {
6
- const threadId = resolveThreadId(ref);
7
- if (options.dryRun) {
8
- console.log(`Dry run: would archive thread ${threadId}`);
9
- return;
10
- }
11
- const client = await getTwistClient();
12
- const thread = await client.threads.getThread(threadId);
13
- await assertChannelIsPublic(thread.channelId, thread.workspaceId);
14
- await client.inbox.archiveThread(threadId);
15
- if (options.json) {
16
- console.log(formatJson({ id: threadId, isArchived: true }));
17
- return;
18
- }
19
- console.log(`Thread ${threadId} archived.`);
20
- }
21
- //# sourceMappingURL=mutate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../../src/commands/thread/mutate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAInD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,OAAoB;IAClE,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IAErC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAA;QACxD,OAAM;IACV,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAA;IACrC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IACvD,MAAM,qBAAqB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAA;IACjE,MAAM,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IAE1C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QAC3D,OAAM;IACV,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,UAAU,QAAQ,YAAY,CAAC,CAAA;AAC/C,CAAC"}
@@ -1,8 +0,0 @@
1
- import type { MutationOptions } from '../../lib/options.js';
2
- type MuteOptions = MutationOptions & {
3
- minutes?: string;
4
- };
5
- export declare function muteThread(ref: string, options: MuteOptions): Promise<void>;
6
- export declare function unmuteThread(ref: string, options: MutationOptions): Promise<void>;
7
- export {};
8
- //# sourceMappingURL=mute.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mute.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/mute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAK3D,KAAK,WAAW,GAAG,eAAe,GAAG;IACjC,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAYD,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBjF;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBvF"}
@@ -1,58 +0,0 @@
1
- import { getTwistClient } from '../../lib/api.js';
2
- import { formatJson } from '../../lib/output.js';
3
- import { assertChannelIsPublic } from '../../lib/public-channels.js';
4
- import { resolveThreadId } from '../../lib/refs.js';
5
- function parseMinutes(value) {
6
- if (!value)
7
- return 60;
8
- const parsed = Number(value);
9
- if (!Number.isInteger(parsed) || parsed <= 0) {
10
- console.error(`Invalid --minutes value: ${value} (must be a positive integer)`);
11
- process.exit(1);
12
- }
13
- return parsed;
14
- }
15
- export async function muteThread(ref, options) {
16
- const threadId = resolveThreadId(ref);
17
- const minutes = parseMinutes(options.minutes);
18
- if (options.dryRun) {
19
- console.log(`Dry run: would mute thread ${threadId} for ${minutes} minutes`);
20
- return;
21
- }
22
- const client = await getTwistClient();
23
- const thread = await client.threads.getThread(threadId);
24
- await assertChannelIsPublic(thread.channelId, thread.workspaceId);
25
- const updated = await client.threads.muteThread({ id: threadId, minutes });
26
- if (options.json) {
27
- if (options.full) {
28
- console.log(formatJson(updated, 'thread', true));
29
- }
30
- else {
31
- console.log(formatJson({ id: updated.id, mutedUntil: updated.mutedUntil }));
32
- }
33
- return;
34
- }
35
- console.log(`Thread ${threadId} muted for ${minutes} minutes.`);
36
- }
37
- export async function unmuteThread(ref, options) {
38
- const threadId = resolveThreadId(ref);
39
- if (options.dryRun) {
40
- console.log(`Dry run: would unmute thread ${threadId}`);
41
- return;
42
- }
43
- const client = await getTwistClient();
44
- const thread = await client.threads.getThread(threadId);
45
- await assertChannelIsPublic(thread.channelId, thread.workspaceId);
46
- const updated = await client.threads.unmuteThread(threadId);
47
- if (options.json) {
48
- if (options.full) {
49
- console.log(formatJson(updated, 'thread', true));
50
- }
51
- else {
52
- console.log(formatJson({ id: updated.id, mutedUntil: updated.mutedUntil ?? null }));
53
- }
54
- return;
55
- }
56
- console.log(`Thread ${threadId} unmuted.`);
57
- }
58
- //# sourceMappingURL=mute.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mute.js","sourceRoot":"","sources":["../../../src/commands/thread/mute.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { MutationOptions } from '../../lib/options.js';
2
- type ReplyOptions = MutationOptions & {
3
- notify?: string;
4
- close?: boolean;
5
- reopen?: boolean;
6
- };
7
- export declare function replyToThread(ref: string, content: string | undefined, options: ReplyOptions): Promise<void>;
8
- export {};
9
- //# sourceMappingURL=reply.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reply.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/reply.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAK3D,KAAK,YAAY,GAAG,eAAe,GAAG;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,wBAAsB,aAAa,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,YAAY,GACtB,OAAO,CAAC,IAAI,CAAC,CAsEf"}
@@ -1,68 +0,0 @@
1
- import { getTwistClient } from '../../lib/api.js';
2
- import { openEditor, readStdin } from '../../lib/input.js';
3
- import { formatJson } from '../../lib/output.js';
4
- import { assertChannelIsPublic } from '../../lib/public-channels.js';
5
- import { parseUserIdRefs, resolveThreadId } from '../../lib/refs.js';
6
- export async function replyToThread(ref, content, options) {
7
- const threadId = resolveThreadId(ref);
8
- if (options.close && options.reopen) {
9
- console.error('Cannot use --close and --reopen together.');
10
- process.exit(1);
11
- }
12
- let replyContent = await readStdin();
13
- if (!replyContent && content) {
14
- replyContent = content;
15
- }
16
- if (!replyContent) {
17
- replyContent = await openEditor();
18
- }
19
- if (!replyContent || replyContent.trim() === '') {
20
- console.error('No content provided.');
21
- process.exit(1);
22
- }
23
- const notifyValue = options.notify ?? 'EVERYONE_IN_THREAD';
24
- let recipients;
25
- if (notifyValue === 'EVERYONE' || notifyValue === 'EVERYONE_IN_THREAD') {
26
- recipients = notifyValue;
27
- }
28
- else {
29
- recipients = parseUserIdRefs(notifyValue);
30
- }
31
- const action = options.close ? 'close' : options.reopen ? 'reopen' : undefined;
32
- const actionLabel = action === 'close' ? 'close' : action === 'reopen' ? 'reopen' : undefined;
33
- if (options.dryRun) {
34
- const actionSuffix = actionLabel ? ` and ${actionLabel} it` : '';
35
- console.log(`Dry run: would post comment to thread ${threadId}${actionSuffix}`);
36
- console.log(`Notify: ${Array.isArray(recipients) ? recipients.join(', ') : recipients}`);
37
- console.log('');
38
- console.log(replyContent);
39
- return;
40
- }
41
- const client = await getTwistClient();
42
- const thread = await client.threads.getThread(threadId);
43
- await assertChannelIsPublic(thread.channelId, thread.workspaceId);
44
- const comment = action === 'close'
45
- ? await client.threads.closeThread({
46
- id: threadId,
47
- content: replyContent,
48
- recipients,
49
- })
50
- : action === 'reopen'
51
- ? await client.threads.reopenThread({
52
- id: threadId,
53
- content: replyContent,
54
- recipients,
55
- })
56
- : await client.comments.createComment({
57
- threadId,
58
- content: replyContent,
59
- recipients,
60
- });
61
- if (options.json) {
62
- console.log(formatJson(comment, 'comment', options.full));
63
- return;
64
- }
65
- const suffix = actionLabel ? ` (thread ${actionLabel === 'close' ? 'closed' : 'reopened'})` : '';
66
- console.log(`Comment posted${suffix}: ${comment.url}`);
67
- }
68
- //# sourceMappingURL=reply.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reply.js","sourceRoot":"","sources":["../../../src/commands/thread/reply.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { PaginatedViewOptions } from '../../lib/options.js';
2
- type ViewOptions = PaginatedViewOptions & {
3
- comment?: string;
4
- unread?: boolean;
5
- context?: string;
6
- };
7
- export declare function viewThread(ref: string, options: ViewOptions): Promise<void>;
8
- export {};
9
- //# sourceMappingURL=view.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/view.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAMhE,KAAK,WAAW,GAAG,oBAAoB,GAAG;IACtC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AA6DD,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4KjF"}
@@ -1,175 +0,0 @@
1
- import chalk from 'chalk';
2
- import { assertBatchData, getTwistClient } from '../../lib/api.js';
3
- import { formatRelativeDate } from '../../lib/dates.js';
4
- import { renderMarkdown } from '../../lib/markdown.js';
5
- import { colors, formatJson } from '../../lib/output.js';
6
- import { assertChannelIsPublic } from '../../lib/public-channels.js';
7
- import { extractId, parseRef, resolveThreadId } from '../../lib/refs.js';
8
- import { pluralize, printComment, printSeparator } from './helpers.js';
9
- async function viewSingleComment(client, threadId, commentId, options) {
10
- const [threadResponse, commentResponse] = await client.batch(client.threads.getThread(threadId, { batch: true }), client.comments.getComment(commentId, { batch: true }));
11
- const thread = assertBatchData(threadResponse, 'thread');
12
- const comment = assertBatchData(commentResponse, `comment ${commentId}`);
13
- const userIds = new Set([thread.creator, comment.creator]);
14
- const userCalls = [...userIds].map((id) => client.workspaceUsers.getUserById({ workspaceId: thread.workspaceId, userId: id }, { batch: true }));
15
- const [channelResponse, ...userResponses] = await client.batch(client.channels.getChannel(thread.channelId, { batch: true }), ...userCalls);
16
- const channel = assertBatchData(channelResponse, 'channel');
17
- const userMap = new Map(userResponses.filter((r) => r.data != null).map((r) => [r.data.id, r.data.name]));
18
- if (options.json) {
19
- const output = {
20
- ...comment,
21
- creatorName: userMap.get(comment.creator),
22
- channelName: channel.name,
23
- threadTitle: thread.title,
24
- };
25
- console.log(formatJson(output, undefined, options.full));
26
- return;
27
- }
28
- if (options.ndjson) {
29
- console.log(JSON.stringify({
30
- type: 'comment',
31
- ...comment,
32
- creatorName: userMap.get(comment.creator),
33
- }));
34
- return;
35
- }
36
- console.log(chalk.bold(thread.title));
37
- console.log(colors.channel(`[${channel.name}]`));
38
- console.log('');
39
- printComment(comment, userMap, options.raw ?? false);
40
- }
41
- export async function viewThread(ref, options) {
42
- const parsed = parseRef(ref);
43
- const threadId = resolveThreadId(ref);
44
- const urlCommentId = parsed.type === 'url' ? parsed.parsed.commentId : undefined;
45
- let commentId;
46
- if (options.comment !== undefined) {
47
- commentId = extractId(options.comment);
48
- }
49
- else {
50
- commentId = urlCommentId;
51
- }
52
- const client = await getTwistClient();
53
- if (commentId !== undefined) {
54
- return viewSingleComment(client, threadId, commentId, options);
55
- }
56
- const limit = options.limit ? parseInt(options.limit, 10) : 50;
57
- const [threadResponse, commentsResponse] = await client.batch(client.threads.getThread(threadId, { batch: true }), client.comments.getComments({
58
- threadId,
59
- from: options.since ? new Date(options.since) : undefined,
60
- limit,
61
- }, { batch: true }));
62
- const thread = assertBatchData(threadResponse, 'thread');
63
- const comments = assertBatchData(commentsResponse, 'comments');
64
- await assertChannelIsPublic(thread.channelId, thread.workspaceId);
65
- // Resolve unread state and filter comments before any output
66
- let displayComments = comments;
67
- let contextComments = [];
68
- let lastReadObjIndex = 0;
69
- let hasUnread = false;
70
- if (options.unread) {
71
- const unreadData = await client.threads.getUnread(thread.workspaceId);
72
- const threadUnread = unreadData.find((u) => u.threadId === threadId);
73
- if (threadUnread) {
74
- lastReadObjIndex = threadUnread.objIndex;
75
- const contextSize = options.context ? parseInt(options.context, 10) : 0;
76
- displayComments = comments.filter((c) => (c.objIndex ?? 0) > lastReadObjIndex);
77
- contextComments = comments
78
- .filter((c) => (c.objIndex ?? 0) <= lastReadObjIndex)
79
- .sort((a, b) => (b.objIndex ?? 0) - (a.objIndex ?? 0))
80
- .slice(0, contextSize)
81
- .reverse();
82
- hasUnread = displayComments.length > 0;
83
- }
84
- else {
85
- displayComments = [];
86
- hasUnread = false;
87
- }
88
- }
89
- const userIds = new Set([
90
- thread.creator,
91
- ...displayComments.map((c) => c.creator),
92
- ...contextComments.map((c) => c.creator),
93
- ]);
94
- const userCalls = [...userIds].map((id) => client.workspaceUsers.getUserById({ workspaceId: thread.workspaceId, userId: id }, { batch: true }));
95
- const [channelResponse, ...userResponses] = await client.batch(client.channels.getChannel(thread.channelId, { batch: true }), ...userCalls);
96
- const channel = assertBatchData(channelResponse, 'channel');
97
- const userMap = new Map(userResponses.filter((r) => r.data != null).map((r) => [r.data.id, r.data.name]));
98
- if (options.json) {
99
- const output = {
100
- thread: {
101
- ...thread,
102
- channelName: channel.name,
103
- creatorName: userMap.get(thread.creator),
104
- },
105
- comments: displayComments.map((c) => ({
106
- ...c,
107
- creatorName: userMap.get(c.creator),
108
- })),
109
- };
110
- console.log(formatJson(output, undefined, options.full));
111
- return;
112
- }
113
- if (options.ndjson) {
114
- const threadOutput = {
115
- type: 'thread',
116
- ...thread,
117
- channelName: channel.name,
118
- creatorName: userMap.get(thread.creator),
119
- };
120
- console.log(JSON.stringify(threadOutput));
121
- for (const c of displayComments) {
122
- console.log(JSON.stringify({ type: 'comment', ...c, creatorName: userMap.get(c.creator) }));
123
- }
124
- return;
125
- }
126
- console.log(chalk.bold(thread.title));
127
- console.log(colors.channel(`[${channel.name}]`));
128
- console.log('');
129
- if (options.unread) {
130
- const creatorName = userMap.get(thread.creator) || `user:${thread.creator}`;
131
- console.log(`${colors.author(creatorName)} ${colors.timestamp(formatRelativeDate(thread.posted))} ${chalk.dim('(original post)')}`);
132
- console.log('');
133
- console.log(options.raw ? thread.content : renderMarkdown(thread.content));
134
- if (!hasUnread) {
135
- console.log('');
136
- console.log('No unread comments.');
137
- return;
138
- }
139
- if (contextComments.length > 0) {
140
- const firstContextIndex = contextComments[0].objIndex ?? 0;
141
- const skippedCount = firstContextIndex - 1;
142
- if (skippedCount > 0) {
143
- printSeparator(`${skippedCount} ${pluralize(skippedCount, 'comment')} skipped`);
144
- }
145
- else {
146
- console.log('');
147
- }
148
- for (const comment of contextComments) {
149
- printComment(comment, userMap, options.raw ?? false);
150
- }
151
- }
152
- else if (lastReadObjIndex > 0) {
153
- printSeparator(`${lastReadObjIndex} ${pluralize(lastReadObjIndex, 'comment')} skipped`);
154
- }
155
- printSeparator(`UNREAD (${displayComments.length} new)`);
156
- for (const comment of displayComments) {
157
- printComment(comment, userMap, options.raw ?? false);
158
- }
159
- }
160
- else {
161
- const creatorName = userMap.get(thread.creator) || `user:${thread.creator}`;
162
- console.log(`${colors.author(creatorName)} ${colors.timestamp(formatRelativeDate(thread.posted))}`);
163
- console.log('');
164
- console.log(options.raw ? thread.content : renderMarkdown(thread.content));
165
- console.log('');
166
- if (comments.length > 0) {
167
- console.log(chalk.dim(`--- ${comments.length} ${pluralize(comments.length, 'comment')} ---`));
168
- console.log('');
169
- for (const comment of comments) {
170
- printComment(comment, userMap, options.raw ?? false);
171
- }
172
- }
173
- }
174
- }
175
- //# sourceMappingURL=view.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/commands/thread/view.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function registerThreadCommand(program: Command): void;
3
- //# sourceMappingURL=thread.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../src/commands/thread.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAQ3C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2E5D"}
@@ -1,70 +0,0 @@
1
- import { Option } from 'commander';
2
- import { withUnvalidatedChoices } from '../lib/completion.js';
3
- import { createThread } from './thread/create.js';
4
- import { markThreadDone } from './thread/mutate.js';
5
- import { muteThread, unmuteThread } from './thread/mute.js';
6
- import { replyToThread } from './thread/reply.js';
7
- import { viewThread } from './thread/view.js';
8
- export function registerThreadCommand(program) {
9
- const thread = program.command('thread').description('Thread operations');
10
- thread
11
- .command('view [thread-ref]', { isDefault: true })
12
- .description('Display a thread with its comments')
13
- .option('--comment <id>', 'Show only a specific comment')
14
- .option('--unread', 'Show only unread comments (with original post for context)')
15
- .option('--context <n>', 'Include N read comments before unread (use with --unread)')
16
- .option('--limit <n>', 'Max comments to show (default: 50)')
17
- .option('--since <date>', 'Comments newer than')
18
- .option('--until <date>', 'Comments older than')
19
- .option('--raw', 'Show raw markdown instead of rendered')
20
- .option('--json', 'Output as JSON')
21
- .option('--ndjson', 'Output as newline-delimited JSON')
22
- .option('--full', 'Include all fields in JSON output')
23
- .action((ref, options) => {
24
- if (!ref) {
25
- thread.help();
26
- return;
27
- }
28
- return viewThread(ref, options);
29
- });
30
- thread
31
- .command('reply <thread-ref> [content]')
32
- .description('Post a comment to a thread')
33
- .addOption(withUnvalidatedChoices(new Option('--notify <recipients>', 'Notification recipients: EVERYONE, EVERYONE_IN_THREAD, or comma-separated user IDs (default: EVERYONE_IN_THREAD)'), ['EVERYONE', 'EVERYONE_IN_THREAD']))
34
- .option('--close', 'Close the thread after replying')
35
- .option('--reopen', 'Reopen the thread after replying')
36
- .option('--dry-run', 'Show what would be posted without posting')
37
- .option('--json', 'Output posted comment as JSON')
38
- .option('--full', 'Include all fields in JSON output')
39
- .action(replyToThread);
40
- thread
41
- .command('create <channel-ref> <title> [content]')
42
- .description('Create a new thread in a channel')
43
- .option('--notify <recipients>', 'Comma-separated user IDs to notify')
44
- .option('--dry-run', 'Show what would be posted without posting')
45
- .option('--json', 'Output created thread as JSON')
46
- .option('--full', 'Include all fields in JSON output')
47
- .action(createThread);
48
- thread
49
- .command('done <thread-ref>')
50
- .description('Archive a thread (mark as done)')
51
- .option('--dry-run', 'Show what would happen without executing')
52
- .option('--json', 'Output result as JSON')
53
- .action(markThreadDone);
54
- thread
55
- .command('mute <thread-ref>')
56
- .description('Mute a thread (stop inbox notifications)')
57
- .option('--minutes <n>', 'Number of minutes to mute (default: 60)')
58
- .option('--dry-run', 'Show what would happen without executing')
59
- .option('--json', 'Output result as JSON')
60
- .option('--full', 'Include all fields in JSON output')
61
- .action(muteThread);
62
- thread
63
- .command('unmute <thread-ref>')
64
- .description('Unmute a muted thread (restore inbox notifications)')
65
- .option('--dry-run', 'Show what would happen without executing')
66
- .option('--json', 'Output result as JSON')
67
- .option('--full', 'Include all fields in JSON output')
68
- .action(unmuteThread);
69
- }
70
- //# sourceMappingURL=thread.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"thread.js","sourceRoot":"","sources":["../../src/commands/thread.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare function fetchLatestVersion(): Promise<string>;
3
- export declare function detectPackageManager(): string;
4
- export declare function runInstall(pm: string): Promise<{
5
- exitCode: number;
6
- stderr: string;
7
- }>;
8
- interface UpdateOptions {
9
- check?: boolean;
10
- }
11
- export declare function updateAction(options: UpdateOptions): Promise<void>;
12
- export declare function registerUpdateCommand(program: Command): void;
13
- export {};
14
- //# sourceMappingURL=update.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOxC,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAO1D;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAM7C;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAepF;AAED,UAAU,aAAa;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DxE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAM5D"}