@doist/twist-cli 2.2.0 → 2.3.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.
package/README.md CHANGED
@@ -47,6 +47,21 @@ References accept IDs (`123` or `id:123`), Twist URLs, or fuzzy names (for works
47
47
 
48
48
  Run `tw --help` or `tw <command> --help` for more options.
49
49
 
50
+ ## Shell Completions
51
+
52
+ Tab completion is available for bash, zsh, and fish:
53
+
54
+ ```bash
55
+ tw completion install # prompts for shell
56
+ tw completion install bash # or: zsh, fish
57
+ ```
58
+
59
+ Restart your shell or source your config file to activate. To remove:
60
+
61
+ ```bash
62
+ tw completion uninstall
63
+ ```
64
+
50
65
  ### Machine-readable output
51
66
 
52
67
  All list/view commands support `--json` and `--ndjson` flags for scripting:
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=completion.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/completion.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,106 @@
1
+ import { Command, Option } from 'commander';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { getCompletions, parseCompLine, withCaseInsensitiveChoices, withUnvalidatedChoices, } from '../lib/completion.js';
4
+ function createTestProgram() {
5
+ const program = new Command();
6
+ program.name('tw');
7
+ const thread = program.command('thread').description('Thread operations');
8
+ thread.command('view').description('View thread').option('--json', 'Output as JSON');
9
+ thread
10
+ .command('reply')
11
+ .description('Reply in thread')
12
+ .addOption(withUnvalidatedChoices(new Option('--notify <recipients>', 'Notification targets'), [
13
+ 'EVERYONE',
14
+ 'EVERYONE_IN_THREAD',
15
+ ]));
16
+ program
17
+ .command('search')
18
+ .description('Search content')
19
+ .addOption(withCaseInsensitiveChoices(new Option('--type <type>', 'Search type'), [
20
+ 'threads',
21
+ 'messages',
22
+ 'all',
23
+ ]))
24
+ .option('--json', 'Output as JSON');
25
+ // Hidden command (like completion-server)
26
+ program.command('hidden-cmd', { hidden: true }).description('Internal command');
27
+ return program;
28
+ }
29
+ function names(items) {
30
+ return items.map((i) => i.name);
31
+ }
32
+ describe('getCompletions', () => {
33
+ it('returns visible top-level commands', () => {
34
+ const program = createTestProgram();
35
+ const result = getCompletions(program, [''], '');
36
+ expect(names(result)).toContain('thread');
37
+ expect(names(result)).toContain('search');
38
+ expect(names(result)).not.toContain('hidden-cmd');
39
+ });
40
+ it('returns subcommands inside a command', () => {
41
+ const program = createTestProgram();
42
+ const result = getCompletions(program, ['thread', ''], '');
43
+ const resultNames = names(result);
44
+ expect(resultNames).toContain('view');
45
+ expect(resultNames).toContain('reply');
46
+ });
47
+ it('returns options when current word starts with -', () => {
48
+ const program = createTestProgram();
49
+ const result = getCompletions(program, ['search', '--'], '--');
50
+ const resultNames = names(result);
51
+ expect(resultNames).toContain('--type');
52
+ expect(resultNames).toContain('--json');
53
+ });
54
+ it('suggests option values from argChoices', () => {
55
+ const program = createTestProgram();
56
+ const result = getCompletions(program, ['search', '--type', ''], '');
57
+ expect(names(result)).toEqual(['threads', 'messages', 'all']);
58
+ });
59
+ it('supports --flag=value completion', () => {
60
+ const program = createTestProgram();
61
+ const result = getCompletions(program, ['search', '--type='], '--type=');
62
+ expect(names(result)).toEqual(['--type=threads', '--type=messages', '--type=all']);
63
+ });
64
+ it('supports unvalidated choices for options with extra accepted formats', () => {
65
+ const program = createTestProgram();
66
+ const result = getCompletions(program, ['thread', 'reply', '--notify', ''], '');
67
+ expect(names(result)).toEqual(['EVERYONE', 'EVERYONE_IN_THREAD']);
68
+ });
69
+ it('stops offering options after --', () => {
70
+ const program = createTestProgram();
71
+ const result = getCompletions(program, ['search', '--', '--ty'], '--ty');
72
+ expect(result).toEqual([]);
73
+ });
74
+ });
75
+ describe('parseCompLine quoted argument limitation', () => {
76
+ it('splits quoted multi-word arguments into separate tokens', () => {
77
+ const result = parseCompLine('tw thread reply "hello world"');
78
+ expect(result).toEqual(['thread', 'reply', '"hello', 'world"']);
79
+ });
80
+ it('strips completion-server token', () => {
81
+ const result = parseCompLine('tw completion-server thread rep');
82
+ expect(result).toEqual(['thread', 'rep']);
83
+ });
84
+ });
85
+ // These tests verify assumptions we make about Commander internals.
86
+ describe('Commander internal assumptions', () => {
87
+ it('choices() sets parseArg on the option', () => {
88
+ const opt = new Option('--color <c>', 'Pick a color');
89
+ expect(opt.parseArg).toBeUndefined();
90
+ opt.choices(['red', 'blue']);
91
+ expect(opt.parseArg).toBeTypeOf('function');
92
+ });
93
+ it('argChoices set directly is readable by option consumers', () => {
94
+ const opt = new Option('--role <r>', 'Role');
95
+ opt.argChoices = ['ADMIN', 'MEMBER'];
96
+ expect(opt.argChoices).toEqual(['ADMIN', 'MEMBER']);
97
+ });
98
+ it('{ hidden: true } sets _hidden on the command', () => {
99
+ const program = new Command();
100
+ const visible = program.command('visible');
101
+ const hidden = program.command('secret', { hidden: true });
102
+ expect(visible._hidden).toBe(false);
103
+ expect(hidden._hidden).toBe(true);
104
+ });
105
+ });
106
+ //# sourceMappingURL=completion.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.test.js","sourceRoot":"","sources":["../../src/__tests__/completion.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAEH,cAAc,EACd,aAAa,EACb,0BAA0B,EAC1B,sBAAsB,GACzB,MAAM,sBAAsB,CAAA;AAE7B,SAAS,iBAAiB;IACtB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;IAC7B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAElB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAA;IACzE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAA;IACpF,MAAM;SACD,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,iBAAiB,CAAC;SAC9B,SAAS,CACN,sBAAsB,CAAC,IAAI,MAAM,CAAC,uBAAuB,EAAE,sBAAsB,CAAC,EAAE;QAChF,UAAU;QACV,oBAAoB;KACvB,CAAC,CACL,CAAA;IAEL,OAAO;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,gBAAgB,CAAC;SAC7B,SAAS,CACN,0BAA0B,CAAC,IAAI,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE;QACnE,SAAS;QACT,UAAU;QACV,KAAK;KACR,CAAC,CACL;SACA,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAA;IAEvC,0CAA0C;IAC1C,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAA;IAE/E,OAAO,OAAO,CAAA;AAClB,CAAC;AAED,SAAS,KAAK,CAAC,KAAuB;IAClC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACnC,CAAC;AAED,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC1C,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAA;QACnC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QAChD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACzC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACzC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC5C,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAA;QACnC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QAC1D,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACrC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACvD,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAA;QACnC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;QAC9D,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACvC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAC9C,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAA;QACnC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACpE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QACxC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAA;QACnC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAA;QACxE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAA;IACtF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC5E,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAA;QACnC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QAC/E,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACvC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAA;QACnC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;QACxE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACtD,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QAC/D,MAAM,MAAM,GAAG,aAAa,CAAC,+BAA+B,CAAC,CAAA;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACtC,MAAM,MAAM,GAAG,aAAa,CAAC,iCAAiC,CAAC,CAAA;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA;AAEF,oEAAoE;AACpE,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,CAAA;QACrD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAA;QAEpC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;QAC5B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QAC/D,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QAC5C,GAAG,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QACpC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACpD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;QAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QAE1D,MAAM,CAAE,OAA0C,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvE,MAAM,CAAE,MAAyC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerCompletionCommand(program: Command): void;
3
+ //# sourceMappingURL=completion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA2CnC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkGhE"}
@@ -0,0 +1,121 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAqMnC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoB5D"}
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,5 +1,7 @@
1
1
  import { getFullTwistURL } from '@doist/twist-sdk';
2
+ import { Option } from 'commander';
2
3
  import { getCurrentWorkspaceId } from '../lib/api.js';
4
+ import { withCaseInsensitiveChoices } from '../lib/completion.js';
3
5
  import { formatRelativeDate } from '../lib/dates.js';
4
6
  import { colors, formatJson } from '../lib/output.js';
5
7
  import { getPublicChannelIds, includePrivateChannels } from '../lib/public-channels.js';
@@ -142,7 +144,7 @@ export function registerSearchCommand(program) {
142
144
  .option('--channel <channel-refs>', 'Filter by channels (comma-separated refs)')
143
145
  .option('--author <user-refs>', 'Filter by author (comma-separated IDs)')
144
146
  .option('--to <user-refs>', 'Messages sent TO user (comma-separated IDs)')
145
- .option('--type <type>', 'Filter: threads, messages, or all')
147
+ .addOption(withCaseInsensitiveChoices(new Option('--type <type>', 'Filter: threads, messages, or all'), ['threads', 'messages', 'all']))
146
148
  .option('--title-only', 'Search in thread titles only')
147
149
  .option('--conversation <refs>', 'Limit to conversations (comma-separated refs)')
148
150
  .option('--mention-me', 'Only results mentioning current user')
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../src/commands/thread.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAoVnC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuC5D"}
1
+ {"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../src/commands/thread.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAqV3C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4C5D"}
@@ -1,5 +1,7 @@
1
1
  import chalk from 'chalk';
2
+ import { Option } from 'commander';
2
3
  import { getTwistClient } from '../lib/api.js';
4
+ import { withUnvalidatedChoices } from '../lib/completion.js';
3
5
  import { formatRelativeDate } from '../lib/dates.js';
4
6
  import { openEditor, readStdin } from '../lib/input.js';
5
7
  import { renderMarkdown } from '../lib/markdown.js';
@@ -271,7 +273,7 @@ export function registerThreadCommand(program) {
271
273
  thread
272
274
  .command('reply <thread-ref> [content]')
273
275
  .description('Post a comment to a thread')
274
- .option('--notify <recipients>', 'Notification recipients: EVERYONE, EVERYONE_IN_THREAD, or comma-separated user IDs (default: EVERYONE_IN_THREAD)')
276
+ .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']))
275
277
  .option('--dry-run', 'Show what would be posted without posting')
276
278
  .action(replyToThread);
277
279
  thread
@@ -1 +1 @@
1
- {"version":3,"file":"thread.js","sourceRoot":"","sources":["../../src/commands/thread.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thread.js","sourceRoot":"","sources":["../../src/commands/thread.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,55 +2,36 @@
2
2
  import { program } from 'commander';
3
3
  import pkg from '../package.json' with { type: 'json' };
4
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 loadSearchCommand = async () => (await import('./commands/search.js')).registerSearchCommand;
13
+ const loadReactCommand = async () => (await import('./commands/react.js')).registerReactCommand;
14
+ const loadAuthCommand = async () => (await import('./commands/auth.js')).registerAuthCommand;
15
+ const loadSkillCommand = async () => (await import('./commands/skill.js')).registerSkillCommand;
16
+ const loadViewCommand = async () => (await import('./commands/view.js')).registerViewCommand;
17
+ const loadCompletionCommand = async () => (await import('./commands/completion.js')).registerCompletionCommand;
5
18
  const commands = {
6
- workspace: [
7
- 'Manage workspace',
8
- async () => (await import('./commands/workspace.js')).registerWorkspaceCommand,
9
- ],
10
- user: [
11
- 'Show current user info',
12
- async () => (await import('./commands/user.js')).registerUserCommand,
13
- ],
14
- channel: [
15
- 'List channels in a workspace',
16
- async () => (await import('./commands/channel.js')).registerChannelCommand,
17
- ],
18
- inbox: [
19
- 'Show inbox threads',
20
- async () => (await import('./commands/inbox.js')).registerInboxCommand,
21
- ],
22
- thread: [
23
- 'Thread operations',
24
- async () => (await import('./commands/thread.js')).registerThreadCommand,
25
- ],
26
- conversation: [
27
- 'Conversation (DM/group) operations',
28
- async () => (await import('./commands/conversation.js')).registerConversationCommand,
29
- ],
30
- msg: [
31
- 'Conversation message operations (view, update, delete)',
32
- async () => (await import('./commands/msg.js')).registerMsgCommand,
33
- ],
34
- search: [
35
- 'Search content across a workspace',
36
- async () => (await import('./commands/search.js')).registerSearchCommand,
37
- ],
38
- react: [
39
- 'Add an emoji reaction (target-type: thread, comment, message)',
40
- async () => (await import('./commands/react.js')).registerReactCommand,
41
- ],
42
- auth: [
43
- 'Manage authentication',
44
- async () => (await import('./commands/auth.js')).registerAuthCommand,
45
- ],
46
- skill: [
47
- 'Manage agent skill integrations',
48
- async () => (await import('./commands/skill.js')).registerSkillCommand,
49
- ],
50
- view: [
51
- 'View a Twist entity by URL',
52
- async () => (await import('./commands/view.js')).registerViewCommand,
53
- ],
19
+ workspaces: ['List all workspaces', loadWorkspaceCommand],
20
+ workspace: ['Manage workspace', loadWorkspaceCommand],
21
+ user: ['Show current user info', loadUserCommand],
22
+ users: ['List users in a workspace', loadUserCommand],
23
+ channels: ['List channels in a workspace', loadChannelCommand],
24
+ inbox: ['Show inbox threads', loadInboxCommand],
25
+ thread: ['Thread operations', loadThreadCommand],
26
+ conversation: ['Conversation (DM/group) operations', loadConversationCommand],
27
+ msg: ['Conversation message operations (view, update, delete)', loadMsgCommand],
28
+ search: ['Search content across a workspace', loadSearchCommand],
29
+ react: ['Add an emoji reaction (target-type: thread, comment, message)', loadReactCommand],
30
+ unreact: ['Remove an emoji reaction (target-type: thread, comment, message)', loadReactCommand],
31
+ auth: ['Manage authentication', loadAuthCommand],
32
+ skill: ['Manage agent skill integrations', loadSkillCommand],
33
+ view: ['View a Twist entity by URL', loadViewCommand],
34
+ completion: ['Manage shell completions', loadCompletionCommand],
54
35
  };
55
36
  const commandAliases = {
56
37
  convo: 'conversation',
@@ -76,25 +57,62 @@ for (const [name, [description]] of Object.entries(commands)) {
76
57
  cmd.alias(alias);
77
58
  }
78
59
  }
79
- // Detect which command is being invoked (resolve aliases first)
80
- const commandArg = process.argv
81
- .slice(2)
82
- .find((a) => !a.startsWith('-') && (a in commands || a in commandAliases));
83
- const commandName = commandArg ? (commandAliases[commandArg] ?? commandArg) : undefined;
84
- if (commandName && commands[commandName]) {
85
- // Remove the placeholder so the real registration can take its place
86
- const idx = program.commands.findIndex((c) => c.name() === commandName);
87
- if (idx !== -1)
88
- program.commands.splice(idx, 1);
89
- const loader = commands[commandName][1];
90
- startEarlySpinner();
91
- try {
60
+ // completion-server needs the command tree to walk for completions.
61
+ // Only load the completion module + the specific command being completed
62
+ // (extracted from COMP_LINE) to keep startup fast.
63
+ if (process.argv[2] === 'completion-server') {
64
+ const { parseCompLine } = await import('./lib/completion.js');
65
+ const compWords = parseCompLine(process.env.COMP_LINE ?? '');
66
+ const compCmd = compWords.find((w) => !w.startsWith('-') && (w in commands || w in commandAliases));
67
+ const resolvedCompCmd = compCmd ? (commandAliases[compCmd] ?? compCmd) : undefined;
68
+ const completionLoader = commands.completion[1];
69
+ // Build loader set so command aliases that share a module only register once.
70
+ const loadersToRun = resolvedCompCmd
71
+ ? [
72
+ completionLoader,
73
+ ...(commands[resolvedCompCmd][1] !== completionLoader
74
+ ? [commands[resolvedCompCmd][1]]
75
+ : []),
76
+ ]
77
+ : [...new Set(Object.values(commands).map(([, loader]) => loader))];
78
+ for (const [name, [, loader]] of Object.entries(commands)) {
79
+ if (!loadersToRun.includes(loader))
80
+ continue;
81
+ const idx = program.commands.findIndex((c) => c.name() === name);
82
+ if (idx !== -1)
83
+ program.commands.splice(idx, 1);
84
+ }
85
+ await Promise.all(loadersToRun.map(async (loader) => {
92
86
  const register = await loader();
93
87
  register(program);
94
- }
95
- catch (err) {
96
- stopEarlySpinner();
97
- throw err;
88
+ }));
89
+ }
90
+ else {
91
+ // Detect which command is being invoked (resolve aliases first)
92
+ const commandArg = process.argv
93
+ .slice(2)
94
+ .find((a) => !a.startsWith('-') && (a in commands || a in commandAliases));
95
+ const commandName = commandArg ? (commandAliases[commandArg] ?? commandArg) : undefined;
96
+ if (commandName && commands[commandName]) {
97
+ const loader = commands[commandName][1];
98
+ // Remove all placeholders that map to the same loader to avoid
99
+ // duplicate command registration from alias entries.
100
+ for (const [name, [, entryLoader]] of Object.entries(commands)) {
101
+ if (entryLoader !== loader)
102
+ continue;
103
+ const idx = program.commands.findIndex((c) => c.name() === name);
104
+ if (idx !== -1)
105
+ program.commands.splice(idx, 1);
106
+ }
107
+ startEarlySpinner();
108
+ try {
109
+ const register = await loader();
110
+ register(program);
111
+ }
112
+ catch (err) {
113
+ stopEarlySpinner();
114
+ throw err;
115
+ }
98
116
  }
99
117
  }
100
118
  try {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { Command, Option } from 'commander';
2
+ /**
3
+ * Set argChoices on an option without enabling Commander's built-in
4
+ * validation. The choices are surfaced for shell completions but the
5
+ * option still accepts any value at parse time.
6
+ */
7
+ export declare function withUnvalidatedChoices(opt: Option, values: string[]): Option;
8
+ export declare function withCaseInsensitiveChoices(opt: Option, values: string[]): Option;
9
+ /**
10
+ * Parse COMP_LINE into words, stripping the binary name and the
11
+ * 'completion-server' token that tabtab injects.
12
+ *
13
+ * FIXME: This splits on whitespace and does not handle quoted arguments.
14
+ * This is acceptable for command/flag traversal. It can be improved once
15
+ * tabtab exposes shell-provided tokenized words.
16
+ */
17
+ export declare function parseCompLine(compLine: string): string[];
18
+ export interface CompletionItem {
19
+ name: string;
20
+ description?: string;
21
+ }
22
+ /**
23
+ * Get completions for the current command line context.
24
+ *
25
+ * @param program - The root Commander program with all commands registered
26
+ * @param words - The words on the command line (excluding the binary name)
27
+ * @param current - The current word being typed (may be empty string)
28
+ * @returns Array of completion items
29
+ */
30
+ export declare function getCompletions(program: Command, words: string[], current: string): CompletionItem[];
31
+ //# sourceMappingURL=completion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/lib/completion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEhD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAG5E;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAWhF;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAIxD;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAoBD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC1B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,MAAM,GAChB,cAAc,EAAE,CAsGlB"}
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Set argChoices on an option without enabling Commander's built-in
3
+ * validation. The choices are surfaced for shell completions but the
4
+ * option still accepts any value at parse time.
5
+ */
6
+ export function withUnvalidatedChoices(opt, values) {
7
+ opt.argChoices = values;
8
+ return opt;
9
+ }
10
+ export function withCaseInsensitiveChoices(opt, values) {
11
+ opt.choices(values);
12
+ // choices() sets parseArg internally. Assert so we catch upstream changes.
13
+ const original = opt.parseArg;
14
+ if (!original) {
15
+ throw new Error('Expected Commander choices() to set parseArg');
16
+ }
17
+ opt.parseArg = (arg, prev) => original(arg.toLowerCase(), prev);
18
+ return opt;
19
+ }
20
+ /**
21
+ * Parse COMP_LINE into words, stripping the binary name and the
22
+ * 'completion-server' token that tabtab injects.
23
+ *
24
+ * FIXME: This splits on whitespace and does not handle quoted arguments.
25
+ * This is acceptable for command/flag traversal. It can be improved once
26
+ * tabtab exposes shell-provided tokenized words.
27
+ */
28
+ export function parseCompLine(compLine) {
29
+ const words = compLine.split(/\s+/).slice(1); // remove binary name (tw)
30
+ if (words[0] === 'completion-server')
31
+ words.shift();
32
+ return words;
33
+ }
34
+ /** Names to exclude from completion results (internal commands) */
35
+ const HIDDEN_COMMAND_NAMES = new Set(['completion-server']);
36
+ /**
37
+ * Check if a Commander Option expects a value argument (not a boolean flag).
38
+ */
39
+ function optionExpectsValue(opt) {
40
+ // required means <value>, optional means [value] — both expect a value
41
+ return opt.required || opt.optional;
42
+ }
43
+ /**
44
+ * Find an option by its long or short flag in a command.
45
+ */
46
+ function findOption(cmd, flag) {
47
+ return cmd.options.find((o) => o.long === flag || o.short === flag);
48
+ }
49
+ /**
50
+ * Get completions for the current command line context.
51
+ *
52
+ * @param program - The root Commander program with all commands registered
53
+ * @param words - The words on the command line (excluding the binary name)
54
+ * @param current - The current word being typed (may be empty string)
55
+ * @returns Array of completion items
56
+ */
57
+ export function getCompletions(program, words, current) {
58
+ let activeCmd = program;
59
+ let seenDoubleDash = false;
60
+ const usedOptions = new Set();
61
+ // Walk the words to find the active command context
62
+ let i = 0;
63
+ while (i < words.length) {
64
+ const word = words[i];
65
+ // If we hit the current word (last position), stop walking
66
+ if (i === words.length - 1 && word === current) {
67
+ break;
68
+ }
69
+ if (word === '--') {
70
+ seenDoubleDash = true;
71
+ i++;
72
+ continue;
73
+ }
74
+ if (!seenDoubleDash && word.startsWith('-')) {
75
+ // Handle --flag=value syntax
76
+ const eqIdx = word.indexOf('=');
77
+ const flag = eqIdx > 0 ? word.slice(0, eqIdx) : word;
78
+ usedOptions.add(flag);
79
+ // If this option expects a value and no = was used, consume the next word
80
+ if (eqIdx < 0) {
81
+ const opt = findOption(activeCmd, flag);
82
+ if (opt && optionExpectsValue(opt)) {
83
+ i++; // skip the value word
84
+ }
85
+ }
86
+ i++;
87
+ continue;
88
+ }
89
+ // Try to descend into a subcommand
90
+ const sub = activeCmd.commands.find((c) => c.name() === word || c.aliases().includes(word));
91
+ if (sub) {
92
+ activeCmd = sub;
93
+ usedOptions.clear();
94
+ }
95
+ i++;
96
+ }
97
+ // Check if previous word was an option expecting a value
98
+ if (words.length >= 2) {
99
+ const prevWord = words[words.length - 2];
100
+ if (prevWord?.startsWith('-') && prevWord !== '--') {
101
+ const eqIdx = prevWord.indexOf('=');
102
+ const flag = eqIdx > 0 ? prevWord.slice(0, eqIdx) : prevWord;
103
+ const opt = findOption(activeCmd, flag);
104
+ if (opt && optionExpectsValue(opt) && eqIdx < 0) {
105
+ const enumValues = opt.argChoices;
106
+ if (enumValues) {
107
+ return enumValues.filter((v) => v.startsWith(current)).map((v) => ({ name: v }));
108
+ }
109
+ return [];
110
+ }
111
+ }
112
+ }
113
+ // Handle --flag=<TAB> — suggest values after =
114
+ if (current.includes('=')) {
115
+ const eqIdx = current.indexOf('=');
116
+ const flag = current.slice(0, eqIdx);
117
+ const partial = current.slice(eqIdx + 1);
118
+ const opt = findOption(activeCmd, flag);
119
+ if (opt) {
120
+ const enumValues = opt.argChoices;
121
+ if (enumValues) {
122
+ return enumValues
123
+ .filter((v) => v.startsWith(partial))
124
+ .map((v) => ({ name: `${flag}=${v}` }));
125
+ }
126
+ }
127
+ return [];
128
+ }
129
+ // After --, everything is positional — no more commands or options
130
+ if (seenDoubleDash) {
131
+ return [];
132
+ }
133
+ // If current word starts with -, suggest options
134
+ if (current.startsWith('-')) {
135
+ return getOptionCompletions(activeCmd, current, usedOptions);
136
+ }
137
+ // Suggest subcommands, and if there are none, suggest options instead
138
+ const subcommands = getSubcommandCompletions(activeCmd, current);
139
+ if (subcommands.length > 0) {
140
+ return subcommands;
141
+ }
142
+ return getOptionCompletions(activeCmd, current, usedOptions);
143
+ }
144
+ function getSubcommandCompletions(cmd, prefix) {
145
+ return cmd.commands
146
+ .filter((c) => !c._hidden &&
147
+ !HIDDEN_COMMAND_NAMES.has(c.name()))
148
+ .filter((c) => c.name().startsWith(prefix))
149
+ .map((c) => ({
150
+ name: c.name(),
151
+ description: c.description(),
152
+ }));
153
+ }
154
+ function getOptionCompletions(cmd, prefix, usedOptions) {
155
+ return cmd.options
156
+ .filter((o) => {
157
+ if (!o.long)
158
+ return false;
159
+ if (o.hidden)
160
+ return false;
161
+ // Exclude already-used options
162
+ if (usedOptions.has(o.long))
163
+ return false;
164
+ if (o.short && usedOptions.has(o.short))
165
+ return false;
166
+ return o.long.startsWith(prefix);
167
+ })
168
+ .map((o) => ({
169
+ name: o.long,
170
+ description: o.description,
171
+ }));
172
+ }
173
+ //# sourceMappingURL=completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/lib/completion.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export declare const SKILL_NAME = "twist-cli";
2
2
  export declare const SKILL_DESCRIPTION = "Twist messaging CLI for team communication";
3
- export declare const SKILL_CONTENT = "# Twist CLI Skill\n\nAccess Twist messaging via the `tw` CLI. Use when the user asks about their Twist workspaces, threads, messages, or wants to interact with Twist in any way.\n\n## Setup\n\n```bash\ntw auth login # OAuth login (opens browser)\ntw auth token <your-api-token> # Save API token manually\ntw auth status # Verify authentication\ntw auth logout # Remove saved token\ntw workspaces # List available workspaces\ntw workspace use <ref> # Set current workspace\n```\n\n## View by URL\n\n```bash\ntw view <url> # View any Twist entity by URL\n```\n\nRoutes automatically based on URL structure:\n- Message URL \u2192 `tw msg view`\n- Conversation URL \u2192 `tw conversation view`\n- Thread+comment URL \u2192 `tw thread view` (comment ID extracted from URL)\n- Thread URL \u2192 `tw thread view`\n\nAll target command flags pass through (e.g. `--json`, `--raw`, `--full`).\n\n## Inbox\n\n```bash\ntw inbox # Show inbox threads\ntw inbox --unread # Only unread threads\ntw inbox --channel <filter> # Filter by channel name (fuzzy)\ntw inbox --since <date> # Filter by date (ISO format)\ntw inbox --limit <n> # Max items (default: 50)\n```\n\n## Threads\n\n```bash\ntw thread <thread-ref> # View thread (shorthand for view)\ntw thread view <thread-ref> # View thread with comments\ntw thread view <ref> --comment <id> # View a specific comment\ntw thread view <url-with-/c/id> # Comment ID extracted from URL\ntw thread view <ref> --unread # Show only unread comments\ntw thread view <ref> --context 3 # Include 3 read comments before unread\ntw thread view <ref> --limit 20 # Limit number of comments\ntw thread view <ref> --since <date> # Comments newer than date\ntw thread view <ref> --raw # Show raw markdown\ntw thread reply <ref> \"content\" # Post a comment\ntw thread reply <ref> \"content\" --notify EVERYONE # Notify all workspace members\ntw thread reply <ref> \"content\" --notify 123,id:456 # Notify specific user IDs\ntw thread done <ref> # Archive thread (mark done)\n```\n\nDefault `--notify` is EVERYONE_IN_THREAD. Options: EVERYONE, EVERYONE_IN_THREAD, or comma-separated user ID refs.\n\n## Conversations (DMs/Groups)\n\n```bash\ntw conversation unread # List unread conversations\ntw conversation <conversation-ref> # View conversation (shorthand for view)\ntw conversation view <conversation-ref> # View conversation messages\ntw conversation reply <ref> \"content\" # Send a message\ntw conversation done <ref> # Archive conversation\n```\n\nAlias: `tw convo` works the same as `tw conversation`.\n\n## Conversation Messages\n\n```bash\ntw msg <message-ref> # View a message (shorthand for view)\ntw msg view <message-ref> # View a single conversation message\ntw msg update <ref> \"content\" # Edit a conversation message\ntw msg delete <ref> # Delete a conversation message\n```\n\nAlias: `tw message` works the same as `tw msg`.\n\n## Search\n\n```bash\ntw search \"query\" # Search content\ntw search \"query\" --type threads # Filter: threads, messages, or all\ntw search \"query\" --author <ref> # Filter by author\ntw search \"query\" --to <ref> # Messages sent to user\ntw search \"query\" --title-only # Search thread titles only\ntw search \"query\" --mention-me # Results mentioning current user\ntw search \"query\" --conversation <refs> # Limit to conversations (comma-separated refs)\ntw search \"query\" --since <date> # Content from date\ntw search \"query\" --until <date> # Content until date\ntw search \"query\" --channel <refs> # Filter by channel refs (comma-separated)\ntw search \"query\" --limit <n> # Max results (default: 50)\ntw search \"query\" --cursor <cur> # Pagination cursor\n```\n\n## Users & Channels\n\n```bash\ntw user # Show current user info\ntw users # List workspace users\ntw users --search <text> # Filter by name/email\ntw channels # List workspace channels\n```\n\n## Reactions\n\n```bash\ntw react thread <ref> \uD83D\uDC4D # Add reaction to thread\ntw react comment <ref> +1 # Add reaction (shortcode)\ntw react message <ref> heart # Add reaction to DM message\ntw unreact thread <ref> \uD83D\uDC4D # Remove reaction\n```\n\nSupported shortcodes: +1, -1, heart, tada, smile, laughing, thinking, fire, check, x, eyes, pray, clap, rocket, wave\n\n## Global Options\n\n```bash\n--no-spinner # Disable loading animations\n--progress-jsonl # Machine-readable progress events (JSONL to stderr)\n```\n\n## Output Formats\n\nAll list/view commands support:\n\n```bash\n--json # Output as JSON\n--ndjson # Output as newline-delimited JSON (for streaming)\n--full # Include all fields (default shows essential fields only)\n```\n\n## Reference System\n\nCommands accept flexible references:\n- **Numeric IDs**: `123` or `id:123`\n- **Twist URLs**: Full `https://twist.com/...` URLs (parsed automatically)\n- **Fuzzy names**: For workspaces/users - `\"My Workspace\"` or partial matches\n\n## Common Workflows\n\n**View by URL (auto-routes to the right command):**\n```bash\ntw view https://twist.com/a/1585/ch/100/t/200 # View thread\ntw view https://twist.com/a/1585/ch/100/t/200/c/300 # View comment\ntw view https://twist.com/a/1585/msg/400 # View conversation\ntw view https://twist.com/a/1585/msg/400/m/500 --json # View message as JSON\n```\n\n**Check inbox and respond:**\n```bash\ntw inbox --unread --json\ntw thread view <id> --unread\ntw thread reply <id> \"Thanks, I'll look into this.\"\ntw thread done <id>\n```\n\n**Search and review:**\n```bash\ntw search \"deployment\" --type threads --json\ntw thread view <thread-id>\n```\n\n**Check DMs:**\n```bash\ntw conversation unread --json\ntw conversation view <conversation-id>\ntw conversation reply <id> \"Got it, thanks!\"\n```\n";
4
- export declare const SKILL_FILE_CONTENT = "---\nname: twist-cli\ndescription: Twist messaging CLI for team communication\n---\n\n# Twist CLI Skill\n\nAccess Twist messaging via the `tw` CLI. Use when the user asks about their Twist workspaces, threads, messages, or wants to interact with Twist in any way.\n\n## Setup\n\n```bash\ntw auth login # OAuth login (opens browser)\ntw auth token <your-api-token> # Save API token manually\ntw auth status # Verify authentication\ntw auth logout # Remove saved token\ntw workspaces # List available workspaces\ntw workspace use <ref> # Set current workspace\n```\n\n## View by URL\n\n```bash\ntw view <url> # View any Twist entity by URL\n```\n\nRoutes automatically based on URL structure:\n- Message URL \u2192 `tw msg view`\n- Conversation URL \u2192 `tw conversation view`\n- Thread+comment URL \u2192 `tw thread view` (comment ID extracted from URL)\n- Thread URL \u2192 `tw thread view`\n\nAll target command flags pass through (e.g. `--json`, `--raw`, `--full`).\n\n## Inbox\n\n```bash\ntw inbox # Show inbox threads\ntw inbox --unread # Only unread threads\ntw inbox --channel <filter> # Filter by channel name (fuzzy)\ntw inbox --since <date> # Filter by date (ISO format)\ntw inbox --limit <n> # Max items (default: 50)\n```\n\n## Threads\n\n```bash\ntw thread <thread-ref> # View thread (shorthand for view)\ntw thread view <thread-ref> # View thread with comments\ntw thread view <ref> --comment <id> # View a specific comment\ntw thread view <url-with-/c/id> # Comment ID extracted from URL\ntw thread view <ref> --unread # Show only unread comments\ntw thread view <ref> --context 3 # Include 3 read comments before unread\ntw thread view <ref> --limit 20 # Limit number of comments\ntw thread view <ref> --since <date> # Comments newer than date\ntw thread view <ref> --raw # Show raw markdown\ntw thread reply <ref> \"content\" # Post a comment\ntw thread reply <ref> \"content\" --notify EVERYONE # Notify all workspace members\ntw thread reply <ref> \"content\" --notify 123,id:456 # Notify specific user IDs\ntw thread done <ref> # Archive thread (mark done)\n```\n\nDefault `--notify` is EVERYONE_IN_THREAD. Options: EVERYONE, EVERYONE_IN_THREAD, or comma-separated user ID refs.\n\n## Conversations (DMs/Groups)\n\n```bash\ntw conversation unread # List unread conversations\ntw conversation <conversation-ref> # View conversation (shorthand for view)\ntw conversation view <conversation-ref> # View conversation messages\ntw conversation reply <ref> \"content\" # Send a message\ntw conversation done <ref> # Archive conversation\n```\n\nAlias: `tw convo` works the same as `tw conversation`.\n\n## Conversation Messages\n\n```bash\ntw msg <message-ref> # View a message (shorthand for view)\ntw msg view <message-ref> # View a single conversation message\ntw msg update <ref> \"content\" # Edit a conversation message\ntw msg delete <ref> # Delete a conversation message\n```\n\nAlias: `tw message` works the same as `tw msg`.\n\n## Search\n\n```bash\ntw search \"query\" # Search content\ntw search \"query\" --type threads # Filter: threads, messages, or all\ntw search \"query\" --author <ref> # Filter by author\ntw search \"query\" --to <ref> # Messages sent to user\ntw search \"query\" --title-only # Search thread titles only\ntw search \"query\" --mention-me # Results mentioning current user\ntw search \"query\" --conversation <refs> # Limit to conversations (comma-separated refs)\ntw search \"query\" --since <date> # Content from date\ntw search \"query\" --until <date> # Content until date\ntw search \"query\" --channel <refs> # Filter by channel refs (comma-separated)\ntw search \"query\" --limit <n> # Max results (default: 50)\ntw search \"query\" --cursor <cur> # Pagination cursor\n```\n\n## Users & Channels\n\n```bash\ntw user # Show current user info\ntw users # List workspace users\ntw users --search <text> # Filter by name/email\ntw channels # List workspace channels\n```\n\n## Reactions\n\n```bash\ntw react thread <ref> \uD83D\uDC4D # Add reaction to thread\ntw react comment <ref> +1 # Add reaction (shortcode)\ntw react message <ref> heart # Add reaction to DM message\ntw unreact thread <ref> \uD83D\uDC4D # Remove reaction\n```\n\nSupported shortcodes: +1, -1, heart, tada, smile, laughing, thinking, fire, check, x, eyes, pray, clap, rocket, wave\n\n## Global Options\n\n```bash\n--no-spinner # Disable loading animations\n--progress-jsonl # Machine-readable progress events (JSONL to stderr)\n```\n\n## Output Formats\n\nAll list/view commands support:\n\n```bash\n--json # Output as JSON\n--ndjson # Output as newline-delimited JSON (for streaming)\n--full # Include all fields (default shows essential fields only)\n```\n\n## Reference System\n\nCommands accept flexible references:\n- **Numeric IDs**: `123` or `id:123`\n- **Twist URLs**: Full `https://twist.com/...` URLs (parsed automatically)\n- **Fuzzy names**: For workspaces/users - `\"My Workspace\"` or partial matches\n\n## Common Workflows\n\n**View by URL (auto-routes to the right command):**\n```bash\ntw view https://twist.com/a/1585/ch/100/t/200 # View thread\ntw view https://twist.com/a/1585/ch/100/t/200/c/300 # View comment\ntw view https://twist.com/a/1585/msg/400 # View conversation\ntw view https://twist.com/a/1585/msg/400/m/500 --json # View message as JSON\n```\n\n**Check inbox and respond:**\n```bash\ntw inbox --unread --json\ntw thread view <id> --unread\ntw thread reply <id> \"Thanks, I'll look into this.\"\ntw thread done <id>\n```\n\n**Search and review:**\n```bash\ntw search \"deployment\" --type threads --json\ntw thread view <thread-id>\n```\n\n**Check DMs:**\n```bash\ntw conversation unread --json\ntw conversation view <conversation-id>\ntw conversation reply <id> \"Got it, thanks!\"\n```\n";
3
+ export declare const SKILL_CONTENT = "# Twist CLI Skill\n\nAccess Twist messaging via the `tw` CLI. Use when the user asks about their Twist workspaces, threads, messages, or wants to interact with Twist in any way.\n\n## Setup\n\n```bash\ntw auth login # OAuth login (opens browser)\ntw auth token <your-api-token> # Save API token manually\ntw auth status # Verify authentication\ntw auth logout # Remove saved token\ntw workspaces # List available workspaces\ntw workspace use <ref> # Set current workspace\ntw completion install # Install shell completions\n```\n\n## View by URL\n\n```bash\ntw view <url> # View any Twist entity by URL\n```\n\nRoutes automatically based on URL structure:\n- Message URL \u2192 `tw msg view`\n- Conversation URL \u2192 `tw conversation view`\n- Thread+comment URL \u2192 `tw thread view` (comment ID extracted from URL)\n- Thread URL \u2192 `tw thread view`\n\nAll target command flags pass through (e.g. `--json`, `--raw`, `--full`).\n\n## Inbox\n\n```bash\ntw inbox # Show inbox threads\ntw inbox --unread # Only unread threads\ntw inbox --channel <filter> # Filter by channel name (fuzzy)\ntw inbox --since <date> # Filter by date (ISO format)\ntw inbox --limit <n> # Max items (default: 50)\n```\n\n## Threads\n\n```bash\ntw thread <thread-ref> # View thread (shorthand for view)\ntw thread view <thread-ref> # View thread with comments\ntw thread view <ref> --comment <id> # View a specific comment\ntw thread view <url-with-/c/id> # Comment ID extracted from URL\ntw thread view <ref> --unread # Show only unread comments\ntw thread view <ref> --context 3 # Include 3 read comments before unread\ntw thread view <ref> --limit 20 # Limit number of comments\ntw thread view <ref> --since <date> # Comments newer than date\ntw thread view <ref> --raw # Show raw markdown\ntw thread reply <ref> \"content\" # Post a comment\ntw thread reply <ref> \"content\" --notify EVERYONE # Notify all workspace members\ntw thread reply <ref> \"content\" --notify 123,id:456 # Notify specific user IDs\ntw thread done <ref> # Archive thread (mark done)\n```\n\nDefault `--notify` is EVERYONE_IN_THREAD. Options: EVERYONE, EVERYONE_IN_THREAD, or comma-separated user ID refs.\n\n## Conversations (DMs/Groups)\n\n```bash\ntw conversation unread # List unread conversations\ntw conversation <conversation-ref> # View conversation (shorthand for view)\ntw conversation view <conversation-ref> # View conversation messages\ntw conversation reply <ref> \"content\" # Send a message\ntw conversation done <ref> # Archive conversation\n```\n\nAlias: `tw convo` works the same as `tw conversation`.\n\n## Conversation Messages\n\n```bash\ntw msg <message-ref> # View a message (shorthand for view)\ntw msg view <message-ref> # View a single conversation message\ntw msg update <ref> \"content\" # Edit a conversation message\ntw msg delete <ref> # Delete a conversation message\n```\n\nAlias: `tw message` works the same as `tw msg`.\n\n## Search\n\n```bash\ntw search \"query\" # Search content\ntw search \"query\" --type threads # Filter: threads, messages, or all\ntw search \"query\" --author <ref> # Filter by author\ntw search \"query\" --to <ref> # Messages sent to user\ntw search \"query\" --title-only # Search thread titles only\ntw search \"query\" --mention-me # Results mentioning current user\ntw search \"query\" --conversation <refs> # Limit to conversations (comma-separated refs)\ntw search \"query\" --since <date> # Content from date\ntw search \"query\" --until <date> # Content until date\ntw search \"query\" --channel <refs> # Filter by channel refs (comma-separated)\ntw search \"query\" --limit <n> # Max results (default: 50)\ntw search \"query\" --cursor <cur> # Pagination cursor\n```\n\n## Users & Channels\n\n```bash\ntw user # Show current user info\ntw users # List workspace users\ntw users --search <text> # Filter by name/email\ntw channels # List workspace channels\n```\n\n## Reactions\n\n```bash\ntw react thread <ref> \uD83D\uDC4D # Add reaction to thread\ntw react comment <ref> +1 # Add reaction (shortcode)\ntw react message <ref> heart # Add reaction to DM message\ntw unreact thread <ref> \uD83D\uDC4D # Remove reaction\n```\n\nSupported shortcodes: +1, -1, heart, tada, smile, laughing, thinking, fire, check, x, eyes, pray, clap, rocket, wave\n\n## Shell Completions\n\n```bash\ntw completion install # Install tab completions (prompts for shell)\ntw completion install bash # Install for specific shell\ntw completion install zsh\ntw completion install fish\ntw completion uninstall # Remove completions\n```\n\n## Global Options\n\n```bash\n--no-spinner # Disable loading animations\n--progress-jsonl # Machine-readable progress events (JSONL to stderr)\n```\n\n## Output Formats\n\nAll list/view commands support:\n\n```bash\n--json # Output as JSON\n--ndjson # Output as newline-delimited JSON (for streaming)\n--full # Include all fields (default shows essential fields only)\n```\n\n## Reference System\n\nCommands accept flexible references:\n- **Numeric IDs**: `123` or `id:123`\n- **Twist URLs**: Full `https://twist.com/...` URLs (parsed automatically)\n- **Fuzzy names**: For workspaces/users - `\"My Workspace\"` or partial matches\n\n## Common Workflows\n\n**View by URL (auto-routes to the right command):**\n```bash\ntw view https://twist.com/a/1585/ch/100/t/200 # View thread\ntw view https://twist.com/a/1585/ch/100/t/200/c/300 # View comment\ntw view https://twist.com/a/1585/msg/400 # View conversation\ntw view https://twist.com/a/1585/msg/400/m/500 --json # View message as JSON\n```\n\n**Check inbox and respond:**\n```bash\ntw inbox --unread --json\ntw thread view <id> --unread\ntw thread reply <id> \"Thanks, I'll look into this.\"\ntw thread done <id>\n```\n\n**Search and review:**\n```bash\ntw search \"deployment\" --type threads --json\ntw thread view <thread-id>\n```\n\n**Check DMs:**\n```bash\ntw conversation unread --json\ntw conversation view <conversation-id>\ntw conversation reply <id> \"Got it, thanks!\"\n```\n";
4
+ export declare const SKILL_FILE_CONTENT = "---\nname: twist-cli\ndescription: Twist messaging CLI for team communication\n---\n\n# Twist CLI Skill\n\nAccess Twist messaging via the `tw` CLI. Use when the user asks about their Twist workspaces, threads, messages, or wants to interact with Twist in any way.\n\n## Setup\n\n```bash\ntw auth login # OAuth login (opens browser)\ntw auth token <your-api-token> # Save API token manually\ntw auth status # Verify authentication\ntw auth logout # Remove saved token\ntw workspaces # List available workspaces\ntw workspace use <ref> # Set current workspace\ntw completion install # Install shell completions\n```\n\n## View by URL\n\n```bash\ntw view <url> # View any Twist entity by URL\n```\n\nRoutes automatically based on URL structure:\n- Message URL \u2192 `tw msg view`\n- Conversation URL \u2192 `tw conversation view`\n- Thread+comment URL \u2192 `tw thread view` (comment ID extracted from URL)\n- Thread URL \u2192 `tw thread view`\n\nAll target command flags pass through (e.g. `--json`, `--raw`, `--full`).\n\n## Inbox\n\n```bash\ntw inbox # Show inbox threads\ntw inbox --unread # Only unread threads\ntw inbox --channel <filter> # Filter by channel name (fuzzy)\ntw inbox --since <date> # Filter by date (ISO format)\ntw inbox --limit <n> # Max items (default: 50)\n```\n\n## Threads\n\n```bash\ntw thread <thread-ref> # View thread (shorthand for view)\ntw thread view <thread-ref> # View thread with comments\ntw thread view <ref> --comment <id> # View a specific comment\ntw thread view <url-with-/c/id> # Comment ID extracted from URL\ntw thread view <ref> --unread # Show only unread comments\ntw thread view <ref> --context 3 # Include 3 read comments before unread\ntw thread view <ref> --limit 20 # Limit number of comments\ntw thread view <ref> --since <date> # Comments newer than date\ntw thread view <ref> --raw # Show raw markdown\ntw thread reply <ref> \"content\" # Post a comment\ntw thread reply <ref> \"content\" --notify EVERYONE # Notify all workspace members\ntw thread reply <ref> \"content\" --notify 123,id:456 # Notify specific user IDs\ntw thread done <ref> # Archive thread (mark done)\n```\n\nDefault `--notify` is EVERYONE_IN_THREAD. Options: EVERYONE, EVERYONE_IN_THREAD, or comma-separated user ID refs.\n\n## Conversations (DMs/Groups)\n\n```bash\ntw conversation unread # List unread conversations\ntw conversation <conversation-ref> # View conversation (shorthand for view)\ntw conversation view <conversation-ref> # View conversation messages\ntw conversation reply <ref> \"content\" # Send a message\ntw conversation done <ref> # Archive conversation\n```\n\nAlias: `tw convo` works the same as `tw conversation`.\n\n## Conversation Messages\n\n```bash\ntw msg <message-ref> # View a message (shorthand for view)\ntw msg view <message-ref> # View a single conversation message\ntw msg update <ref> \"content\" # Edit a conversation message\ntw msg delete <ref> # Delete a conversation message\n```\n\nAlias: `tw message` works the same as `tw msg`.\n\n## Search\n\n```bash\ntw search \"query\" # Search content\ntw search \"query\" --type threads # Filter: threads, messages, or all\ntw search \"query\" --author <ref> # Filter by author\ntw search \"query\" --to <ref> # Messages sent to user\ntw search \"query\" --title-only # Search thread titles only\ntw search \"query\" --mention-me # Results mentioning current user\ntw search \"query\" --conversation <refs> # Limit to conversations (comma-separated refs)\ntw search \"query\" --since <date> # Content from date\ntw search \"query\" --until <date> # Content until date\ntw search \"query\" --channel <refs> # Filter by channel refs (comma-separated)\ntw search \"query\" --limit <n> # Max results (default: 50)\ntw search \"query\" --cursor <cur> # Pagination cursor\n```\n\n## Users & Channels\n\n```bash\ntw user # Show current user info\ntw users # List workspace users\ntw users --search <text> # Filter by name/email\ntw channels # List workspace channels\n```\n\n## Reactions\n\n```bash\ntw react thread <ref> \uD83D\uDC4D # Add reaction to thread\ntw react comment <ref> +1 # Add reaction (shortcode)\ntw react message <ref> heart # Add reaction to DM message\ntw unreact thread <ref> \uD83D\uDC4D # Remove reaction\n```\n\nSupported shortcodes: +1, -1, heart, tada, smile, laughing, thinking, fire, check, x, eyes, pray, clap, rocket, wave\n\n## Shell Completions\n\n```bash\ntw completion install # Install tab completions (prompts for shell)\ntw completion install bash # Install for specific shell\ntw completion install zsh\ntw completion install fish\ntw completion uninstall # Remove completions\n```\n\n## Global Options\n\n```bash\n--no-spinner # Disable loading animations\n--progress-jsonl # Machine-readable progress events (JSONL to stderr)\n```\n\n## Output Formats\n\nAll list/view commands support:\n\n```bash\n--json # Output as JSON\n--ndjson # Output as newline-delimited JSON (for streaming)\n--full # Include all fields (default shows essential fields only)\n```\n\n## Reference System\n\nCommands accept flexible references:\n- **Numeric IDs**: `123` or `id:123`\n- **Twist URLs**: Full `https://twist.com/...` URLs (parsed automatically)\n- **Fuzzy names**: For workspaces/users - `\"My Workspace\"` or partial matches\n\n## Common Workflows\n\n**View by URL (auto-routes to the right command):**\n```bash\ntw view https://twist.com/a/1585/ch/100/t/200 # View thread\ntw view https://twist.com/a/1585/ch/100/t/200/c/300 # View comment\ntw view https://twist.com/a/1585/msg/400 # View conversation\ntw view https://twist.com/a/1585/msg/400/m/500 --json # View message as JSON\n```\n\n**Check inbox and respond:**\n```bash\ntw inbox --unread --json\ntw thread view <id> --unread\ntw thread reply <id> \"Thanks, I'll look into this.\"\ntw thread done <id>\n```\n\n**Search and review:**\n```bash\ntw search \"deployment\" --type threads --json\ntw thread view <thread-id>\n```\n\n**Check DMs:**\n```bash\ntw conversation unread --json\ntw conversation view <conversation-id>\ntw conversation reply <id> \"Got it, thanks!\"\n```\n";
5
5
  //# sourceMappingURL=content.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/content.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,cAAc,CAAA;AAErC,eAAO,MAAM,iBAAiB,+CAA+C,CAAA;AAE7E,eAAO,MAAM,aAAa,0/LA6KzB,CAAA;AAED,eAAO,MAAM,kBAAkB,glMAKd,CAAA"}
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/content.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,cAAc,CAAA;AAErC,eAAO,MAAM,iBAAiB,+CAA+C,CAAA;AAE7E,eAAO,MAAM,aAAa,61MAwLzB,CAAA;AAED,eAAO,MAAM,kBAAkB,m7MAKd,CAAA"}
@@ -13,6 +13,7 @@ tw auth status # Verify authentication
13
13
  tw auth logout # Remove saved token
14
14
  tw workspaces # List available workspaces
15
15
  tw workspace use <ref> # Set current workspace
16
+ tw completion install # Install shell completions
16
17
  \`\`\`
17
18
 
18
19
  ## View by URL
@@ -119,6 +120,16 @@ tw unreact thread <ref> 👍 # Remove reaction
119
120
 
120
121
  Supported shortcodes: +1, -1, heart, tada, smile, laughing, thinking, fire, check, x, eyes, pray, clap, rocket, wave
121
122
 
123
+ ## Shell Completions
124
+
125
+ \`\`\`bash
126
+ tw completion install # Install tab completions (prompts for shell)
127
+ tw completion install bash # Install for specific shell
128
+ tw completion install zsh
129
+ tw completion install fish
130
+ tw completion uninstall # Remove completions
131
+ \`\`\`
132
+
122
133
  ## Global Options
123
134
 
124
135
  \`\`\`bash
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/lib/skills/content.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAA;AAErC,MAAM,CAAC,MAAM,iBAAiB,GAAG,4CAA4C,CAAA;AAE7E,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6K5B,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG;QAC1B,UAAU;eACH,iBAAiB;;;EAG9B,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/lib/skills/content.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAA;AAErC,MAAM,CAAC,MAAM,iBAAiB,GAAG,4CAA4C,CAAA;AAE7E,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwL5B,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG;QAC1B,UAAU;eACH,iBAAiB;;;EAG9B,aAAa,EAAE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@doist/twist-cli",
3
- "version": "2.2.0",
3
+ "version": "2.3.0",
4
4
  "description": "TypeScript CLI for Twist",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -48,6 +48,7 @@
48
48
  ],
49
49
  "dependencies": {
50
50
  "@doist/twist-sdk": "2.0.2",
51
+ "@pnpm/tabtab": "0.5.4",
51
52
  "chalk": "5.6.2",
52
53
  "commander": "14.0.2",
53
54
  "marked": "15.0.12",