@doist/twist-cli 2.20.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 (198) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/package.json +3 -5
  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 -394
  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/reply.d.ts +0 -9
  68. package/dist/commands/thread/reply.d.ts.map +0 -1
  69. package/dist/commands/thread/reply.js +0 -68
  70. package/dist/commands/thread/reply.js.map +0 -1
  71. package/dist/commands/thread/view.d.ts +0 -9
  72. package/dist/commands/thread/view.d.ts.map +0 -1
  73. package/dist/commands/thread/view.js +0 -175
  74. package/dist/commands/thread/view.js.map +0 -1
  75. package/dist/commands/thread.d.ts +0 -3
  76. package/dist/commands/thread.d.ts.map +0 -1
  77. package/dist/commands/thread.js +0 -54
  78. package/dist/commands/thread.js.map +0 -1
  79. package/dist/commands/update.d.ts +0 -14
  80. package/dist/commands/update.d.ts.map +0 -1
  81. package/dist/commands/update.js +0 -91
  82. package/dist/commands/update.js.map +0 -1
  83. package/dist/commands/user.d.ts +0 -3
  84. package/dist/commands/user.d.ts.map +0 -1
  85. package/dist/commands/user.js +0 -67
  86. package/dist/commands/user.js.map +0 -1
  87. package/dist/commands/view.d.ts +0 -3
  88. package/dist/commands/view.d.ts.map +0 -1
  89. package/dist/commands/view.js +0 -63
  90. package/dist/commands/view.js.map +0 -1
  91. package/dist/commands/workspace.d.ts +0 -3
  92. package/dist/commands/workspace.d.ts.map +0 -1
  93. package/dist/commands/workspace.js +0 -48
  94. package/dist/commands/workspace.js.map +0 -1
  95. package/dist/index.d.ts +0 -3
  96. package/dist/index.d.ts.map +0 -1
  97. package/dist/index.js +0 -133
  98. package/dist/index.js.map +0 -1
  99. package/dist/lib/api.d.ts +0 -20
  100. package/dist/lib/api.d.ts.map +0 -1
  101. package/dist/lib/api.js +0 -220
  102. package/dist/lib/api.js.map +0 -1
  103. package/dist/lib/auth.d.ts +0 -21
  104. package/dist/lib/auth.d.ts.map +0 -1
  105. package/dist/lib/auth.js +0 -189
  106. package/dist/lib/auth.js.map +0 -1
  107. package/dist/lib/completion.d.ts +0 -31
  108. package/dist/lib/completion.d.ts.map +0 -1
  109. package/dist/lib/completion.js +0 -173
  110. package/dist/lib/completion.js.map +0 -1
  111. package/dist/lib/config.d.ts +0 -13
  112. package/dist/lib/config.d.ts.map +0 -1
  113. package/dist/lib/config.js +0 -26
  114. package/dist/lib/config.js.map +0 -1
  115. package/dist/lib/dates.d.ts +0 -3
  116. package/dist/lib/dates.d.ts.map +0 -1
  117. package/dist/lib/dates.js +0 -44
  118. package/dist/lib/dates.js.map +0 -1
  119. package/dist/lib/input.d.ts +0 -3
  120. package/dist/lib/input.d.ts.map +0 -1
  121. package/dist/lib/input.js +0 -52
  122. package/dist/lib/input.js.map +0 -1
  123. package/dist/lib/markdown.d.ts +0 -2
  124. package/dist/lib/markdown.d.ts.map +0 -1
  125. package/dist/lib/markdown.js +0 -16
  126. package/dist/lib/markdown.js.map +0 -1
  127. package/dist/lib/oauth-server.d.ts +0 -13
  128. package/dist/lib/oauth-server.d.ts.map +0 -1
  129. package/dist/lib/oauth-server.js +0 -824
  130. package/dist/lib/oauth-server.js.map +0 -1
  131. package/dist/lib/oauth.d.ts +0 -31
  132. package/dist/lib/oauth.d.ts.map +0 -1
  133. package/dist/lib/oauth.js +0 -140
  134. package/dist/lib/oauth.js.map +0 -1
  135. package/dist/lib/options.d.ts +0 -17
  136. package/dist/lib/options.d.ts.map +0 -1
  137. package/dist/lib/options.js +0 -2
  138. package/dist/lib/options.js.map +0 -1
  139. package/dist/lib/output.d.ts +0 -25
  140. package/dist/lib/output.d.ts.map +0 -1
  141. package/dist/lib/output.js +0 -128
  142. package/dist/lib/output.js.map +0 -1
  143. package/dist/lib/permissions.d.ts +0 -4
  144. package/dist/lib/permissions.d.ts.map +0 -1
  145. package/dist/lib/permissions.js +0 -35
  146. package/dist/lib/permissions.js.map +0 -1
  147. package/dist/lib/pkce.d.ts +0 -16
  148. package/dist/lib/pkce.d.ts.map +0 -1
  149. package/dist/lib/pkce.js +0 -35
  150. package/dist/lib/pkce.js.map +0 -1
  151. package/dist/lib/progress.d.ts +0 -29
  152. package/dist/lib/progress.d.ts.map +0 -1
  153. package/dist/lib/progress.js +0 -101
  154. package/dist/lib/progress.js.map +0 -1
  155. package/dist/lib/public-channels.d.ts +0 -5
  156. package/dist/lib/public-channels.d.ts.map +0 -1
  157. package/dist/lib/public-channels.js +0 -35
  158. package/dist/lib/public-channels.js.map +0 -1
  159. package/dist/lib/refs.d.ts +0 -37
  160. package/dist/lib/refs.d.ts.map +0 -1
  161. package/dist/lib/refs.js +0 -219
  162. package/dist/lib/refs.js.map +0 -1
  163. package/dist/lib/search-api.d.ts +0 -25
  164. package/dist/lib/search-api.d.ts.map +0 -1
  165. package/dist/lib/search-api.js +0 -85
  166. package/dist/lib/search-api.js.map +0 -1
  167. package/dist/lib/secure-store.d.ts +0 -11
  168. package/dist/lib/secure-store.d.ts.map +0 -1
  169. package/dist/lib/secure-store.js +0 -57
  170. package/dist/lib/secure-store.js.map +0 -1
  171. package/dist/lib/skills/content.d.ts +0 -5
  172. package/dist/lib/skills/content.d.ts.map +0 -1
  173. package/dist/lib/skills/content.js +0 -274
  174. package/dist/lib/skills/content.js.map +0 -1
  175. package/dist/lib/skills/create-installer.d.ts +0 -9
  176. package/dist/lib/skills/create-installer.d.ts.map +0 -1
  177. package/dist/lib/skills/create-installer.js +0 -60
  178. package/dist/lib/skills/create-installer.js.map +0 -1
  179. package/dist/lib/skills/index.d.ts +0 -7
  180. package/dist/lib/skills/index.d.ts.map +0 -1
  181. package/dist/lib/skills/index.js +0 -54
  182. package/dist/lib/skills/index.js.map +0 -1
  183. package/dist/lib/skills/types.d.ts +0 -30
  184. package/dist/lib/skills/types.d.ts.map +0 -1
  185. package/dist/lib/skills/types.js +0 -2
  186. package/dist/lib/skills/types.js.map +0 -1
  187. package/dist/lib/skills/update-installed.d.ts +0 -9
  188. package/dist/lib/skills/update-installed.d.ts.map +0 -1
  189. package/dist/lib/skills/update-installed.js +0 -20
  190. package/dist/lib/skills/update-installed.js.map +0 -1
  191. package/dist/lib/spinner.d.ts +0 -24
  192. package/dist/lib/spinner.d.ts.map +0 -1
  193. package/dist/lib/spinner.js +0 -126
  194. package/dist/lib/spinner.js.map +0 -1
  195. package/dist/postinstall.d.ts +0 -2
  196. package/dist/postinstall.d.ts.map +0 -1
  197. package/dist/postinstall.js +0 -3
  198. package/dist/postinstall.js.map +0 -1
