@doist/twist-cli 2.22.1 → 2.23.0

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 (208) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/commands/auth/helpers.d.ts +3 -0
  3. package/dist/commands/auth/helpers.d.ts.map +1 -0
  4. package/dist/commands/auth/helpers.js +12 -0
  5. package/dist/commands/auth/helpers.js.map +1 -0
  6. package/dist/commands/{auth.d.ts → auth/index.d.ts} +1 -1
  7. package/dist/commands/auth/index.d.ts.map +1 -0
  8. package/dist/commands/auth/index.js +20 -0
  9. package/dist/commands/auth/index.js.map +1 -0
  10. package/dist/commands/auth/login.d.ts +4 -0
  11. package/dist/commands/auth/login.d.ts.map +1 -0
  12. package/dist/commands/auth/login.js +62 -0
  13. package/dist/commands/auth/login.js.map +1 -0
  14. package/dist/commands/auth/logout.d.ts +2 -0
  15. package/dist/commands/auth/logout.d.ts.map +1 -0
  16. package/dist/commands/auth/logout.js +9 -0
  17. package/dist/commands/auth/logout.js.map +1 -0
  18. package/dist/commands/auth/status.d.ts +4 -0
  19. package/dist/commands/auth/status.d.ts.map +1 -0
  20. package/dist/commands/auth/status.js +33 -0
  21. package/dist/commands/auth/status.js.map +1 -0
  22. package/dist/commands/auth/token.d.ts +2 -0
  23. package/dist/commands/auth/token.d.ts.map +1 -0
  24. package/dist/commands/auth/token.js +38 -0
  25. package/dist/commands/auth/token.js.map +1 -0
  26. package/dist/commands/away/clear.d.ts +3 -0
  27. package/dist/commands/away/clear.d.ts.map +1 -0
  28. package/dist/commands/away/clear.js +22 -0
  29. package/dist/commands/away/clear.js.map +1 -0
  30. package/dist/commands/away/helpers.d.ts +7 -0
  31. package/dist/commands/away/helpers.d.ts.map +1 -0
  32. package/dist/commands/away/helpers.js +37 -0
  33. package/dist/commands/away/helpers.js.map +1 -0
  34. package/dist/commands/{away.d.ts → away/index.d.ts} +1 -1
  35. package/dist/commands/away/index.d.ts.map +1 -0
  36. package/dist/commands/away/index.js +26 -0
  37. package/dist/commands/away/index.js.map +1 -0
  38. package/dist/commands/away/set.d.ts +7 -0
  39. package/dist/commands/away/set.d.ts.map +1 -0
  40. package/dist/commands/away/set.js +31 -0
  41. package/dist/commands/away/set.js.map +1 -0
  42. package/dist/commands/away/status.d.ts +3 -0
  43. package/dist/commands/away/status.d.ts.map +1 -0
  44. package/dist/commands/away/status.js +20 -0
  45. package/dist/commands/away/status.js.map +1 -0
  46. package/dist/commands/comment/delete.d.ts +5 -0
  47. package/dist/commands/comment/delete.d.ts.map +1 -0
  48. package/dist/commands/comment/delete.js +18 -0
  49. package/dist/commands/comment/delete.js.map +1 -0
  50. package/dist/commands/{comment.d.ts → comment/index.d.ts} +1 -1
  51. package/dist/commands/comment/index.d.ts.map +1 -0
  52. package/dist/commands/comment/index.js +35 -0
  53. package/dist/commands/comment/index.js.map +1 -0
  54. package/dist/commands/comment/update.d.ts +5 -0
  55. package/dist/commands/comment/update.d.ts.map +1 -0
  56. package/dist/commands/comment/update.js +35 -0
  57. package/dist/commands/comment/update.js.map +1 -0
  58. package/dist/commands/comment/view.d.ts +3 -0
  59. package/dist/commands/comment/view.d.ts.map +1 -0
  60. package/dist/commands/comment/view.js +23 -0
  61. package/dist/commands/comment/view.js.map +1 -0
  62. package/dist/commands/completion/helpers.d.ts +14 -0
  63. package/dist/commands/completion/helpers.d.ts.map +1 -0
  64. package/dist/commands/completion/helpers.js +37 -0
  65. package/dist/commands/completion/helpers.js.map +1 -0
  66. package/dist/commands/{completion.d.ts → completion/index.d.ts} +1 -1
  67. package/dist/commands/completion/index.d.ts.map +1 -0
  68. package/dist/commands/completion/index.js +22 -0
  69. package/dist/commands/completion/index.js.map +1 -0
  70. package/dist/commands/completion/install.d.ts +2 -0
  71. package/dist/commands/completion/install.d.ts.map +1 -0
  72. package/dist/commands/completion/install.js +20 -0
  73. package/dist/commands/completion/install.js.map +1 -0
  74. package/dist/commands/completion/server.d.ts +3 -0
  75. package/dist/commands/completion/server.d.ts.map +1 -0
  76. package/dist/commands/completion/server.js +35 -0
  77. package/dist/commands/completion/server.js.map +1 -0
  78. package/dist/commands/completion/uninstall.d.ts +2 -0
  79. package/dist/commands/completion/uninstall.d.ts.map +1 -0
  80. package/dist/commands/completion/uninstall.js +19 -0
  81. package/dist/commands/completion/uninstall.js.map +1 -0
  82. package/dist/commands/conversation/done.d.ts +3 -0
  83. package/dist/commands/conversation/done.d.ts.map +1 -0
  84. package/dist/commands/conversation/done.js +18 -0
  85. package/dist/commands/conversation/done.js.map +1 -0
  86. package/dist/commands/conversation/helpers.d.ts +35 -0
  87. package/dist/commands/conversation/helpers.d.ts.map +1 -0
  88. package/dist/commands/conversation/helpers.js +144 -0
  89. package/dist/commands/conversation/helpers.js.map +1 -0
  90. package/dist/commands/{conversation.d.ts → conversation/index.d.ts} +1 -1
  91. package/dist/commands/conversation/index.d.ts.map +1 -0
  92. package/dist/commands/conversation/index.js +77 -0
  93. package/dist/commands/conversation/index.js.map +1 -0
  94. package/dist/commands/conversation/mute.d.ts +3 -0
  95. package/dist/commands/conversation/mute.d.ts.map +1 -0
  96. package/dist/commands/conversation/mute.js +25 -0
  97. package/dist/commands/conversation/mute.js.map +1 -0
  98. package/dist/commands/conversation/reply.d.ts +3 -0
  99. package/dist/commands/conversation/reply.d.ts.map +1 -0
  100. package/dist/commands/conversation/reply.js +35 -0
  101. package/dist/commands/conversation/reply.js.map +1 -0
  102. package/dist/commands/conversation/unmute.d.ts +3 -0
  103. package/dist/commands/conversation/unmute.d.ts.map +1 -0
  104. package/dist/commands/conversation/unmute.js +23 -0
  105. package/dist/commands/conversation/unmute.js.map +1 -0
  106. package/dist/commands/conversation/unread.d.ts +3 -0
  107. package/dist/commands/conversation/unread.d.ts.map +1 -0
  108. package/dist/commands/conversation/unread.js +63 -0
  109. package/dist/commands/conversation/unread.js.map +1 -0
  110. package/dist/commands/conversation/view.d.ts +3 -0
  111. package/dist/commands/conversation/view.d.ts.map +1 -0
  112. package/dist/commands/conversation/view.js +65 -0
  113. package/dist/commands/conversation/view.js.map +1 -0
  114. package/dist/commands/conversation/with.d.ts +3 -0
  115. package/dist/commands/conversation/with.d.ts.map +1 -0
  116. package/dist/commands/conversation/with.js +49 -0
  117. package/dist/commands/conversation/with.js.map +1 -0
  118. package/dist/commands/msg/delete.d.ts +5 -0
  119. package/dist/commands/msg/delete.d.ts.map +1 -0
  120. package/dist/commands/msg/delete.js +18 -0
  121. package/dist/commands/msg/delete.js.map +1 -0
  122. package/dist/commands/{msg.d.ts → msg/index.d.ts} +1 -1
  123. package/dist/commands/msg/index.d.ts.map +1 -0
  124. package/dist/commands/msg/index.js +34 -0
  125. package/dist/commands/msg/index.js.map +1 -0
  126. package/dist/commands/msg/update.d.ts +5 -0
  127. package/dist/commands/msg/update.d.ts.map +1 -0
  128. package/dist/commands/msg/update.js +35 -0
  129. package/dist/commands/msg/update.js.map +1 -0
  130. package/dist/commands/msg/view.d.ts +3 -0
  131. package/dist/commands/msg/view.d.ts.map +1 -0
  132. package/dist/commands/msg/view.js +28 -0
  133. package/dist/commands/msg/view.js.map +1 -0
  134. package/dist/commands/{skill.d.ts → skill/index.d.ts} +1 -1
  135. package/dist/commands/skill/index.d.ts.map +1 -0
  136. package/dist/commands/skill/index.js +29 -0
  137. package/dist/commands/skill/index.js.map +1 -0
  138. package/dist/commands/skill/install.d.ts +3 -0
  139. package/dist/commands/skill/install.d.ts.map +1 -0
  140. package/dist/commands/skill/install.js +21 -0
  141. package/dist/commands/skill/install.js.map +1 -0
  142. package/dist/commands/skill/list.d.ts +6 -0
  143. package/dist/commands/skill/list.d.ts.map +1 -0
  144. package/dist/commands/skill/list.js +22 -0
  145. package/dist/commands/skill/list.js.map +1 -0
  146. package/dist/commands/skill/uninstall.d.ts +3 -0
  147. package/dist/commands/skill/uninstall.d.ts.map +1 -0
  148. package/dist/commands/skill/uninstall.js +19 -0
  149. package/dist/commands/skill/uninstall.js.map +1 -0
  150. package/dist/commands/skill/update.d.ts +3 -0
  151. package/dist/commands/skill/update.d.ts.map +1 -0
  152. package/dist/commands/skill/update.js +42 -0
  153. package/dist/commands/skill/update.js.map +1 -0
  154. package/dist/commands/thread/delete.d.ts +7 -0
  155. package/dist/commands/thread/delete.d.ts.map +1 -0
  156. package/dist/commands/thread/delete.js +38 -0
  157. package/dist/commands/thread/delete.js.map +1 -0
  158. package/dist/commands/{thread.d.ts → thread/index.d.ts} +1 -1
  159. package/dist/commands/thread/index.d.ts.map +1 -0
  160. package/dist/commands/{thread.js → thread/index.js} +15 -7
  161. package/dist/commands/thread/index.js.map +1 -0
  162. package/dist/commands/update/action.d.ts +1 -0
  163. package/dist/commands/update/action.d.ts.map +1 -1
  164. package/dist/commands/update/action.js +16 -0
  165. package/dist/commands/update/action.js.map +1 -1
  166. package/dist/commands/update/index.d.ts.map +1 -1
  167. package/dist/commands/update/index.js +1 -2
  168. package/dist/commands/update/index.js.map +1 -1
  169. package/dist/commands/view.d.ts.map +1 -1
  170. package/dist/commands/view.js +4 -4
  171. package/dist/commands/view.js.map +1 -1
  172. package/dist/index.js +8 -8
  173. package/dist/index.js.map +1 -1
  174. package/dist/lib/api.d.ts.map +1 -1
  175. package/dist/lib/api.js +1 -0
  176. package/dist/lib/api.js.map +1 -1
  177. package/dist/lib/skills/content.d.ts +1 -1
  178. package/dist/lib/skills/content.d.ts.map +1 -1
  179. package/dist/lib/skills/content.js +4 -1
  180. package/dist/lib/skills/content.js.map +1 -1
  181. package/package.json +2 -2
  182. package/dist/commands/auth.d.ts.map +0 -1
  183. package/dist/commands/auth.js +0 -154
  184. package/dist/commands/auth.js.map +0 -1
  185. package/dist/commands/away.d.ts.map +0 -1
  186. package/dist/commands/away.js +0 -120
  187. package/dist/commands/away.js.map +0 -1
  188. package/dist/commands/comment.d.ts.map +0 -1
  189. package/dist/commands/comment.js +0 -99
  190. package/dist/commands/comment.js.map +0 -1
  191. package/dist/commands/completion.d.ts.map +0 -1
  192. package/dist/commands/completion.js +0 -121
  193. package/dist/commands/completion.js.map +0 -1
  194. package/dist/commands/conversation.d.ts.map +0 -1
  195. package/dist/commands/conversation.js +0 -458
  196. package/dist/commands/conversation.js.map +0 -1
  197. package/dist/commands/msg.d.ts.map +0 -1
  198. package/dist/commands/msg.js +0 -103
  199. package/dist/commands/msg.js.map +0 -1
  200. package/dist/commands/skill.d.ts.map +0 -1
  201. package/dist/commands/skill.js +0 -119
  202. package/dist/commands/skill.js.map +0 -1
  203. package/dist/commands/thread.d.ts.map +0 -1
  204. package/dist/commands/thread.js.map +0 -1
  205. package/dist/commands/update/channel.d.ts +0 -2
  206. package/dist/commands/update/channel.d.ts.map +0 -1
  207. package/dist/commands/update/channel.js +0 -13
  208. package/dist/commands/update/channel.js.map +0 -1
