@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,458 +0,0 @@
1
- import chalk from 'chalk';
2
- import { getCurrentWorkspaceId, getSessionUser, getTwistClient } from '../lib/api.js';
3
- import { formatRelativeDate } from '../lib/dates.js';
4
- import { openEditor, readStdin } from '../lib/input.js';
5
- import { renderMarkdown } from '../lib/markdown.js';
6
- import { colors, filterEntityFields, formatJson, formatNdjson, isAccessible, } from '../lib/output.js';
7
- import { resolveConversationId, resolveUserRefs, resolveWorkspaceRef } from '../lib/refs.js';
8
- const CONVERSATION_PAGE_LIMIT = 100;
9
- function buildConversationTitle(conversation, userMap) {
10
- const participants = conversation.userIds
11
- .map((id) => userMap.get(id) || `user:${id}`)
12
- .join(', ');
13
- return conversation.title || `Conversation with ${participants}`;
14
- }
15
- function sortByLastActiveDescending(a, b) {
16
- return new Date(b.lastActive).getTime() - new Date(a.lastActive).getTime();
17
- }
18
- async function getAllConversations(workspaceId) {
19
- const [activeConversations, archivedConversations] = await Promise.all([
20
- getConversationPages({ workspaceId, limit: CONVERSATION_PAGE_LIMIT }),
21
- getConversationPages({ workspaceId, archived: true, limit: CONVERSATION_PAGE_LIMIT }),
22
- ]);
23
- const byId = new Map();
24
- for (const conversation of [...activeConversations, ...archivedConversations]) {
25
- byId.set(conversation.id, conversation);
26
- }
27
- return [...byId.values()].sort(sortByLastActiveDescending);
28
- }
29
- async function getConversationPages(initialArgs) {
30
- const client = await getTwistClient();
31
- const conversations = [];
32
- let beforeId = initialArgs.beforeId;
33
- while (true) {
34
- const pageArgs = {
35
- ...initialArgs,
36
- beforeId,
37
- };
38
- const page = await client.conversations.getConversations(pageArgs);
39
- if (page.length === 0) {
40
- break;
41
- }
42
- conversations.push(...page);
43
- if (page.length < initialArgs.limit) {
44
- break;
45
- }
46
- const nextBeforeId = page[page.length - 1]?.id;
47
- if (!nextBeforeId || nextBeforeId === beforeId) {
48
- break;
49
- }
50
- beforeId = nextBeforeId;
51
- }
52
- return conversations;
53
- }
54
- async function findDirectConversation(workspaceId, sessionUserId, targetUserId) {
55
- const client = await getTwistClient();
56
- let groupConversationCount = 0;
57
- for (const archived of [false, true]) {
58
- let beforeId;
59
- while (true) {
60
- const pageArgs = {
61
- workspaceId,
62
- archived: archived || undefined,
63
- limit: CONVERSATION_PAGE_LIMIT,
64
- beforeId,
65
- };
66
- const page = await client.conversations.getConversations(pageArgs);
67
- if (page.length === 0) {
68
- break;
69
- }
70
- for (const conversation of page) {
71
- if (!conversation.userIds.includes(targetUserId)) {
72
- continue;
73
- }
74
- const isSelfConversation = sessionUserId === targetUserId;
75
- const isDirect = isSelfConversation
76
- ? conversation.userIds.length === 1
77
- : conversation.userIds.length === 2 &&
78
- conversation.userIds.includes(sessionUserId);
79
- if (isDirect) {
80
- return { directConversation: conversation, groupConversationCount };
81
- }
82
- if (conversation.userIds.length > (isSelfConversation ? 1 : 2)) {
83
- groupConversationCount += 1;
84
- }
85
- }
86
- beforeId = page[page.length - 1]?.id;
87
- }
88
- }
89
- return { groupConversationCount };
90
- }
91
- async function listConversationsWithUser(conversations, workspaceId, options) {
92
- if (conversations.length === 0) {
93
- console.log('No matching conversations found.');
94
- return;
95
- }
96
- const client = await getTwistClient();
97
- const userIds = new Set();
98
- for (const conversation of conversations) {
99
- for (const userId of conversation.userIds) {
100
- userIds.add(userId);
101
- }
102
- }
103
- const userCalls = [...userIds].map((userId) => client.workspaceUsers.getUserById({ workspaceId, userId }, { batch: true }));
104
- const userResponses = await client.batch(...userCalls);
105
- const userMap = new Map(userResponses.map((response) => [response.data.id, response.data.name]));
106
- const output = conversations.map((conversation) => ({
107
- ...conversation,
108
- participantNames: conversation.userIds.map((id) => userMap.get(id)),
109
- }));
110
- if (options.json) {
111
- console.log(formatJson(output, 'conversation', options.full));
112
- return;
113
- }
114
- if (options.ndjson) {
115
- console.log(formatNdjson(output, 'conversation', options.full));
116
- return;
117
- }
118
- for (const conversation of conversations) {
119
- const participants = conversation.userIds
120
- .map((id) => userMap.get(id) || `user:${id}`)
121
- .join(', ');
122
- const title = buildConversationTitle(conversation, userMap);
123
- const archivedBadge = conversation.archived
124
- ? chalk.yellow(isAccessible() ? ' (archived)' : ' [archived]')
125
- : '';
126
- console.log(`${chalk.bold(title)}${archivedBadge}`);
127
- console.log(` ${colors.timestamp(`id:${conversation.id}`)} ${colors.author(participants)}`);
128
- if (options.snippet && conversation.snippet) {
129
- console.log(renderMarkdown(conversation.snippet));
130
- }
131
- console.log(` ${colors.timestamp(formatRelativeDate(conversation.lastActive))}`);
132
- console.log(` ${colors.url(conversation.url)}`);
133
- console.log('');
134
- }
135
- }
136
- async function showUnread(workspaceRef, options) {
137
- if (workspaceRef && options.workspace) {
138
- throw new Error('Cannot specify workspace both as argument and --workspace flag');
139
- }
140
- let workspaceId;
141
- const ref = workspaceRef || options.workspace;
142
- if (ref) {
143
- const workspace = await resolveWorkspaceRef(ref);
144
- workspaceId = workspace.id;
145
- }
146
- else {
147
- workspaceId = await getCurrentWorkspaceId();
148
- }
149
- const client = await getTwistClient();
150
- const unreadConversations = await client.conversations.getUnread(workspaceId);
151
- if (unreadConversations.length === 0) {
152
- console.log('No unread conversations.');
153
- return;
154
- }
155
- const conversationCalls = unreadConversations.map((uc) => client.conversations.getConversation(uc.conversationId, { batch: true }));
156
- const conversationResponses = await client.batch(...conversationCalls);
157
- const conversations = conversationResponses.map((r) => r.data);
158
- const userIds = new Set();
159
- for (const conv of conversations) {
160
- for (const id of conv.userIds) {
161
- userIds.add(id);
162
- }
163
- }
164
- const userCalls = [...userIds].map((id) => client.workspaceUsers.getUserById({ workspaceId, userId: id }, { batch: true }));
165
- const userResponses = await client.batch(...userCalls);
166
- const userMap = new Map(userResponses.map((r) => [r.data.id, r.data.name]));
167
- if (options.json) {
168
- const output = conversations.map((c) => ({
169
- ...c,
170
- participantNames: c.userIds.map((id) => userMap.get(id)),
171
- }));
172
- console.log(formatJson(output, 'conversation', options.full));
173
- return;
174
- }
175
- if (options.ndjson) {
176
- const output = conversations.map((c) => ({
177
- ...c,
178
- participantNames: c.userIds.map((id) => userMap.get(id)),
179
- }));
180
- console.log(formatNdjson(output, 'conversation', options.full));
181
- return;
182
- }
183
- for (const conv of conversations) {
184
- const participants = conv.userIds.map((id) => userMap.get(id) || `user:${id}`).join(', ');
185
- const title = conv.title || `Conversation with ${participants}`;
186
- const unreadInfo = unreadConversations.find((uc) => uc.conversationId === conv.id);
187
- const unreadBadge = unreadInfo ? chalk.blue(isAccessible() ? ' (unread)' : ' *') : '';
188
- console.log(`${chalk.bold(title)}${unreadBadge}`);
189
- console.log(` ${colors.timestamp(`id:${conv.id}`)} ${colors.author(participants)}`);
190
- console.log(` ${colors.url(conv.url)}`);
191
- console.log('');
192
- }
193
- }
194
- async function viewConversation(ref, options) {
195
- const conversationId = resolveConversationId(ref);
196
- const client = await getTwistClient();
197
- const limit = options.limit ? parseInt(options.limit, 10) : 50;
198
- const [convResponse, messagesResponse] = await client.batch(client.conversations.getConversation(conversationId, { batch: true }), client.conversationMessages.getMessages({
199
- conversationId,
200
- limit,
201
- }, { batch: true }));
202
- const conversation = convResponse.data;
203
- const messages = messagesResponse.data;
204
- const userIds = new Set([...conversation.userIds, ...messages.map((m) => m.creator)]);
205
- const userCalls = [...userIds].map((id) => client.workspaceUsers.getUserById({ workspaceId: conversation.workspaceId, userId: id }, { batch: true }));
206
- const userResponses = await client.batch(...userCalls);
207
- const userMap = new Map(userResponses.map((r) => [r.data.id, r.data.name]));
208
- const conversationOutput = {
209
- ...conversation,
210
- participantNames: conversation.userIds.map((id) => userMap.get(id)),
211
- };
212
- const messageOutput = messages.map((m) => ({
213
- ...m,
214
- creatorName: userMap.get(m.creator),
215
- }));
216
- if (options.json) {
217
- const output = {
218
- conversation: filterEntityFields(conversationOutput, 'conversation', options.full),
219
- messages: filterEntityFields(messageOutput, 'message', options.full),
220
- };
221
- console.log(JSON.stringify(output, null, 2));
222
- return;
223
- }
224
- if (options.ndjson) {
225
- console.log(JSON.stringify({
226
- type: 'conversation',
227
- ...filterEntityFields(conversationOutput, 'conversation', options.full),
228
- }));
229
- const formattedMessages = filterEntityFields(messageOutput, 'message', options.full);
230
- for (const message of formattedMessages) {
231
- console.log(JSON.stringify({ type: 'message', ...message }));
232
- }
233
- return;
234
- }
235
- const title = buildConversationTitle(conversation, userMap);
236
- console.log(chalk.bold(title));
237
- console.log(colors.timestamp(`id:${conversation.id}`));
238
- console.log('');
239
- if (messages.length === 0) {
240
- console.log('No messages.');
241
- return;
242
- }
243
- for (const message of messages) {
244
- const author = colors.author(userMap.get(message.creator) || `user:${message.creator}`);
245
- const time = colors.timestamp(formatRelativeDate(message.posted));
246
- console.log(`${author} ${time} ${colors.timestamp(`id:${message.id}`)}`);
247
- console.log(options.raw ? message.content : renderMarkdown(message.content));
248
- console.log('');
249
- }
250
- }
251
- async function replyToConversation(ref, content, options) {
252
- const conversationId = resolveConversationId(ref);
253
- let replyContent = await readStdin();
254
- if (!replyContent && content) {
255
- replyContent = content;
256
- }
257
- if (!replyContent) {
258
- replyContent = await openEditor();
259
- }
260
- if (!replyContent || replyContent.trim() === '') {
261
- console.error('No content provided.');
262
- process.exit(1);
263
- }
264
- if (options.dryRun) {
265
- console.log('Dry run: would send message to conversation', conversationId);
266
- console.log('');
267
- console.log(replyContent);
268
- return;
269
- }
270
- const client = await getTwistClient();
271
- const message = await client.conversationMessages.createMessage({
272
- conversationId,
273
- content: replyContent,
274
- });
275
- if (options.json) {
276
- console.log(formatJson(message, 'message', options.full));
277
- return;
278
- }
279
- console.log(`Message sent: ${message.url}`);
280
- }
281
- async function markConversationDone(ref, options) {
282
- const conversationId = resolveConversationId(ref);
283
- if (options.dryRun) {
284
- console.log(`Dry run: would archive conversation ${conversationId}`);
285
- return;
286
- }
287
- const client = await getTwistClient();
288
- await client.conversations.archiveConversation(conversationId);
289
- if (options.json) {
290
- console.log(formatJson({ id: conversationId, archived: true }));
291
- return;
292
- }
293
- console.log(`Conversation ${conversationId} archived.`);
294
- }
295
- async function findConversationWithUser(userRef, workspaceRef, options) {
296
- try {
297
- if (workspaceRef && options.workspace) {
298
- throw new Error('Cannot specify workspace both as argument and --workspace flag');
299
- }
300
- let workspaceId;
301
- const ref = workspaceRef || options.workspace;
302
- if (ref) {
303
- const workspace = await resolveWorkspaceRef(ref);
304
- workspaceId = workspace.id;
305
- }
306
- else {
307
- workspaceId = await getCurrentWorkspaceId();
308
- }
309
- const userIds = await resolveUserRefs(userRef, workspaceId);
310
- if (userIds.length !== 1) {
311
- throw new Error('Expected a single user reference');
312
- }
313
- const targetUserId = userIds[0];
314
- const client = await getTwistClient();
315
- const [sessionUser, targetUser] = await Promise.all([
316
- getSessionUser(),
317
- client.workspaceUsers.getUserById({ workspaceId, userId: targetUserId }),
318
- ]);
319
- if (options.includeGroups) {
320
- const conversations = await getAllConversations(workspaceId);
321
- const matchingConversations = conversations.filter((conversation) => conversation.userIds.includes(targetUser.id));
322
- await listConversationsWithUser(matchingConversations, workspaceId, options);
323
- return;
324
- }
325
- const { directConversation, groupConversationCount } = await findDirectConversation(workspaceId, sessionUser.id, targetUser.id);
326
- if (!directConversation) {
327
- const suggestion = groupConversationCount > 0
328
- ? ` Found ${groupConversationCount} group conversation${groupConversationCount === 1 ? '' : 's'} with ${targetUser.name}. Use --include-groups to list them.`
329
- : '';
330
- console.log(`No 1:1 conversation found with ${targetUser.name}.${suggestion}`);
331
- return;
332
- }
333
- await listConversationsWithUser([directConversation], workspaceId, options);
334
- }
335
- catch (error) {
336
- console.error(error.message);
337
- process.exit(1);
338
- }
339
- }
340
- function parseMinutes(value) {
341
- if (!value)
342
- return 60;
343
- const parsed = Number(value);
344
- if (!Number.isInteger(parsed) || parsed <= 0) {
345
- console.error(`Invalid --minutes value: ${value} (must be a positive integer)`);
346
- process.exit(1);
347
- }
348
- return parsed;
349
- }
350
- async function muteConversation(ref, options) {
351
- const conversationId = resolveConversationId(ref);
352
- const minutes = parseMinutes(options.minutes);
353
- if (options.dryRun) {
354
- console.log(`Dry run: would mute conversation ${conversationId} for ${minutes} minutes`);
355
- return;
356
- }
357
- const client = await getTwistClient();
358
- const updated = await client.conversations.muteConversation({ id: conversationId, minutes });
359
- if (options.json) {
360
- if (options.full) {
361
- console.log(formatJson(updated, 'conversation', true));
362
- }
363
- else {
364
- console.log(formatJson({ id: updated.id, mutedUntil: updated.mutedUntil }));
365
- }
366
- return;
367
- }
368
- console.log(`Conversation ${conversationId} muted for ${minutes} minutes.`);
369
- }
370
- async function unmuteConversation(ref, options) {
371
- const conversationId = resolveConversationId(ref);
372
- if (options.dryRun) {
373
- console.log(`Dry run: would unmute conversation ${conversationId}`);
374
- return;
375
- }
376
- const client = await getTwistClient();
377
- const updated = await client.conversations.unmuteConversation(conversationId);
378
- if (options.json) {
379
- if (options.full) {
380
- console.log(formatJson(updated, 'conversation', true));
381
- }
382
- else {
383
- console.log(formatJson({ id: updated.id, mutedUntil: updated.mutedUntil ?? null }));
384
- }
385
- return;
386
- }
387
- console.log(`Conversation ${conversationId} unmuted.`);
388
- }
389
- export function registerConversationCommand(program) {
390
- const conversation = program
391
- .command('conversation')
392
- .alias('convo')
393
- .description('Conversation (DM/group) operations');
394
- conversation
395
- .command('unread [workspace-ref]')
396
- .description('List unread conversations')
397
- .option('--workspace <ref>', 'Workspace ID or name')
398
- .option('--json', 'Output as JSON')
399
- .option('--ndjson', 'Output as newline-delimited JSON')
400
- .option('--full', 'Include all fields in JSON output')
401
- .action(showUnread);
402
- conversation
403
- .command('view [conversation-ref]', { isDefault: true })
404
- .description('Display a conversation with its messages')
405
- .option('--limit <n>', 'Max messages to show (default: 50)')
406
- .option('--since <date>', 'Messages newer than')
407
- .option('--until <date>', 'Messages older than')
408
- .option('--raw', 'Show raw markdown instead of rendered')
409
- .option('--json', 'Output as JSON')
410
- .option('--ndjson', 'Output as newline-delimited JSON')
411
- .option('--full', 'Include all fields in JSON output')
412
- .action((ref, options) => {
413
- if (!ref) {
414
- conversation.help();
415
- return;
416
- }
417
- return viewConversation(ref, options);
418
- });
419
- conversation
420
- .command('with <user-ref> [workspace-ref]')
421
- .description('Find your 1:1 conversation with a user')
422
- .option('--workspace <ref>', 'Workspace ID or name')
423
- .option('--include-groups', 'List any conversation that includes this user')
424
- .option('--snippet', 'Include the latest message snippet in text output')
425
- .option('--json', 'Output as JSON')
426
- .option('--ndjson', 'Output as newline-delimited JSON')
427
- .option('--full', 'Include all fields in JSON output')
428
- .action(findConversationWithUser);
429
- conversation
430
- .command('reply <conversation-ref> [content]')
431
- .description('Send a message in a conversation')
432
- .option('--dry-run', 'Show what would be sent without sending')
433
- .option('--json', 'Output sent message as JSON')
434
- .option('--full', 'Include all fields in JSON output')
435
- .action(replyToConversation);
436
- conversation
437
- .command('done <conversation-ref>')
438
- .description('Archive a conversation')
439
- .option('--dry-run', 'Show what would happen without executing')
440
- .option('--json', 'Output result as JSON')
441
- .action(markConversationDone);
442
- conversation
443
- .command('mute <conversation-ref>')
444
- .description('Mute a conversation (stop notifications)')
445
- .option('--minutes <n>', 'Number of minutes to mute (default: 60)')
446
- .option('--dry-run', 'Show what would happen without executing')
447
- .option('--json', 'Output result as JSON')
448
- .option('--full', 'Include all fields in JSON output')
449
- .action(muteConversation);
450
- conversation
451
- .command('unmute <conversation-ref>')
452
- .description('Unmute a muted conversation (restore notifications)')
453
- .option('--dry-run', 'Show what would happen without executing')
454
- .option('--json', 'Output result as JSON')
455
- .option('--full', 'Include all fields in JSON output')
456
- .action(unmuteConversation);
457
- }
458
- //# sourceMappingURL=conversation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../src/commands/conversation.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function registerInboxCommand(program: Command): void;
3
- //# sourceMappingURL=inbox.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAmJnC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAc3D"}
@@ -1,127 +0,0 @@
1
- import chalk from 'chalk';
2
- import { getCurrentWorkspaceId, getTwistClient } from '../lib/api.js';
3
- import { formatRelativeDate } from '../lib/dates.js';
4
- import { colors, formatJson, formatNdjson, isAccessible } from '../lib/output.js';
5
- import { getPublicChannelIds, includePrivateChannels } from '../lib/public-channels.js';
6
- import { resolveWorkspaceRef } from '../lib/refs.js';
7
- async function showInbox(workspaceRef, options) {
8
- if (workspaceRef && options.workspace) {
9
- throw new Error('Cannot specify workspace both as argument and --workspace flag');
10
- }
11
- let workspaceId;
12
- const ref = workspaceRef || options.workspace;
13
- if (ref) {
14
- const workspace = await resolveWorkspaceRef(ref);
15
- workspaceId = workspace.id;
16
- }
17
- else {
18
- workspaceId = await getCurrentWorkspaceId();
19
- }
20
- const client = await getTwistClient();
21
- const limit = options.limit ? parseInt(options.limit, 10) : 50;
22
- const [threads, unreadData] = await client.batch(client.inbox.getInbox({
23
- workspaceId,
24
- since: options.since ? new Date(options.since) : undefined,
25
- until: options.until ? new Date(options.until) : undefined,
26
- limit,
27
- }, { batch: true }), client.threads.getUnread(workspaceId, { batch: true }));
28
- const unreadThreadIds = new Set(unreadData.data.map((u) => u.threadId));
29
- let inboxThreads = threads.data.map((t) => ({
30
- ...t,
31
- isUnread: unreadThreadIds.has(t.id),
32
- }));
33
- if (options.unread) {
34
- inboxThreads = inboxThreads.filter((t) => t.isUnread);
35
- }
36
- if (inboxThreads.length === 0) {
37
- console.log('No threads in inbox.');
38
- return;
39
- }
40
- const channelIds = [...new Set(inboxThreads.map((t) => t.channelId))];
41
- const channelCalls = channelIds.map((id) => client.channels.getChannel(id, { batch: true }));
42
- const channelResponses = await client.batch(...channelCalls);
43
- const channelMap = new Map(channelResponses.map((r) => [r.data.id, r.data.name]));
44
- if (!includePrivateChannels()) {
45
- const publicIds = await getPublicChannelIds(workspaceId);
46
- inboxThreads = inboxThreads.filter((t) => publicIds.has(t.channelId));
47
- if (inboxThreads.length === 0) {
48
- console.log('No threads in public channels.');
49
- return;
50
- }
51
- }
52
- if (options.channel) {
53
- const filter = options.channel.toLowerCase();
54
- const matchingChannelIds = new Set([...channelMap.entries()]
55
- .filter(([, name]) => name.toLowerCase().includes(filter))
56
- .map(([id]) => id));
57
- inboxThreads = inboxThreads.filter((t) => matchingChannelIds.has(t.channelId));
58
- if (inboxThreads.length === 0) {
59
- console.log(`No threads in channels matching "${options.channel}".`);
60
- return;
61
- }
62
- }
63
- // Group by channel, unreads first within each channel, then sort by date (newest first)
64
- const groupedByChannel = new Map();
65
- for (const thread of inboxThreads) {
66
- const group = groupedByChannel.get(thread.channelId) || [];
67
- group.push(thread);
68
- groupedByChannel.set(thread.channelId, group);
69
- }
70
- const sortByDate = (a, b) => new Date(b.posted).getTime() - new Date(a.posted).getTime();
71
- const sortedChannelGroups = [];
72
- for (const [, threads] of groupedByChannel) {
73
- const unreads = threads.filter((t) => t.isUnread).sort(sortByDate);
74
- const reads = threads.filter((t) => !t.isUnread).sort(sortByDate);
75
- sortedChannelGroups.push(...unreads, ...reads);
76
- }
77
- if (options.json) {
78
- const output = sortedChannelGroups.map((t) => ({
79
- ...t,
80
- channelName: channelMap.get(t.channelId),
81
- }));
82
- console.log(formatJson(output, 'thread', options.full));
83
- return;
84
- }
85
- if (options.ndjson) {
86
- const output = sortedChannelGroups.map((t) => ({
87
- ...t,
88
- channelName: channelMap.get(t.channelId),
89
- }));
90
- console.log(formatNdjson(output, 'thread', options.full));
91
- return;
92
- }
93
- let currentChannelId = null;
94
- for (const thread of sortedChannelGroups) {
95
- if (thread.channelId !== currentChannelId) {
96
- const channelName = channelMap.get(thread.channelId) || `ch:${thread.channelId}`;
97
- if (currentChannelId !== null)
98
- console.log('');
99
- console.log(chalk.bold.blue(`[${channelName}]`));
100
- console.log('');
101
- currentChannelId = thread.channelId;
102
- }
103
- const title = thread.isUnread ? chalk.bold(thread.title) : thread.title;
104
- const time = colors.timestamp(formatRelativeDate(thread.posted));
105
- const unreadBadge = thread.isUnread ? chalk.blue(isAccessible() ? ' (unread)' : ' *') : '';
106
- console.log(` ${title}${unreadBadge}`);
107
- console.log(` ${time} ${colors.timestamp(`id:${thread.id}`)}`);
108
- console.log(` ${colors.url(thread.url)}`);
109
- console.log('');
110
- }
111
- }
112
- export function registerInboxCommand(program) {
113
- program
114
- .command('inbox [workspace-ref]')
115
- .description('Show inbox threads')
116
- .option('--workspace <ref>', 'Workspace ID or name')
117
- .option('--channel <filter>', 'Filter by channel name (fuzzy match)')
118
- .option('--unread', 'Only show unread threads')
119
- .option('--since <date>', 'Filter by date (ISO format)')
120
- .option('--until <date>', 'Filter by date')
121
- .option('--limit <n>', 'Max items (default: 50)')
122
- .option('--json', 'Output as JSON')
123
- .option('--ndjson', 'Output as newline-delimited JSON')
124
- .option('--full', 'Include all fields in JSON output')
125
- .action(showInbox);
126
- }
127
- //# sourceMappingURL=inbox.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function registerMsgCommand(program: Command): void;
3
- //# sourceMappingURL=msg.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"msg.d.ts","sourceRoot":"","sources":["../../src/commands/msg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAsGnC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgCzD"}