@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,103 +0,0 @@
1
- import { getTwistClient } from '../lib/api.js';
2
- import { formatRelativeDate } from '../lib/dates.js';
3
- import { openEditor, readStdin } from '../lib/input.js';
4
- import { renderMarkdown } from '../lib/markdown.js';
5
- import { colors, formatJson, formatNdjson } from '../lib/output.js';
6
- import { resolveMessageId } from '../lib/refs.js';
7
- async function viewMessage(ref, options) {
8
- const messageId = resolveMessageId(ref);
9
- const client = await getTwistClient();
10
- const message = await client.conversationMessages.getMessage(messageId);
11
- const userResponse = await client.workspaceUsers.getUserById({ workspaceId: message.workspaceId, userId: message.creator }, { batch: false });
12
- const creatorName = userResponse.name;
13
- if (options.json) {
14
- const output = { ...message, creatorName };
15
- console.log(formatJson(output, options.full ? undefined : 'message', options.full));
16
- return;
17
- }
18
- if (options.ndjson) {
19
- const output = { ...message, creatorName };
20
- console.log(formatNdjson([output], options.full ? undefined : 'message', options.full));
21
- return;
22
- }
23
- const author = colors.author(creatorName);
24
- const time = colors.timestamp(formatRelativeDate(message.posted));
25
- console.log(`${author} ${time} ${colors.timestamp(`id:${message.id}`)}`);
26
- console.log(options.raw ? message.content : renderMarkdown(message.content));
27
- console.log('');
28
- }
29
- async function updateMessage(ref, content, options) {
30
- const messageId = resolveMessageId(ref);
31
- let newContent = await readStdin();
32
- if (!newContent && content) {
33
- newContent = content;
34
- }
35
- if (!newContent) {
36
- newContent = await openEditor();
37
- }
38
- if (!newContent || newContent.trim() === '') {
39
- console.error('No content provided.');
40
- process.exit(1);
41
- }
42
- if (options.dryRun) {
43
- console.log(`Dry run: would update message ${messageId}`);
44
- console.log('');
45
- console.log(newContent);
46
- return;
47
- }
48
- const client = await getTwistClient();
49
- const message = await client.conversationMessages.updateMessage({
50
- id: messageId,
51
- content: newContent,
52
- });
53
- if (options.json) {
54
- console.log(formatJson(message, 'message', options.full));
55
- return;
56
- }
57
- console.log(`Message updated: ${message.url}`);
58
- }
59
- async function deleteMessage(ref, options) {
60
- const messageId = resolveMessageId(ref);
61
- if (options.dryRun) {
62
- console.log(`Dry run: would delete message ${messageId}`);
63
- return;
64
- }
65
- const client = await getTwistClient();
66
- await client.conversationMessages.deleteMessage(messageId);
67
- if (options.json) {
68
- console.log(formatJson({ id: messageId, deleted: true }));
69
- return;
70
- }
71
- console.log(`Message ${messageId} deleted.`);
72
- }
73
- export function registerMsgCommand(program) {
74
- const msg = program
75
- .command('msg')
76
- .alias('message')
77
- .description('Conversation message operations (view, update, delete)');
78
- msg.command('view [message-ref]', { isDefault: true })
79
- .description('View a single conversation message')
80
- .option('--raw', 'Show raw markdown instead of rendered')
81
- .option('--json', 'Output as JSON')
82
- .option('--ndjson', 'Output as newline-delimited JSON')
83
- .option('--full', 'Include all fields in JSON output')
84
- .action((ref, options) => {
85
- if (!ref) {
86
- msg.help();
87
- return;
88
- }
89
- return viewMessage(ref, options);
90
- });
91
- msg.command('update <message-ref> [content]')
92
- .description('Edit a conversation message')
93
- .option('--dry-run', 'Show what would be updated without updating')
94
- .option('--json', 'Output updated message as JSON')
95
- .option('--full', 'Include all fields in JSON output')
96
- .action(updateMessage);
97
- msg.command('delete <message-ref>')
98
- .description('Delete a conversation message')
99
- .option('--dry-run', 'Show what would happen without executing')
100
- .option('--json', 'Output result as JSON')
101
- .action(deleteMessage);
102
- }
103
- //# sourceMappingURL=msg.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"msg.js","sourceRoot":"","sources":["../../src/commands/msg.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function registerReactCommand(program: Command): void;
3
- //# sourceMappingURL=react.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/commands/react.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA2GnC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4B3D"}
@@ -1,102 +0,0 @@
1
- import { getTwistClient } from '../lib/api.js';
2
- import { resolveCommentId, resolveMessageId, resolveThreadId } from '../lib/refs.js';
3
- function resolveTargetId(targetType, targetRef) {
4
- if (targetType === 'thread') {
5
- return resolveThreadId(targetRef);
6
- }
7
- if (targetType === 'comment') {
8
- return resolveCommentId(targetRef);
9
- }
10
- return resolveMessageId(targetRef);
11
- }
12
- function normalizeEmoji(emoji) {
13
- const shortcodeMap = {
14
- '+1': '👍',
15
- '-1': '👎',
16
- heart: '❤️',
17
- tada: '🎉',
18
- smile: '😊',
19
- laughing: '😂',
20
- thinking: '🤔',
21
- fire: '🔥',
22
- check: '✅',
23
- x: '❌',
24
- eyes: '👀',
25
- pray: '🙏',
26
- clap: '👏',
27
- rocket: '🚀',
28
- wave: '👋',
29
- };
30
- return shortcodeMap[emoji.toLowerCase()] || emoji;
31
- }
32
- async function addReaction(targetType, targetRef, emoji, options) {
33
- const targetId = resolveTargetId(targetType, targetRef);
34
- const normalizedEmoji = normalizeEmoji(emoji);
35
- if (options.dryRun) {
36
- console.log(`Dry run: would add ${normalizedEmoji} to ${targetType} ${targetId}`);
37
- return;
38
- }
39
- const client = await getTwistClient();
40
- const params = {
41
- reaction: normalizedEmoji,
42
- };
43
- if (targetType === 'thread') {
44
- params.threadId = targetId;
45
- }
46
- else if (targetType === 'comment') {
47
- params.commentId = targetId;
48
- }
49
- else {
50
- params.messageId = targetId;
51
- }
52
- await client.reactions.add(params);
53
- console.log(`Added ${normalizedEmoji} to ${targetType} ${targetId}`);
54
- }
55
- async function removeReaction(targetType, targetRef, emoji, options) {
56
- const targetId = resolveTargetId(targetType, targetRef);
57
- const normalizedEmoji = normalizeEmoji(emoji);
58
- if (options.dryRun) {
59
- console.log(`Dry run: would remove ${normalizedEmoji} from ${targetType} ${targetId}`);
60
- return;
61
- }
62
- const client = await getTwistClient();
63
- const params = {
64
- reaction: normalizedEmoji,
65
- };
66
- if (targetType === 'thread') {
67
- params.threadId = targetId;
68
- }
69
- else if (targetType === 'comment') {
70
- params.commentId = targetId;
71
- }
72
- else {
73
- params.messageId = targetId;
74
- }
75
- await client.reactions.remove(params);
76
- console.log(`Removed ${normalizedEmoji} from ${targetType} ${targetId}`);
77
- }
78
- export function registerReactCommand(program) {
79
- program
80
- .command('react <target-type> <target-ref> <emoji>')
81
- .description('Add an emoji reaction (target-type: thread, comment, message)')
82
- .option('--dry-run', 'Show what would happen without executing')
83
- .action((targetType, targetRef, emoji, options) => {
84
- if (!['thread', 'comment', 'message'].includes(targetType)) {
85
- console.error(`Invalid target type: ${targetType}. Use: thread, comment, or message`);
86
- process.exit(1);
87
- }
88
- return addReaction(targetType, targetRef, emoji, options);
89
- });
90
- program
91
- .command('unreact <target-type> <target-ref> <emoji>')
92
- .description('Remove an emoji reaction (target-type: thread, comment, message)')
93
- .option('--dry-run', 'Show what would happen without executing')
94
- .action((targetType, targetRef, emoji, options) => {
95
- if (!['thread', 'comment', 'message'].includes(targetType)) {
96
- console.error(`Invalid target type: ${targetType}. Use: thread, comment, or message`);
97
- process.exit(1);
98
- }
99
- return removeReaction(targetType, targetRef, emoji, options);
100
- });
101
- }
102
- //# sourceMappingURL=react.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/commands/react.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function registerSearchCommand(program: Command): void;
3
- //# sourceMappingURL=search.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAsM3C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyB5D"}
@@ -1,160 +0,0 @@
1
- import { getFullTwistURL } from '@doist/twist-sdk';
2
- import { Option } from 'commander';
3
- import { getCurrentWorkspaceId } from '../lib/api.js';
4
- import { withCaseInsensitiveChoices } from '../lib/completion.js';
5
- import { formatRelativeDate } from '../lib/dates.js';
6
- import { colors, formatJson } from '../lib/output.js';
7
- import { getPublicChannelIds, includePrivateChannels } from '../lib/public-channels.js';
8
- import { resolveChannelId, resolveConversationId, resolveUserRefs, resolveWorkspaceRef, } from '../lib/refs.js';
9
- import { extendedSearch } from '../lib/search-api.js';
10
- async function resolveUserRefsOrExit(refs, workspaceId) {
11
- if (!refs)
12
- return undefined;
13
- try {
14
- return await resolveUserRefs(refs, workspaceId);
15
- }
16
- catch (e) {
17
- console.error(e.message);
18
- process.exit(1);
19
- }
20
- }
21
- function resolveNumericRefsOrExit(refs, entityType, resolver) {
22
- if (!refs)
23
- return undefined;
24
- try {
25
- return refs.split(',').map((raw) => {
26
- const ref = raw.trim();
27
- if (!ref) {
28
- throw new Error(`Invalid ${entityType} reference list: found empty value`);
29
- }
30
- return resolver(ref);
31
- });
32
- }
33
- catch (e) {
34
- console.error(e.message);
35
- process.exit(1);
36
- }
37
- }
38
- async function search(query, workspaceRef, options) {
39
- if (workspaceRef && options.workspace) {
40
- throw new Error('Cannot specify workspace both as argument and --workspace flag');
41
- }
42
- let workspaceId;
43
- const ref = workspaceRef || options.workspace;
44
- if (ref) {
45
- const workspace = await resolveWorkspaceRef(ref);
46
- workspaceId = workspace.id;
47
- }
48
- else {
49
- workspaceId = await getCurrentWorkspaceId();
50
- }
51
- const limit = options.limit ? parseInt(options.limit, 10) : 50;
52
- const channelIds = resolveNumericRefsOrExit(options.channel, 'channel', resolveChannelId);
53
- const authorIds = await resolveUserRefsOrExit(options.author, workspaceId);
54
- const toUserIds = await resolveUserRefsOrExit(options.to, workspaceId);
55
- const conversationIds = resolveNumericRefsOrExit(options.conversation, 'conversation', resolveConversationId);
56
- const response = await extendedSearch({
57
- workspaceId,
58
- query: options.titleOnly ? undefined : query,
59
- title: options.titleOnly ? query : undefined,
60
- type: options.type,
61
- channelIds,
62
- conversationIds,
63
- authorIds,
64
- toUserIds,
65
- mentionSelf: options.mentionMe,
66
- dateFrom: options.since,
67
- dateTo: options.until,
68
- limit,
69
- cursor: options.cursor,
70
- });
71
- if (!includePrivateChannels()) {
72
- const publicIds = await getPublicChannelIds(workspaceId);
73
- response.items = response.items.filter((item) => !item.channelId || publicIds.has(item.channelId));
74
- }
75
- if (response.items.length === 0) {
76
- if (response.hasMore && response.nextCursorMark) {
77
- console.log('No public results on this page.');
78
- console.log(colors.timestamp(`More results available. Use --cursor ${response.nextCursorMark}`));
79
- }
80
- else {
81
- console.log('No results found.');
82
- }
83
- return;
84
- }
85
- if (options.json) {
86
- const output = {
87
- results: response.items.map((r) => ({
88
- ...r,
89
- url: buildSearchResultUrl(workspaceId, r),
90
- })),
91
- nextCursor: response.nextCursorMark || null,
92
- };
93
- console.log(formatJson(output, undefined, options.full));
94
- return;
95
- }
96
- if (options.ndjson) {
97
- for (const r of response.items) {
98
- console.log(JSON.stringify({ ...r, url: buildSearchResultUrl(workspaceId, r) }));
99
- }
100
- if (response.nextCursorMark) {
101
- console.log(JSON.stringify({ _meta: true, nextCursor: response.nextCursorMark }));
102
- }
103
- return;
104
- }
105
- for (const result of response.items) {
106
- const type = colors.channel(`[${result.type}]`);
107
- const title = result.title || result.snippet.slice(0, 50);
108
- const time = colors.timestamp(formatRelativeDate(result.snippetLastUpdated));
109
- console.log(`${type} ${title}`);
110
- console.log(` ${colors.timestamp(result.snippet.slice(0, 100))}`);
111
- console.log(` ${time} ${colors.url(buildSearchResultUrl(workspaceId, result))}`);
112
- console.log('');
113
- }
114
- if (response.hasMore) {
115
- console.log(colors.timestamp(`More results available. Use --cursor ${response.nextCursorMark}`));
116
- }
117
- }
118
- function buildSearchResultUrl(workspaceId, result) {
119
- if (result.type === 'thread' && result.threadId && result.channelId) {
120
- return getFullTwistURL({
121
- workspaceId,
122
- channelId: result.channelId,
123
- threadId: result.threadId,
124
- });
125
- }
126
- if (result.type === 'comment' && result.threadId && result.channelId && result.commentId) {
127
- return getFullTwistURL({
128
- workspaceId,
129
- channelId: result.channelId,
130
- threadId: result.threadId,
131
- commentId: result.commentId,
132
- });
133
- }
134
- if (result.type === 'message' && result.conversationId) {
135
- return getFullTwistURL({ workspaceId, conversationId: result.conversationId });
136
- }
137
- return `https://twist.com/a/${workspaceId}`;
138
- }
139
- export function registerSearchCommand(program) {
140
- program
141
- .command('search <query> [workspace-ref]')
142
- .description('Search content across a workspace')
143
- .option('--workspace <ref>', 'Workspace ID or name')
144
- .option('--channel <channel-refs>', 'Filter by channels (comma-separated refs)')
145
- .option('--author <user-refs>', 'Filter by author (comma-separated IDs)')
146
- .option('--to <user-refs>', 'Messages sent TO user (comma-separated IDs)')
147
- .addOption(withCaseInsensitiveChoices(new Option('--type <type>', 'Filter: threads, messages, or all'), ['threads', 'messages', 'all']))
148
- .option('--title-only', 'Search in thread titles only')
149
- .option('--conversation <refs>', 'Limit to conversations (comma-separated refs)')
150
- .option('--mention-me', 'Only results mentioning current user')
151
- .option('--since <date>', 'Content from date')
152
- .option('--until <date>', 'Content until date')
153
- .option('--limit <n>', 'Max results (default: 50)')
154
- .option('--cursor <cursor>', 'Pagination cursor')
155
- .option('--json', 'Output as JSON')
156
- .option('--ndjson', 'Output as newline-delimited JSON')
157
- .option('--full', 'Include all fields in JSON output')
158
- .action(search);
159
- }
160
- //# sourceMappingURL=search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function registerSkillCommand(program: Command): void;
3
- //# sourceMappingURL=skill.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAkHnC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6B3D"}
@@ -1,119 +0,0 @@
1
- import chalk from 'chalk';
2
- import { getInstaller, listAgents } from '../lib/skills/index.js';
3
- import { updateAllInstalledSkills } from '../lib/skills/update-installed.js';
4
- async function list(options) {
5
- const agents = await listAgents(options.local ?? false);
6
- if (agents.length === 0) {
7
- console.log('No agents available.');
8
- return;
9
- }
10
- const location = options.local ? 'local' : 'global';
11
- console.log(chalk.bold(`Available agents (${location}):`));
12
- console.log('');
13
- for (const agent of agents) {
14
- const status = agent.installed ? chalk.green('✓ installed') : chalk.dim('not installed');
15
- console.log(` ${chalk.bold(agent.name)} ${status}`);
16
- console.log(` ${agent.description}`);
17
- if (agent.path) {
18
- console.log(` ${chalk.dim(agent.path)}`);
19
- }
20
- console.log('');
21
- }
22
- }
23
- async function install(agentName, options) {
24
- const installer = getInstaller(agentName);
25
- if (!installer) {
26
- console.error(`Unknown agent: ${agentName}`);
27
- console.error('Run `tw skill list` to see available agents.');
28
- process.exit(1);
29
- }
30
- try {
31
- await installer.install(options);
32
- const location = options.local ? 'locally' : 'globally';
33
- console.log(chalk.green('✓'), `Installed ${agentName} ${location}`);
34
- console.log(chalk.dim(` ${installer.getInstallPath(options)}`));
35
- }
36
- catch (err) {
37
- console.error(err.message);
38
- process.exit(1);
39
- }
40
- }
41
- async function uninstall(agentName, options) {
42
- const installer = getInstaller(agentName);
43
- if (!installer) {
44
- console.error(`Unknown agent: ${agentName}`);
45
- process.exit(1);
46
- }
47
- try {
48
- await installer.uninstall(options);
49
- const location = options.local ? 'locally' : 'globally';
50
- console.log(chalk.green('✓'), `Uninstalled ${agentName} ${location}`);
51
- }
52
- catch (err) {
53
- console.error(err.message);
54
- process.exit(1);
55
- }
56
- }
57
- async function updateSkill(agentName, options) {
58
- if (agentName === 'all') {
59
- const result = await updateAllInstalledSkills(options);
60
- const location = options.local ? 'locally' : 'globally';
61
- for (const name of result.updated) {
62
- console.log(chalk.green('✓'), `Updated ${name} ${location}`);
63
- }
64
- for (const name of result.skipped) {
65
- console.log(chalk.dim(` Skipped ${name} (not installed)`));
66
- }
67
- for (const err of result.errors) {
68
- console.error(chalk.red('✗'), err);
69
- }
70
- if (result.updated.length === 0 && result.errors.length === 0) {
71
- console.log('No skills are currently installed.');
72
- }
73
- if (result.errors.length > 0) {
74
- process.exit(1);
75
- }
76
- return;
77
- }
78
- const installer = getInstaller(agentName);
79
- if (!installer) {
80
- console.error(`Unknown agent: ${agentName}`);
81
- console.error('Run `tw skill list` to see available agents.');
82
- process.exit(1);
83
- }
84
- try {
85
- await installer.update(options);
86
- const location = options.local ? 'locally' : 'globally';
87
- console.log(chalk.green('✓'), `Updated ${agentName} ${location}`);
88
- console.log(chalk.dim(` ${installer.getInstallPath(options)}`));
89
- }
90
- catch (err) {
91
- console.error(err.message);
92
- process.exit(1);
93
- }
94
- }
95
- export function registerSkillCommand(program) {
96
- const skill = program.command('skill').description('Manage agent skill integrations');
97
- skill
98
- .command('list')
99
- .description('List available agents and install status')
100
- .option('--local', 'Check local installation (./.claude/skills/)')
101
- .action(list);
102
- skill
103
- .command('install <agent>')
104
- .description('Install an agent skill')
105
- .option('--local', 'Install locally in project (./.claude/skills/)')
106
- .option('--force', 'Overwrite existing installation')
107
- .action(install);
108
- skill
109
- .command('update [agent]')
110
- .description('Update an installed agent skill (defaults to all)')
111
- .option('--local', 'Update local installation')
112
- .action((agent, options) => updateSkill(agent ?? 'all', options));
113
- skill
114
- .command('uninstall <agent>')
115
- .description('Uninstall an agent skill')
116
- .option('--local', 'Uninstall from local project')
117
- .action(uninstall);
118
- }
119
- //# sourceMappingURL=skill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { MutationOptions } from '../../lib/options.js';
2
- type CreateOptions = MutationOptions & {
3
- notify?: string;
4
- };
5
- export declare function createThread(channelRef: string, title: string, content: string | undefined, options: CreateOptions): Promise<void>;
6
- export {};
7
- //# sourceMappingURL=create.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/create.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAK3D,KAAK,aAAa,GAAG,eAAe,GAAG;IACnC,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,wBAAsB,YAAY,CAC9B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,aAAa,GACvB,OAAO,CAAC,IAAI,CAAC,CA4Cf"}
@@ -1,45 +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, resolveChannelId } from '../../lib/refs.js';
6
- export async function createThread(channelRef, title, content, options) {
7
- const channelId = resolveChannelId(channelRef);
8
- let threadContent = await readStdin();
9
- if (!threadContent && content) {
10
- threadContent = content;
11
- }
12
- if (!threadContent) {
13
- threadContent = await openEditor();
14
- }
15
- if (!threadContent || threadContent.trim() === '') {
16
- console.error('No content provided.');
17
- process.exit(1);
18
- }
19
- const recipients = options.notify ? parseUserIdRefs(options.notify) : undefined;
20
- if (options.dryRun) {
21
- console.log('Dry run: would create thread in channel', channelId);
22
- console.log(`Title: ${title}`);
23
- if (recipients) {
24
- console.log(`Notify: ${recipients.join(', ')}`);
25
- }
26
- console.log('');
27
- console.log(threadContent);
28
- return;
29
- }
30
- const client = await getTwistClient();
31
- const channel = await client.channels.getChannel(channelId);
32
- await assertChannelIsPublic(channelId, channel.workspaceId);
33
- const thread = await client.threads.createThread({
34
- channelId,
35
- title,
36
- content: threadContent,
37
- recipients,
38
- });
39
- if (options.json) {
40
- console.log(formatJson(thread, 'thread', options.full));
41
- return;
42
- }
43
- console.log(`Thread created: ${thread.url}`);
44
- }
45
- //# sourceMappingURL=create.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/thread/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAMrE,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,UAAkB,EAClB,KAAa,EACb,OAA2B,EAC3B,OAAsB;IAEtB,MAAM,SAAS,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAA;IAE9C,IAAI,aAAa,GAAG,MAAM,SAAS,EAAE,CAAA;IACrC,IAAI,CAAC,aAAa,IAAI,OAAO,EAAE,CAAC;QAC5B,aAAa,GAAG,OAAO,CAAA;IAC3B,CAAC;IACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACjB,aAAa,GAAG,MAAM,UAAU,EAAE,CAAA;IACtC,CAAC;IACD,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAChD,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAE/E,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE,SAAS,CAAC,CAAA;QACjE,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAA;QAC9B,IAAI,UAAU,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACnD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAC1B,OAAM;IACV,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAA;IACrC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;IAC3D,MAAM,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;QAC7C,SAAS;QACT,KAAK;QACL,OAAO,EAAE,aAAa;QACtB,UAAU;KACb,CAAC,CAAA;IAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QACvD,OAAM;IACV,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAA;AAChD,CAAC"}
@@ -1,10 +0,0 @@
1
- export declare function printSeparator(label: string): void;
2
- export declare function pluralize(count: number, singular: string): string;
3
- export interface CommentLike {
4
- id: number;
5
- creator: number;
6
- posted: Date;
7
- content: string;
8
- }
9
- export declare function printComment(comment: CommentLike, userMap: Map<number, string>, raw: boolean): void;
10
- //# sourceMappingURL=helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/thread/helpers.ts"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAalD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,IAAI,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,YAAY,CACxB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,GAAG,EAAE,OAAO,GACb,IAAI,CAMN"}