@@ -1,121 +0,0 @@
1
- import { existsSync } from 'node:fs';
2
- import { homedir } from 'node:os';
3
- import { join, resolve } from 'node:path';
4
- import { getCompletions, parseCompLine } from '../lib/completion.js';
5
- // pwsh is included because tabtab supports it — installedShells() needs to
6
- // detect and clean up pwsh completion files even though we don't advertise it.
7
- const COMPLETION_EXTENSIONS = {
8
- bash: 'bash',
9
- zsh: 'zsh',
10
- fish: 'fish',
11
- pwsh: 'ps1',
12
- };
13
- /**
14
- * Find which shells have tw completions installed by checking for the
15
- * completion script files that tabtab creates.
16
- *
17
- * FIXME: Workaround for https://github.com/pnpm/tabtab/issues/34 —
18
- * tabtab.uninstall() without a shell tries all shells and throws ENOENT
19
- * for ones that were never installed. We detect which shells are actually
20
- * installed and uninstall only those. Remove once the upstream issue is fixed.
21
- */
22
- function installedShells() {
23
- return Object.entries(COMPLETION_EXTENSIONS)
24
- .filter(([shell, ext]) => existsSync(join(homedir(), '.config', 'tabtab', shell, `tw.${ext}`)))
25
- .map(([shell]) => shell);
26
- }
27
- function resolveCompleterCommand() {
28
- const invokedScript = process.argv[1];
29
- if (!invokedScript) {
30
- return 'tw';
31
- }
32
- const resolvedScript = resolve(invokedScript);
33
- if (existsSync(resolvedScript)) {
34
- return resolvedScript;
35
- }
36
- return 'tw';
37
- }
38
- export function registerCompletionCommand(program) {
39
- const completion = program.command('completion').description('Manage shell completions');
40
- completion
41
- .command('install [shell]')
42
- .description('Install shell completions (bash, zsh, fish)')
43
- .action(async (shell) => {
44
- const tabtab = await import('@pnpm/tabtab');
45
- const completer = resolveCompleterCommand();
46
- if (shell && !tabtab.isShellSupported(shell)) {
47
- console.error(`Unsupported shell: ${shell}. Supported: ${tabtab.SUPPORTED_SHELLS.join(', ')}`);
48
- process.exitCode = 1;
49
- return;
50
- }
51
- await tabtab.install({
52
- name: 'tw',
53
- // Use the executable path used to install completions so shell
54
- // completion doesn't accidentally call an older `tw` on PATH.
55
- completer,
56
- shell: shell,
57
- });
58
- console.log('Shell completions installed successfully.');
59
- console.log('Restart your shell or source your shell config to activate.');
60
- });
61
- completion
62
- .command('uninstall')
63
- .description('Remove shell completions')
64
- .action(async () => {
65
- // FIXME: Replace with plain tabtab.uninstall({ name: 'tw' }) once
66
- // https://github.com/pnpm/tabtab/issues/34 is fixed.
67
- const shells = installedShells();
68
- if (shells.length === 0) {
69
- console.log('No shell completions installed.');
70
- return;
71
- }
72
- const tabtab = await import('@pnpm/tabtab');
73
- for (const shell of shells) {
74
- await tabtab.uninstall({
75
- name: 'tw',
76
- shell,
77
- });
78
- }
79
- console.log('Shell completions removed.');
80
- });
81
- // Hidden command invoked by the shell completion script at TAB time
82
- program
83
- .command('completion-server', { hidden: true })
84
- .description('Completion server (internal)')
85
- .allowUnknownOption()
86
- .allowExcessArguments()
87
- .action(async () => {
88
- const tabtab = await import('@pnpm/tabtab');
89
- const env = tabtab.parseEnv(process.env);
90
- if (!env.complete) {
91
- return;
92
- }
93
- const shell = tabtab.getShellFromEnv(process.env);
94
- const words = parseCompLine(env.line);
95
- let current = env.last;
96
- // The fish/zsh completion templates always append a trailing space
97
- // to COMP_LINE, making env.last empty even when the cursor is right
98
- // after '--flag='. Use env.lastPartial (cursor-position-aware) to
99
- // detect this case and restore the actual word being completed.
100
- if (current === '' && env.lastPartial.includes('=')) {
101
- if (words.at(-1) === '')
102
- words.pop();
103
- current = env.lastPartial;
104
- }
105
- const completions = getCompletions(program, words, current);
106
- // Bash treats '=' as a word break (COMP_WORDBREAKS), so readline
107
- // replaces only the part after '=' with COMPREPLY values. If we
108
- // return '--flag=value', bash produces '--flag=--flag=value'.
109
- // Strip the flag prefix so bash gets just the value part.
110
- if (shell === 'bash' && current.includes('=')) {
111
- const prefix = current.slice(0, current.indexOf('=') + 1);
112
- const values = completions
113
- .map((c) => (c.name.startsWith(prefix) ? c.name.slice(prefix.length) : c.name))
114
- .filter(Boolean);
115
- console.log(values.join('\n'));
116
- return;
117
- }
118
- tabtab.log(completions, shell);
119
- });
120
- }
121
- //# sourceMappingURL=completion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGzC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpE,2EAA2E;AAC3E,+EAA+E;AAC/E,MAAM,qBAAqB,GAAmC;IAC1D,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,KAAK;CACd,CAAA;AAED;;;;;;;;GAQG;AACH,SAAS,eAAe;IACpB,OAAO,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC;SACvC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CACrB,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CACvE;SACA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAuB,CAAC,CAAA;AAClD,CAAC;AAED,SAAS,uBAAuB;IAC5B,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACrC,IAAI,CAAC,aAAa,EAAE,CAAC;QACjB,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IAC7C,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC7B,OAAO,cAAc,CAAA;IACzB,CAAC;IAED,OAAO,IAAI,CAAA;AACf,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAA;IAExF,UAAU;SACL,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;QAC3C,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAA;QAE3C,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,KAAK,CACT,sBAAsB,KAAK,gBAAgB,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClF,CAAA;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAM;QACV,CAAC;QAED,MAAM,MAAM,CAAC,OAAO,CAAC;YACjB,IAAI,EAAE,IAAI;YACV,+DAA+D;YAC/D,8DAA8D;YAC9D,SAAS;YACT,KAAK,EAAE,KAAuB;SACjC,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAA;QACxD,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAA;IAC9E,CAAC,CAAC,CAAA;IAEN,UAAU;SACL,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,IAAI,EAAE;QACf,kEAAkE;QAClE,qDAAqD;QACrD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAA;QAChC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAA;YAC9C,OAAM;QACV,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;QAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,MAAM,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,IAAI;gBACV,KAAK;aACR,CAAC,CAAA;QACN,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEN,oEAAoE;IACpE,OAAO;SACF,OAAO,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SAC9C,WAAW,CAAC,8BAA8B,CAAC;SAC3C,kBAAkB,EAAE;SACpB,oBAAoB,EAAE;SACtB,MAAM,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;QAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAExC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAM;QACV,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAEjD,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAErC,IAAI,OAAO,GAAG,GAAG,CAAC,IAAI,CAAA;QAEtB,mEAAmE;QACnE,oEAAoE;QACpE,kEAAkE;QAClE,gEAAgE;QAChE,IAAI,OAAO,KAAK,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClD,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;gBAAE,KAAK,CAAC,GAAG,EAAE,CAAA;YACpC,OAAO,GAAG,GAAG,CAAC,WAAW,CAAA;QAC7B,CAAC;QAED,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;QAE3D,iEAAiE;QACjE,gEAAgE;QAChE,8DAA8D;QAC9D,0DAA0D;QAC1D,IAAI,KAAK,KAAK,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YACzD,MAAM,MAAM,GAAG,WAAW;iBACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBAC9E,MAAM,CAAC,OAAO,CAAC,CAAA;YACpB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAC9B,OAAM;QACV,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACV,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/commands/conversation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAuiBnC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2ElE"}
@@ -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 +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"}