@@ -1,54 +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 { replyToThread } from './thread/reply.js';
6
- import { viewThread } from './thread/view.js';
7
- export function registerThreadCommand(program) {
8
- const thread = program.command('thread').description('Thread operations');
9
- thread
10
- .command('view [thread-ref]', { isDefault: true })
11
- .description('Display a thread with its comments')
12
- .option('--comment <id>', 'Show only a specific comment')
13
- .option('--unread', 'Show only unread comments (with original post for context)')
14
- .option('--context <n>', 'Include N read comments before unread (use with --unread)')
15
- .option('--limit <n>', 'Max comments to show (default: 50)')
16
- .option('--since <date>', 'Comments newer than')
17
- .option('--until <date>', 'Comments older than')
18
- .option('--raw', 'Show raw markdown instead of rendered')
19
- .option('--json', 'Output as JSON')
20
- .option('--ndjson', 'Output as newline-delimited JSON')
21
- .option('--full', 'Include all fields in JSON output')
22
- .action((ref, options) => {
23
- if (!ref) {
24
- thread.help();
25
- return;
26
- }
27
- return viewThread(ref, options);
28
- });
29
- thread
30
- .command('reply <thread-ref> [content]')
31
- .description('Post a comment to a thread')
32
- .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']))
33
- .option('--close', 'Close the thread after replying')
34
- .option('--reopen', 'Reopen the thread after replying')
35
- .option('--dry-run', 'Show what would be posted without posting')
36
- .option('--json', 'Output posted comment as JSON')
37
- .option('--full', 'Include all fields in JSON output')
38
- .action(replyToThread);
39
- thread
40
- .command('create <channel-ref> <title> [content]')
41
- .description('Create a new thread in a channel')
42
- .option('--notify <recipients>', 'Comma-separated user IDs to notify')
43
- .option('--dry-run', 'Show what would be posted without posting')
44
- .option('--json', 'Output created thread as JSON')
45
- .option('--full', 'Include all fields in JSON output')
46
- .action(createThread);
47
- thread
48
- .command('done <thread-ref>')
49
- .description('Archive a thread (mark as done)')
50
- .option('--dry-run', 'Show what would happen without executing')
51
- .option('--json', 'Output result as JSON')
52
- .action(markThreadDone);
53
- }
54
- //# sourceMappingURL=thread.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"thread.js","sourceRoot":"","sources":["../../src/commands/thread.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAA;IAEzE,MAAM;SACD,OAAO,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SACjD,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;SACxD,MAAM,CAAC,UAAU,EAAE,4DAA4D,CAAC;SAChF,MAAM,CAAC,eAAe,EAAE,2DAA2D,CAAC;SACpF,MAAM,CAAC,aAAa,EAAE,oCAAoC,CAAC;SAC3D,MAAM,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;SAC/C,MAAM,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;SAC/C,MAAM,CAAC,OAAO,EAAE,uCAAuC,CAAC;SACxD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,UAAU,EAAE,kCAAkC,CAAC;SACtD,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;QACrB,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,CAAC,IAAI,EAAE,CAAA;YACb,OAAM;QACV,CAAC;QACD,OAAO,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEN,MAAM;SACD,OAAO,CAAC,8BAA8B,CAAC;SACvC,WAAW,CAAC,4BAA4B,CAAC;SACzC,SAAS,CACN,sBAAsB,CAClB,IAAI,MAAM,CACN,uBAAuB,EACvB,kHAAkH,CACrH,EACD,CAAC,UAAU,EAAE,oBAAoB,CAAC,CACrC,CACJ;SACA,MAAM,CAAC,SAAS,EAAE,iCAAiC,CAAC;SACpD,MAAM,CAAC,UAAU,EAAE,kCAAkC,CAAC;SACtD,MAAM,CAAC,WAAW,EAAE,2CAA2C,CAAC;SAChE,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC;SACjD,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,MAAM,CAAC,aAAa,CAAC,CAAA;IAE1B,MAAM;SACD,OAAO,CAAC,wCAAwC,CAAC;SACjD,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,uBAAuB,EAAE,oCAAoC,CAAC;SACrE,MAAM,CAAC,WAAW,EAAE,2CAA2C,CAAC;SAChE,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC;SACjD,MAAM,CAAC,QAAQ,EAAE,mCAAmC,CAAC;SACrD,MAAM,CAAC,YAAY,CAAC,CAAA;IAEzB,MAAM;SACD,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,WAAW,EAAE,0CAA0C,CAAC;SAC/D,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,MAAM,CAAC,cAAc,CAAC,CAAA;AAC/B,CAAC"}
@@ -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"}
@@ -1,91 +0,0 @@
1
- import { spawn } from 'node:child_process';
2
- import chalk from 'chalk';
3
- import pkg from '../../package.json' with { type: 'json' };
4
- import { withSpinner } from '../lib/spinner.js';
5
- const PACKAGE_NAME = '@doist/twist-cli';
6
- const REGISTRY_URL = `https://registry.npmjs.org/${PACKAGE_NAME}/latest`;
7
- export async function fetchLatestVersion() {
8
- const response = await fetch(REGISTRY_URL);
9
- if (!response.ok) {
10
- throw new Error(`Registry returned ${response.status}`);
11
- }
12
- const data = (await response.json());
13
- return data.version;
14
- }
15
- export function detectPackageManager() {
16
- const execPath = process.env.npm_execpath ?? '';
17
- if (execPath.includes('pnpm')) {
18
- return 'pnpm';
19
- }
20
- return 'npm';
21
- }
22
- export function runInstall(pm) {
23
- const command = pm === 'pnpm' ? 'add' : 'install';
24
- return new Promise((resolve, reject) => {
25
- const child = spawn(pm, [command, '-g', `${PACKAGE_NAME}@latest`], {
26
- stdio: 'pipe',
27
- });
28
- let stderr = '';
29
- child.stderr?.on('data', (data) => {
30
- stderr += data.toString();
31
- });
32
- child.on('error', reject);
33
- child.on('close', (code) => resolve({ exitCode: code ?? 1, stderr }));
34
- });
35
- }
36
- export async function updateAction(options) {
37
- const currentVersion = pkg.version;
38
- let latestVersion;
39
- try {
40
- latestVersion = await withSpinner({ text: 'Checking for updates...' }, fetchLatestVersion);
41
- }
42
- catch (error) {
43
- const message = error instanceof Error ? error.message : 'Unknown error';
44
- console.error(chalk.red('Failed to check for updates:'), message);
45
- process.exitCode = 1;
46
- return;
47
- }
48
- if (currentVersion === latestVersion) {
49
- console.log(chalk.green('✓'), `Already up to date (v${currentVersion})`);
50
- return;
51
- }
52
- console.log(`Update available: ${chalk.dim(`v${currentVersion}`)} → ${chalk.green(`v${latestVersion}`)}`);
53
- if (options.check) {
54
- console.log(chalk.dim('Run `tw update` to install'));
55
- return;
56
- }
57
- const pm = detectPackageManager();
58
- let result;
59
- try {
60
- result = await withSpinner({ text: `Updating to v${latestVersion}...`, color: 'blue' }, () => runInstall(pm));
61
- }
62
- catch (error) {
63
- if (error instanceof Error && 'code' in error && error.code === 'EACCES') {
64
- console.error(chalk.red('Permission denied.'), `Try running with sudo: sudo ${pm} ${pm === 'pnpm' ? 'add' : 'install'} -g ${PACKAGE_NAME}@latest`);
65
- }
66
- else {
67
- const message = error instanceof Error ? error.message : 'Unknown error';
68
- console.error(chalk.red('Update failed:'), message);
69
- }
70
- process.exitCode = 1;
71
- return;
72
- }
73
- if (result.exitCode !== 0) {
74
- console.error(chalk.red('Update failed:'), `${pm} exited with code ${result.exitCode}`);
75
- if (result.stderr) {
76
- console.error(chalk.dim(result.stderr.trim()));
77
- }
78
- process.exitCode = 1;
79
- return;
80
- }
81
- console.log(chalk.green('✓'), `Updated to v${latestVersion}`);
82
- console.log(chalk.dim(' Run'), chalk.cyan('tw changelog'), chalk.dim('to see what changed'));
83
- }
84
- export function registerUpdateCommand(program) {
85
- program
86
- .command('update')
87
- .description('Update the CLI to the latest version')
88
- .option('--check', 'Check for updates without installing')
89
- .action(updateAction);
90
- }
91
- //# sourceMappingURL=update.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function registerUserCommand(program: Command): void;
3
- //# sourceMappingURL=user.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/commands/user.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAsEnC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAY1D"}
@@ -1,67 +0,0 @@
1
- import chalk from 'chalk';
2
- import { getCurrentWorkspaceId, getSessionUser, getWorkspaceUsers } from '../lib/api.js';
3
- import { colors, formatJson, formatNdjson } from '../lib/output.js';
4
- import { resolveWorkspaceRef } from '../lib/refs.js';
5
- async function showCurrentUser() {
6
- const user = await getSessionUser();
7
- console.log(chalk.bold(user.name));
8
- console.log('');
9
- console.log(`ID: ${user.id}`);
10
- console.log(`Email: ${user.email}`);
11
- console.log(`Timezone: ${user.timezone}`);
12
- if (user.defaultWorkspace) {
13
- console.log(`Default: workspace id:${user.defaultWorkspace}`);
14
- }
15
- }
16
- async function listUsers(workspaceRef, options) {
17
- if (workspaceRef && options.workspace) {
18
- throw new Error('Cannot specify workspace both as argument and --workspace flag');
19
- }
20
- let workspaceId;
21
- const ref = workspaceRef || options.workspace;
22
- if (ref) {
23
- const workspace = await resolveWorkspaceRef(ref);
24
- workspaceId = workspace.id;
25
- }
26
- else {
27
- workspaceId = await getCurrentWorkspaceId();
28
- }
29
- let users = await getWorkspaceUsers(workspaceId);
30
- if (options.search) {
31
- const search = options.search.toLowerCase();
32
- users = users.filter((u) => u.name.toLowerCase().includes(search) || u.email?.toLowerCase().includes(search));
33
- }
34
- if (users.length === 0) {
35
- console.log('No users found.');
36
- return;
37
- }
38
- if (options.json) {
39
- console.log(formatJson(users, 'user', options.full));
40
- return;
41
- }
42
- if (options.ndjson) {
43
- console.log(formatNdjson(users, 'user', options.full));
44
- return;
45
- }
46
- for (const u of users) {
47
- const id = colors.timestamp(`id:${u.id}`);
48
- const name = u.name;
49
- const email = u.email ? colors.timestamp(`<${u.email}>`) : '';
50
- const type = colors.channel(`[${u.userType}]`);
51
- const bot = u.bot ? chalk.yellow(' [bot]') : '';
52
- console.log(`${id} ${name} ${email} ${type}${bot}`);
53
- }
54
- }
55
- export function registerUserCommand(program) {
56
- program.command('user').description('Show current user info').action(showCurrentUser);
57
- program
58
- .command('users [workspace-ref]')
59
- .description('List users in a workspace')
60
- .option('--workspace <ref>', 'Workspace ID or name')
61
- .option('--search <text>', 'Filter by name/email')
62
- .option('--json', 'Output as JSON')
63
- .option('--ndjson', 'Output as newline-delimited JSON')
64
- .option('--full', 'Include all fields in JSON output')
65
- .action(listUsers);
66
- }
67
- //# sourceMappingURL=user.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/commands/user.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function registerViewCommand(program: Command): void;
3
- //# sourceMappingURL=view.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA6BnC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4D1D"}
@@ -1,63 +0,0 @@
1
- import { Command } from 'commander';
2
- import { classifyTwistUrl } from '../lib/refs.js';
3
- function looksLikeTwistAppUrl(token) {
4
- return /^https?:\/\/twist\.com\/a\/\S+/.test(token);
5
- }
6
- function extractViewInvocation(parsedUrl) {
7
- const rawArgs = process.argv;
8
- const viewIdx = rawArgs.indexOf('view');
9
- const afterView = viewIdx >= 0 ? rawArgs.slice(viewIdx + 1) : [];
10
- const passthroughArgs = afterView.filter((arg) => arg !== parsedUrl);
11
- return { url: parsedUrl, passthroughArgs };
12
- }
13
- async function runRoutedCommand(loadRegister, argv) {
14
- const proxy = new Command();
15
- proxy.exitOverride();
16
- const register = await loadRegister();
17
- register(proxy);
18
- await proxy.parseAsync(['node', 'tw', ...argv]);
19
- }
20
- export function registerViewCommand(program) {
21
- program
22
- .command('view <url> [args...]')
23
- .description('View any Twist entity by URL')
24
- .allowUnknownOption(true)
25
- .addHelpText('after', `
26
- Route mapping:
27
- Message URL → tw msg view <url>
28
- Conversation URL → tw conversation view <url>
29
- Comment URL → tw thread view <url> (comment ID extracted from URL)
30
- Thread URL → tw thread view <url>
31
-
32
- Examples:
33
- tw view https://twist.com/a/1585/ch/100/t/200
34
- tw view https://twist.com/a/1585/ch/100/t/200/c/300
35
- tw view https://twist.com/a/1585/msg/400
36
- tw view https://twist.com/a/1585/msg/400/m/500
37
- tw view https://twist.com/a/1585/msg/400/m/500 --json`)
38
- .action(async (url) => {
39
- if (!looksLikeTwistAppUrl(url)) {
40
- throw new Error(`Not a recognized Twist URL: ${url}`);
41
- }
42
- const { url: resolvedUrl, passthroughArgs } = extractViewInvocation(url);
43
- const route = classifyTwistUrl(resolvedUrl);
44
- if (!route) {
45
- throw new Error(`Not a recognized Twist URL: ${resolvedUrl}`);
46
- }
47
- switch (route.entityType) {
48
- case 'thread':
49
- await runRoutedCommand(async () => (await import('./thread.js')).registerThreadCommand, ['thread', 'view', resolvedUrl, ...passthroughArgs]);
50
- break;
51
- case 'comment':
52
- await runRoutedCommand(async () => (await import('./thread.js')).registerThreadCommand, ['thread', 'view', resolvedUrl, ...passthroughArgs]);
53
- break;
54
- case 'conversation':
55
- await runRoutedCommand(async () => (await import('./conversation.js')).registerConversationCommand, ['conversation', 'view', resolvedUrl, ...passthroughArgs]);
56
- break;
57
- case 'message':
58
- await runRoutedCommand(async () => (await import('./msg.js')).registerMsgCommand, ['msg', 'view', resolvedUrl, ...passthroughArgs]);
59
- break;
60
- }
61
- });
62
- }
63
- //# sourceMappingURL=view.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function registerWorkspaceCommand(program: Command): void;
3
- //# sourceMappingURL=workspace.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA4CnC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAe/D"}
@@ -1,48 +0,0 @@
1
- import chalk from 'chalk';
2
- import { fetchWorkspaces, getCurrentWorkspaceId } from '../lib/api.js';
3
- import { updateConfig } from '../lib/config.js';
4
- import { colors, formatJson, formatNdjson } from '../lib/output.js';
5
- import { resolveWorkspaceRef } from '../lib/refs.js';
6
- async function listWorkspaces(options) {
7
- const workspaces = await fetchWorkspaces();
8
- if (workspaces.length === 0) {
9
- console.log('No workspaces found.');
10
- return;
11
- }
12
- if (options.json) {
13
- console.log(formatJson(workspaces, 'workspace', options.full));
14
- return;
15
- }
16
- if (options.ndjson) {
17
- console.log(formatNdjson(workspaces, 'workspace', options.full));
18
- return;
19
- }
20
- const currentWorkspaceId = await getCurrentWorkspaceId().catch(() => null);
21
- for (const w of workspaces) {
22
- const id = colors.timestamp(`id:${w.id}`);
23
- const name = w.id === currentWorkspaceId ? chalk.bold(w.name) : w.name;
24
- const current = w.id === currentWorkspaceId ? chalk.green(' (current)') : '';
25
- const plan = w.plan ? colors.channel(`[${w.plan}]`) : '';
26
- console.log(`${id} ${name}${current} ${plan}`);
27
- }
28
- }
29
- async function useWorkspace(ref) {
30
- const workspace = await resolveWorkspaceRef(ref);
31
- await updateConfig({ currentWorkspace: workspace.id });
32
- console.log(`Switched to workspace: ${workspace.name}`);
33
- }
34
- export function registerWorkspaceCommand(program) {
35
- program
36
- .command('workspaces')
37
- .description('List all workspaces')
38
- .option('--json', 'Output as JSON')
39
- .option('--ndjson', 'Output as newline-delimited JSON')
40
- .option('--full', 'Include all fields in JSON output')
41
- .action(listWorkspaces);
42
- const workspace = program.command('workspace').description('Manage workspace');
43
- workspace
44
- .command('use <workspace-ref>')
45
- .description('Set the current workspace')
46
- .action(useWorkspace);
47
- }
48
- //# sourceMappingURL=workspace.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js DELETED
@@ -1,133 +0,0 @@
1
- #!/usr/bin/env node
2
- import { program } from 'commander';
3
- import pkg from '../package.json' with { type: 'json' };
4
- import { startEarlySpinner, stopEarlySpinner } from './lib/spinner.js';
5
- const loadWorkspaceCommand = async () => (await import('./commands/workspace.js')).registerWorkspaceCommand;
6
- const loadUserCommand = async () => (await import('./commands/user.js')).registerUserCommand;
7
- const loadChannelCommand = async () => (await import('./commands/channel.js')).registerChannelCommand;
8
- const loadInboxCommand = async () => (await import('./commands/inbox.js')).registerInboxCommand;
9
- const loadThreadCommand = async () => (await import('./commands/thread.js')).registerThreadCommand;
10
- const loadConversationCommand = async () => (await import('./commands/conversation.js')).registerConversationCommand;
11
- const loadMsgCommand = async () => (await import('./commands/msg.js')).registerMsgCommand;
12
- const loadCommentCommand = async () => (await import('./commands/comment.js')).registerCommentCommand;
13
- const loadSearchCommand = async () => (await import('./commands/search.js')).registerSearchCommand;
14
- const loadReactCommand = async () => (await import('./commands/react.js')).registerReactCommand;
15
- const loadAuthCommand = async () => (await import('./commands/auth.js')).registerAuthCommand;
16
- const loadSkillCommand = async () => (await import('./commands/skill.js')).registerSkillCommand;
17
- const loadViewCommand = async () => (await import('./commands/view.js')).registerViewCommand;
18
- const loadCompletionCommand = async () => (await import('./commands/completion.js')).registerCompletionCommand;
19
- const loadAwayCommand = async () => (await import('./commands/away.js')).registerAwayCommand;
20
- const loadUpdateCommand = async () => (await import('./commands/update.js')).registerUpdateCommand;
21
- const loadChangelogCommand = async () => (await import('./commands/changelog.js')).registerChangelogCommand;
22
- const commands = {
23
- workspaces: ['List all workspaces', loadWorkspaceCommand],
24
- workspace: ['Manage workspace', loadWorkspaceCommand],
25
- user: ['Show current user info', loadUserCommand],
26
- users: ['List users in a workspace', loadUserCommand],
27
- channels: ['List channels in a workspace', loadChannelCommand],
28
- inbox: ['Show inbox threads', loadInboxCommand],
29
- thread: ['Thread operations', loadThreadCommand],
30
- conversation: ['Conversation (DM/group) operations', loadConversationCommand],
31
- msg: ['Conversation message operations (view, update, delete)', loadMsgCommand],
32
- comment: ['Thread comment operations (view, update, delete)', loadCommentCommand],
33
- search: ['Search content across a workspace', loadSearchCommand],
34
- away: ['Manage away status', loadAwayCommand],
35
- react: ['Add an emoji reaction (target-type: thread, comment, message)', loadReactCommand],
36
- unreact: ['Remove an emoji reaction (target-type: thread, comment, message)', loadReactCommand],
37
- auth: ['Manage authentication', loadAuthCommand],
38
- skill: ['Manage agent skill integrations', loadSkillCommand],
39
- view: ['View a Twist entity by URL', loadViewCommand],
40
- completion: ['Manage shell completions', loadCompletionCommand],
41
- update: ['Update the CLI to the latest version', loadUpdateCommand],
42
- changelog: ['Show recent changelog entries', loadChangelogCommand],
43
- };
44
- const commandAliases = {
45
- convo: 'conversation',
46
- message: 'msg',
47
- };
48
- program
49
- .name('tw')
50
- .description('Twist CLI')
51
- .version(pkg.version)
52
- .option('--no-spinner', 'Disable loading animations')
53
- .option('--progress-jsonl [path]', 'Output progress events as JSONL to stderr or file')
54
- .option('--include-private-channels', 'Include private channels in output (env: TWIST_INCLUDE_PRIVATE_CHANNELS)')
55
- .option('--accessible', 'Add text labels to color-coded output (also: TW_ACCESSIBLE=1)')
56
- .addHelpText('after', `
57
- Note for AI/LLM agents:
58
- Use --json or --ndjson flags for unambiguous, parseable output.
59
- Default JSON shows essential fields; use --full for all fields.`);
60
- // Register lightweight placeholders so --help lists all commands
61
- for (const [name, [description]] of Object.entries(commands)) {
62
- const cmd = program.command(name).description(description);
63
- // Add aliases to placeholder commands so --help shows them
64
- const alias = Object.entries(commandAliases).find(([, target]) => target === name)?.[0];
65
- if (alias) {
66
- cmd.alias(alias);
67
- }
68
- }
69
- // completion-server needs the command tree to walk for completions.
70
- // Only load the completion module + the specific command being completed
71
- // (extracted from COMP_LINE) to keep startup fast.
72
- if (process.argv[2] === 'completion-server') {
73
- const { parseCompLine } = await import('./lib/completion.js');
74
- const compWords = parseCompLine(process.env.COMP_LINE ?? '');
75
- const compCmd = compWords.find((w) => !w.startsWith('-') && (w in commands || w in commandAliases));
76
- const resolvedCompCmd = compCmd ? (commandAliases[compCmd] ?? compCmd) : undefined;
77
- const completionLoader = commands.completion[1];
78
- // Build loader set so command aliases that share a module only register once.
79
- const loadersToRun = resolvedCompCmd
80
- ? [
81
- completionLoader,
82
- ...(commands[resolvedCompCmd][1] !== completionLoader
83
- ? [commands[resolvedCompCmd][1]]
84
- : []),
85
- ]
86
- : [...new Set(Object.values(commands).map(([, loader]) => loader))];
87
- for (const [name, [, loader]] of Object.entries(commands)) {
88
- if (!loadersToRun.includes(loader))
89
- continue;
90
- const idx = program.commands.findIndex((c) => c.name() === name);
91
- if (idx !== -1)
92
- program.commands.splice(idx, 1);
93
- }
94
- await Promise.all(loadersToRun.map(async (loader) => {
95
- const register = await loader();
96
- register(program);
97
- }));
98
- }
99
- else {
100
- // Detect which command is being invoked (resolve aliases first)
101
- const commandArg = process.argv
102
- .slice(2)
103
- .find((a) => !a.startsWith('-') && (a in commands || a in commandAliases));
104
- const commandName = commandArg ? (commandAliases[commandArg] ?? commandArg) : undefined;
105
- if (commandName && commands[commandName]) {
106
- const loader = commands[commandName][1];
107
- // Remove all placeholders that map to the same loader to avoid
108
- // duplicate command registration from alias entries.
109
- for (const [name, [, entryLoader]] of Object.entries(commands)) {
110
- if (entryLoader !== loader)
111
- continue;
112
- const idx = program.commands.findIndex((c) => c.name() === name);
113
- if (idx !== -1)
114
- program.commands.splice(idx, 1);
115
- }
116
- startEarlySpinner();
117
- try {
118
- const register = await loader();
119
- register(program);
120
- }
121
- catch (err) {
122
- stopEarlySpinner();
123
- throw err;
124
- }
125
- }
126
- }
127
- try {
128
- await program.parseAsync();
129
- }
130
- finally {
131
- stopEarlySpinner();
132
- }
133
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/lib/api.d.ts DELETED
@@ -1,20 +0,0 @@
1
- import { TwistApi, type User, type Workspace, type WorkspaceUser } from '@doist/twist-sdk';
2
- export declare function getTwistClient(): Promise<TwistApi>;
3
- export declare function fetchWorkspaces(): Promise<Workspace[]>;
4
- export declare function clearWorkspaceCache(): void;
5
- export declare function getCurrentWorkspaceId(flagValue?: number): Promise<number>;
6
- export declare function getSessionUser(): Promise<User>;
7
- export declare function getWorkspaceUsers(workspaceId: number): Promise<WorkspaceUser[]>;
8
- export declare function clearUserCache(): void;
9
- /**
10
- * Validates a batch response and returns the data, throwing on errors.
11
- * Also handles the case where the SDK fails to validate the response schema
12
- * (e.g. when the batch API wraps entities in a key like `{comment: {...}}`).
13
- * In that case, the raw transformed data is returned — check for expected fields.
14
- */
15
- export declare function assertBatchData<T>(response: {
16
- code: number;
17
- data: T;
18
- }, label: string): T;
19
- export type { User, Workspace, WorkspaceUser };
20
- //# sourceMappingURL=api.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAmM1F,wBAAsB,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC,CAOxD;AAKD,wBAAsB,eAAe,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAO5D;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAsB,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwB/E;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAOpD;AAED,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAGrF;AAED,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CAKxF;AAED,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA"}