@doist/twist-cli 2.5.0 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/package.json +3 -3
  2. package/dist/__tests__/auth.test.d.ts +0 -2
  3. package/dist/__tests__/auth.test.d.ts.map +0 -1
  4. package/dist/__tests__/auth.test.js +0 -340
  5. package/dist/__tests__/auth.test.js.map +0 -1
  6. package/dist/__tests__/channel.test.d.ts +0 -2
  7. package/dist/__tests__/channel.test.d.ts.map +0 -1
  8. package/dist/__tests__/channel.test.js +0 -30
  9. package/dist/__tests__/channel.test.js.map +0 -1
  10. package/dist/__tests__/completion.test.d.ts +0 -2
  11. package/dist/__tests__/completion.test.d.ts.map +0 -1
  12. package/dist/__tests__/completion.test.js +0 -106
  13. package/dist/__tests__/completion.test.js.map +0 -1
  14. package/dist/__tests__/conversation.test.d.ts +0 -2
  15. package/dist/__tests__/conversation.test.d.ts.map +0 -1
  16. package/dist/__tests__/conversation.test.js +0 -47
  17. package/dist/__tests__/conversation.test.js.map +0 -1
  18. package/dist/__tests__/inbox.test.d.ts +0 -2
  19. package/dist/__tests__/inbox.test.d.ts.map +0 -1
  20. package/dist/__tests__/inbox.test.js +0 -31
  21. package/dist/__tests__/inbox.test.js.map +0 -1
  22. package/dist/__tests__/lib/dates.test.d.ts +0 -2
  23. package/dist/__tests__/lib/dates.test.d.ts.map +0 -1
  24. package/dist/__tests__/lib/dates.test.js +0 -58
  25. package/dist/__tests__/lib/dates.test.js.map +0 -1
  26. package/dist/__tests__/lib/output.test.d.ts +0 -2
  27. package/dist/__tests__/lib/output.test.d.ts.map +0 -1
  28. package/dist/__tests__/lib/output.test.js +0 -29
  29. package/dist/__tests__/lib/output.test.js.map +0 -1
  30. package/dist/__tests__/lib/public-channels.test.d.ts +0 -2
  31. package/dist/__tests__/lib/public-channels.test.d.ts.map +0 -1
  32. package/dist/__tests__/lib/public-channels.test.js +0 -124
  33. package/dist/__tests__/lib/public-channels.test.js.map +0 -1
  34. package/dist/__tests__/lib/refs.test.d.ts +0 -2
  35. package/dist/__tests__/lib/refs.test.d.ts.map +0 -1
  36. package/dist/__tests__/lib/refs.test.js +0 -191
  37. package/dist/__tests__/lib/refs.test.js.map +0 -1
  38. package/dist/__tests__/msg.test.d.ts +0 -2
  39. package/dist/__tests__/msg.test.d.ts.map +0 -1
  40. package/dist/__tests__/msg.test.js +0 -31
  41. package/dist/__tests__/msg.test.js.map +0 -1
  42. package/dist/__tests__/postinstall.test.d.ts +0 -2
  43. package/dist/__tests__/postinstall.test.d.ts.map +0 -1
  44. package/dist/__tests__/postinstall.test.js +0 -20
  45. package/dist/__tests__/postinstall.test.js.map +0 -1
  46. package/dist/__tests__/progress.test.d.ts +0 -2
  47. package/dist/__tests__/progress.test.d.ts.map +0 -1
  48. package/dist/__tests__/progress.test.js +0 -258
  49. package/dist/__tests__/progress.test.js.map +0 -1
  50. package/dist/__tests__/react.test.d.ts +0 -2
  51. package/dist/__tests__/react.test.d.ts.map +0 -1
  52. package/dist/__tests__/react.test.js +0 -59
  53. package/dist/__tests__/react.test.js.map +0 -1
  54. package/dist/__tests__/search.test.d.ts +0 -2
  55. package/dist/__tests__/search.test.d.ts.map +0 -1
  56. package/dist/__tests__/search.test.js +0 -77
  57. package/dist/__tests__/search.test.js.map +0 -1
  58. package/dist/__tests__/skill.test.d.ts +0 -2
  59. package/dist/__tests__/skill.test.d.ts.map +0 -1
  60. package/dist/__tests__/skill.test.js +0 -278
  61. package/dist/__tests__/skill.test.js.map +0 -1
  62. package/dist/__tests__/spinner.test.d.ts +0 -2
  63. package/dist/__tests__/spinner.test.d.ts.map +0 -1
  64. package/dist/__tests__/spinner.test.js +0 -252
  65. package/dist/__tests__/spinner.test.js.map +0 -1
  66. package/dist/__tests__/thread.test.d.ts +0 -2
  67. package/dist/__tests__/thread.test.d.ts.map +0 -1
  68. package/dist/__tests__/thread.test.js +0 -54
  69. package/dist/__tests__/thread.test.js.map +0 -1
  70. package/dist/__tests__/update.test.d.ts +0 -2
  71. package/dist/__tests__/update.test.d.ts.map +0 -1
  72. package/dist/__tests__/update.test.js +0 -166
  73. package/dist/__tests__/update.test.js.map +0 -1
  74. package/dist/__tests__/user.test.d.ts +0 -2
  75. package/dist/__tests__/user.test.d.ts.map +0 -1
  76. package/dist/__tests__/user.test.js +0 -28
  77. package/dist/__tests__/user.test.js.map +0 -1
  78. package/dist/__tests__/view.test.d.ts +0 -2
  79. package/dist/__tests__/view.test.d.ts.map +0 -1
  80. package/dist/__tests__/view.test.js +0 -68
  81. package/dist/__tests__/view.test.js.map +0 -1
@@ -1,31 +0,0 @@
1
- import { Command } from 'commander';
2
- import { beforeEach, describe, expect, it, vi } from 'vitest';
3
- vi.mock('../lib/api.js', () => ({
4
- getTwistClient: vi.fn(),
5
- getCurrentWorkspaceId: vi.fn().mockResolvedValue(1),
6
- }));
7
- vi.mock('../lib/refs.js', () => ({
8
- resolveWorkspaceRef: vi.fn(),
9
- }));
10
- vi.mock('../lib/public-channels.js', () => ({
11
- includePrivateChannels: vi.fn().mockReturnValue(true),
12
- getPublicChannelIds: vi.fn(),
13
- }));
14
- vi.mock('chalk');
15
- import { registerInboxCommand } from '../commands/inbox.js';
16
- function createProgram() {
17
- const program = new Command();
18
- program.exitOverride();
19
- registerInboxCommand(program);
20
- return program;
21
- }
22
- describe('inbox --workspace conflict', () => {
23
- beforeEach(() => {
24
- vi.clearAllMocks();
25
- });
26
- it('errors when both positional and --workspace are provided', async () => {
27
- const program = createProgram();
28
- await expect(program.parseAsync(['node', 'tw', 'inbox', 'Doist', '--workspace', 'Other'])).rejects.toThrow('Cannot specify workspace both as argument and --workspace flag');
29
- });
30
- });
31
- //# sourceMappingURL=inbox.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inbox.test.js","sourceRoot":"","sources":["../../src/__tests__/inbox.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7D,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;IACvB,qBAAqB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;CACtD,CAAC,CAAC,CAAA;AAEH,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE;CAC/B,CAAC,CAAC,CAAA;AAEH,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,sBAAsB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;IACrD,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE;CAC/B,CAAC,CAAC,CAAA;AAEH,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAEhB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAE3D,SAAS,aAAa;IAClB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;IAC7B,OAAO,CAAC,YAAY,EAAE,CAAA;IACtB,oBAAoB,CAAC,OAAO,CAAC,CAAA;IAC7B,OAAO,OAAO,CAAA;AAClB,CAAC;AAED,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACxC,UAAU,CAAC,GAAG,EAAE;QACZ,EAAE,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,OAAO,GAAG,aAAa,EAAE,CAAA;QAE/B,MAAM,MAAM,CACR,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAC/E,CAAC,OAAO,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAA;IACvF,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=dates.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dates.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/lib/dates.test.ts"],"names":[],"mappings":""}
@@ -1,58 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
- import { formatRelativeDate, parseDate } from '../../lib/dates.js';
3
- describe('formatRelativeDate', () => {
4
- beforeEach(() => {
5
- vi.useFakeTimers();
6
- vi.setSystemTime(new Date('2024-06-15T12:00:00Z'));
7
- });
8
- afterEach(() => {
9
- vi.useRealTimers();
10
- });
11
- it('returns "just now" for times less than a minute ago', () => {
12
- const date = new Date('2024-06-15T11:59:30Z');
13
- expect(formatRelativeDate(date)).toBe('just now');
14
- });
15
- it('returns minutes ago for times less than an hour ago', () => {
16
- expect(formatRelativeDate(new Date('2024-06-15T11:55:00Z'))).toBe('5 minutes ago');
17
- expect(formatRelativeDate(new Date('2024-06-15T11:59:00Z'))).toBe('1 minute ago');
18
- expect(formatRelativeDate(new Date('2024-06-15T11:30:00Z'))).toBe('30 minutes ago');
19
- });
20
- it('returns hours ago for times less than a day ago', () => {
21
- expect(formatRelativeDate(new Date('2024-06-15T10:00:00Z'))).toBe('2 hours ago');
22
- expect(formatRelativeDate(new Date('2024-06-15T11:00:00Z'))).toBe('1 hour ago');
23
- });
24
- it('returns "yesterday" for times 1-2 days ago', () => {
25
- expect(formatRelativeDate(new Date('2024-06-14T12:00:00Z'))).toBe('yesterday');
26
- });
27
- it('returns days ago for times less than a week ago', () => {
28
- expect(formatRelativeDate(new Date('2024-06-12T12:00:00Z'))).toBe('3 days ago');
29
- expect(formatRelativeDate(new Date('2024-06-10T12:00:00Z'))).toBe('5 days ago');
30
- });
31
- it('returns absolute date for older times', () => {
32
- const result = formatRelativeDate(new Date('2024-05-01T12:00:00Z'));
33
- expect(result).toMatch(/May 1/);
34
- });
35
- it('includes year for dates from previous years', () => {
36
- const result = formatRelativeDate(new Date('2023-01-15T12:00:00Z'));
37
- expect(result).toMatch(/Jan 15, 2023/);
38
- });
39
- it('handles string dates', () => {
40
- expect(formatRelativeDate('2024-06-15T11:59:00Z')).toBe('1 minute ago');
41
- });
42
- });
43
- describe('parseDate', () => {
44
- it('parses valid ISO dates', () => {
45
- const result = parseDate('2024-06-15T12:00:00Z');
46
- expect(result).toBeInstanceOf(Date);
47
- expect(result?.toISOString()).toBe('2024-06-15T12:00:00.000Z');
48
- });
49
- it('parses date-only strings', () => {
50
- const result = parseDate('2024-06-15');
51
- expect(result).toBeInstanceOf(Date);
52
- });
53
- it('returns null for invalid dates', () => {
54
- expect(parseDate('invalid')).toBeNull();
55
- expect(parseDate('')).toBeNull();
56
- });
57
- });
58
- //# sourceMappingURL=dates.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dates.test.js","sourceRoot":"","sources":["../../../src/__tests__/lib/dates.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=output.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"output.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/lib/output.test.ts"],"names":[],"mappings":""}
@@ -1,29 +0,0 @@
1
- import { afterEach, describe, expect, it } from 'vitest';
2
- import { isAccessible } from '../../lib/output.js';
3
- describe('isAccessible', () => {
4
- afterEach(() => {
5
- delete process.env.TW_ACCESSIBLE;
6
- // Remove --accessible from argv if added
7
- const idx = process.argv.indexOf('--accessible');
8
- if (idx !== -1)
9
- process.argv.splice(idx, 1);
10
- });
11
- it('returns false by default', () => {
12
- expect(isAccessible()).toBe(false);
13
- });
14
- it('returns true when TW_ACCESSIBLE=1', () => {
15
- process.env.TW_ACCESSIBLE = '1';
16
- expect(isAccessible()).toBe(true);
17
- });
18
- it('returns false when TW_ACCESSIBLE is set to other values', () => {
19
- process.env.TW_ACCESSIBLE = '0';
20
- expect(isAccessible()).toBe(false);
21
- process.env.TW_ACCESSIBLE = 'true';
22
- expect(isAccessible()).toBe(false);
23
- });
24
- it('returns true when --accessible is in argv', () => {
25
- process.argv.push('--accessible');
26
- expect(isAccessible()).toBe(true);
27
- });
28
- });
29
- //# sourceMappingURL=output.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"output.test.js","sourceRoot":"","sources":["../../../src/__tests__/lib/output.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,SAAS,CAAC,GAAG,EAAE;QACX,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAA;QAChC,yCAAyC;QACzC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QAChD,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACzC,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,GAAG,CAAA;QAC/B,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QAC/D,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,GAAG,CAAA;QAC/B,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAClC,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,MAAM,CAAA;QAClC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACjD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACjC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=public-channels.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"public-channels.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/lib/public-channels.test.ts"],"names":[],"mappings":""}
@@ -1,124 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
- vi.mock('../../lib/api.js', () => ({
3
- getTwistClient: vi.fn(),
4
- }));
5
- import { getTwistClient } from '../../lib/api.js';
6
- import { assertChannelIsPublic, clearPublicChannelCache, getPublicChannelIds, includePrivateChannels, } from '../../lib/public-channels.js';
7
- const mockGetTwistClient = vi.mocked(getTwistClient);
8
- function makeMockChannels(channels) {
9
- return Promise.resolve({
10
- channels: {
11
- getChannels: vi.fn().mockResolvedValue(channels),
12
- },
13
- });
14
- }
15
- describe('includePrivateChannels', () => {
16
- const originalArgv = process.argv;
17
- const originalEnv = process.env.TWIST_INCLUDE_PRIVATE_CHANNELS;
18
- beforeEach(() => {
19
- process.argv = ['node', 'tw'];
20
- delete process.env.TWIST_INCLUDE_PRIVATE_CHANNELS;
21
- });
22
- afterEach(() => {
23
- process.argv = originalArgv;
24
- if (originalEnv !== undefined) {
25
- process.env.TWIST_INCLUDE_PRIVATE_CHANNELS = originalEnv;
26
- }
27
- else {
28
- delete process.env.TWIST_INCLUDE_PRIVATE_CHANNELS;
29
- }
30
- });
31
- it('returns false by default (private channels hidden)', () => {
32
- expect(includePrivateChannels()).toBe(false);
33
- });
34
- it('returns true when --include-private-channels is in argv', () => {
35
- process.argv = ['node', 'tw', 'channels', '--include-private-channels'];
36
- expect(includePrivateChannels()).toBe(true);
37
- });
38
- it('returns true when TWIST_INCLUDE_PRIVATE_CHANNELS=1', () => {
39
- process.env.TWIST_INCLUDE_PRIVATE_CHANNELS = '1';
40
- expect(includePrivateChannels()).toBe(true);
41
- });
42
- it('returns true when TWIST_INCLUDE_PRIVATE_CHANNELS=true', () => {
43
- process.env.TWIST_INCLUDE_PRIVATE_CHANNELS = 'true';
44
- expect(includePrivateChannels()).toBe(true);
45
- });
46
- it('returns false for other env values', () => {
47
- process.env.TWIST_INCLUDE_PRIVATE_CHANNELS = '0';
48
- expect(includePrivateChannels()).toBe(false);
49
- process.env.TWIST_INCLUDE_PRIVATE_CHANNELS = 'false';
50
- expect(includePrivateChannels()).toBe(false);
51
- process.env.TWIST_INCLUDE_PRIVATE_CHANNELS = '';
52
- expect(includePrivateChannels()).toBe(false);
53
- });
54
- });
55
- describe('getPublicChannelIds', () => {
56
- beforeEach(() => {
57
- clearPublicChannelCache();
58
- });
59
- it('returns only public channel IDs', async () => {
60
- mockGetTwistClient.mockImplementation(() => makeMockChannels([
61
- { id: 1, public: true },
62
- { id: 2, public: false },
63
- { id: 3, public: true },
64
- ]));
65
- const ids = await getPublicChannelIds(100);
66
- expect(ids).toEqual(new Set([1, 3]));
67
- });
68
- it('caches results per workspace', async () => {
69
- const getChannels = vi.fn().mockResolvedValue([{ id: 1, public: true }]);
70
- mockGetTwistClient.mockResolvedValue({
71
- channels: { getChannels },
72
- });
73
- await getPublicChannelIds(100);
74
- await getPublicChannelIds(100);
75
- expect(getChannels).toHaveBeenCalledTimes(1);
76
- });
77
- it('fetches separately for different workspaces', async () => {
78
- const getChannels = vi.fn().mockResolvedValue([{ id: 1, public: true }]);
79
- mockGetTwistClient.mockResolvedValue({
80
- channels: { getChannels },
81
- });
82
- await getPublicChannelIds(100);
83
- await getPublicChannelIds(200);
84
- expect(getChannels).toHaveBeenCalledTimes(2);
85
- });
86
- });
87
- describe('assertChannelIsPublic', () => {
88
- const originalArgv = process.argv;
89
- const originalEnv = process.env.TWIST_INCLUDE_PRIVATE_CHANNELS;
90
- beforeEach(() => {
91
- clearPublicChannelCache();
92
- process.argv = ['node', 'tw'];
93
- delete process.env.TWIST_INCLUDE_PRIVATE_CHANNELS;
94
- });
95
- afterEach(() => {
96
- process.argv = originalArgv;
97
- if (originalEnv !== undefined) {
98
- process.env.TWIST_INCLUDE_PRIVATE_CHANNELS = originalEnv;
99
- }
100
- else {
101
- delete process.env.TWIST_INCLUDE_PRIVATE_CHANNELS;
102
- }
103
- });
104
- it('throws for private channels by default', async () => {
105
- mockGetTwistClient.mockImplementation(() => makeMockChannels([
106
- { id: 5, public: true },
107
- { id: 6, public: false },
108
- ]));
109
- await expect(assertChannelIsPublic(6, 100)).rejects.toThrow('private channel');
110
- });
111
- it('allows public channels by default', async () => {
112
- mockGetTwistClient.mockImplementation(() => makeMockChannels([{ id: 5, public: true }]));
113
- await expect(assertChannelIsPublic(5, 100)).resolves.toBeUndefined();
114
- });
115
- it('allows private channels when --include-private-channels is set', async () => {
116
- process.argv = ['node', 'tw', '--include-private-channels'];
117
- await expect(assertChannelIsPublic(999, 100)).resolves.toBeUndefined();
118
- });
119
- it('allows private channels when env var is set', async () => {
120
- process.env.TWIST_INCLUDE_PRIVATE_CHANNELS = '1';
121
- await expect(assertChannelIsPublic(999, 100)).resolves.toBeUndefined();
122
- });
123
- });
124
- //# sourceMappingURL=public-channels.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"public-channels.test.js","sourceRoot":"","sources":["../../../src/__tests__/lib/public-channels.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=refs.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refs.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/lib/refs.test.ts"],"names":[],"mappings":""}
@@ -1,191 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { classifyTwistUrl, extractId, isIdRef, looksLikeRawId, parseRef, parseTwistUrl, resolveChannelId, resolveCommentId, resolveConversationId, resolveMessageId, resolveThreadId, } from '../../lib/refs.js';
3
- describe('isIdRef', () => {
4
- it('returns true for id: prefixed strings', () => {
5
- expect(isIdRef('id:123')).toBe(true);
6
- expect(isIdRef('id:456789')).toBe(true);
7
- });
8
- it('returns false for non-id refs', () => {
9
- expect(isIdRef('123')).toBe(false);
10
- expect(isIdRef('workspace-name')).toBe(false);
11
- expect(isIdRef('https://twist.com/a/123')).toBe(false);
12
- });
13
- });
14
- describe('extractId', () => {
15
- it('extracts ID from id: prefix', () => {
16
- expect(extractId('id:123')).toBe(123);
17
- expect(extractId('id:456789')).toBe(456789);
18
- });
19
- it('parses bare numbers', () => {
20
- expect(extractId('123')).toBe(123);
21
- });
22
- it('accepts whitespace around IDs', () => {
23
- expect(extractId(' 123 ')).toBe(123);
24
- expect(extractId('id: 456')).toBe(456);
25
- });
26
- it('throws on invalid input', () => {
27
- expect(() => extractId('invalid')).toThrow('Invalid ID');
28
- expect(() => extractId('id:abc')).toThrow('Invalid ID');
29
- expect(() => extractId('id:123abc')).toThrow('Invalid ID');
30
- });
31
- });
32
- describe('looksLikeRawId', () => {
33
- it('detects numeric strings', () => {
34
- expect(looksLikeRawId('123456')).toBe(true);
35
- });
36
- it('detects alphanumeric strings', () => {
37
- expect(looksLikeRawId('abc123')).toBe(true);
38
- });
39
- it('rejects plain names and spaces', () => {
40
- expect(looksLikeRawId('workspace')).toBe(false);
41
- expect(looksLikeRawId('workspace one')).toBe(false);
42
- });
43
- });
44
- describe('parseTwistUrl', () => {
45
- it('parses workspace URL', () => {
46
- const result = parseTwistUrl('https://twist.com/a/12345');
47
- expect(result).toEqual({ workspaceId: 12345 });
48
- });
49
- it('parses channel URL', () => {
50
- const result = parseTwistUrl('https://twist.com/a/12345/ch/67890');
51
- expect(result).toEqual({ workspaceId: 12345, channelId: 67890 });
52
- });
53
- it('parses thread URL', () => {
54
- const result = parseTwistUrl('https://twist.com/a/12345/ch/67890/t/111');
55
- expect(result).toEqual({ workspaceId: 12345, channelId: 67890, threadId: 111 });
56
- });
57
- it('parses thread with comment URL', () => {
58
- const result = parseTwistUrl('https://twist.com/a/12345/ch/67890/t/111/c/222');
59
- expect(result).toEqual({
60
- workspaceId: 12345,
61
- channelId: 67890,
62
- threadId: 111,
63
- commentId: 222,
64
- });
65
- });
66
- it('parses conversation URL', () => {
67
- const result = parseTwistUrl('https://twist.com/a/12345/msg/333');
68
- expect(result).toEqual({ workspaceId: 12345, conversationId: 333 });
69
- });
70
- it('parses message URL', () => {
71
- const result = parseTwistUrl('https://twist.com/a/12345/msg/333/m/444');
72
- expect(result).toEqual({ workspaceId: 12345, conversationId: 333, messageId: 444 });
73
- });
74
- it('returns null for non-twist URLs', () => {
75
- expect(parseTwistUrl('https://google.com')).toBeNull();
76
- expect(parseTwistUrl('https://example.com/a/123')).toBeNull();
77
- });
78
- it('returns null for invalid URLs', () => {
79
- expect(parseTwistUrl('not-a-url')).toBeNull();
80
- });
81
- });
82
- describe('parseRef', () => {
83
- it('parses id: refs', () => {
84
- expect(parseRef('id:123')).toEqual({ type: 'id', id: 123 });
85
- });
86
- it('parses bare numbers', () => {
87
- expect(parseRef('456')).toEqual({ type: 'id', id: 456 });
88
- });
89
- it('parses URLs', () => {
90
- const result = parseRef('https://twist.com/a/12345/ch/67890/t/111');
91
- expect(result).toEqual({
92
- type: 'url',
93
- parsed: { workspaceId: 12345, channelId: 67890, threadId: 111 },
94
- });
95
- });
96
- it('parses names', () => {
97
- expect(parseRef('My Workspace')).toEqual({ type: 'name', name: 'My Workspace' });
98
- });
99
- it('trims surrounding whitespace', () => {
100
- expect(parseRef(' 456 ')).toEqual({ type: 'id', id: 456 });
101
- expect(parseRef(' My Workspace ')).toEqual({ type: 'name', name: 'My Workspace' });
102
- });
103
- });
104
- describe('resolveThreadId', () => {
105
- it('resolves id: refs', () => {
106
- expect(resolveThreadId('id:123')).toBe(123);
107
- });
108
- it('resolves bare numbers', () => {
109
- expect(resolveThreadId('456')).toBe(456);
110
- });
111
- it('resolves thread URLs', () => {
112
- expect(resolveThreadId('https://twist.com/a/12345/ch/67890/t/111')).toBe(111);
113
- });
114
- it('resolves thread URLs with comment suffix', () => {
115
- expect(resolveThreadId('https://twist.com/a/12345/ch/67890/t/111/c/222')).toBe(111);
116
- });
117
- it('throws on invalid refs', () => {
118
- expect(() => resolveThreadId('invalid-name')).toThrow('Invalid thread reference');
119
- });
120
- });
121
- describe('resolveCommentId', () => {
122
- it('resolves id: refs', () => {
123
- expect(resolveCommentId('id:222')).toBe(222);
124
- });
125
- it('resolves comment URLs', () => {
126
- expect(resolveCommentId('https://twist.com/a/12345/ch/67890/t/111/c/222')).toBe(222);
127
- });
128
- });
129
- describe('resolveChannelId', () => {
130
- it('resolves id: refs', () => {
131
- expect(resolveChannelId('id:67890')).toBe(67890);
132
- });
133
- it('resolves channel URLs', () => {
134
- expect(resolveChannelId('https://twist.com/a/12345/ch/67890')).toBe(67890);
135
- });
136
- });
137
- describe('resolveConversationId', () => {
138
- it('resolves id: refs', () => {
139
- expect(resolveConversationId('id:333')).toBe(333);
140
- });
141
- it('resolves conversation URLs', () => {
142
- expect(resolveConversationId('https://twist.com/a/12345/msg/333')).toBe(333);
143
- });
144
- });
145
- describe('resolveMessageId', () => {
146
- it('resolves id: refs', () => {
147
- expect(resolveMessageId('id:444')).toBe(444);
148
- });
149
- it('resolves message URLs', () => {
150
- expect(resolveMessageId('https://twist.com/a/12345/msg/333/m/444')).toBe(444);
151
- });
152
- });
153
- describe('classifyTwistUrl', () => {
154
- it('classifies thread URL', () => {
155
- expect(classifyTwistUrl('https://twist.com/a/20/ch/100/t/200')).toEqual({
156
- entityType: 'thread',
157
- url: 'https://twist.com/a/20/ch/100/t/200',
158
- });
159
- });
160
- it('classifies thread+comment URL as comment', () => {
161
- expect(classifyTwistUrl('https://twist.com/a/20/ch/100/t/200/c/300')).toEqual({
162
- entityType: 'comment',
163
- url: 'https://twist.com/a/20/ch/100/t/200/c/300',
164
- });
165
- });
166
- it('classifies conversation URL', () => {
167
- expect(classifyTwistUrl('https://twist.com/a/20/msg/400')).toEqual({
168
- entityType: 'conversation',
169
- url: 'https://twist.com/a/20/msg/400',
170
- });
171
- });
172
- it('classifies message URL', () => {
173
- expect(classifyTwistUrl('https://twist.com/a/20/msg/400/m/500')).toEqual({
174
- entityType: 'message',
175
- url: 'https://twist.com/a/20/msg/400/m/500',
176
- });
177
- });
178
- it('returns null for workspace-only URL', () => {
179
- expect(classifyTwistUrl('https://twist.com/a/20')).toBeNull();
180
- });
181
- it('returns null for channel-only URL', () => {
182
- expect(classifyTwistUrl('https://twist.com/a/20/ch/100')).toBeNull();
183
- });
184
- it('returns null for non-Twist URL', () => {
185
- expect(classifyTwistUrl('https://google.com/a/20/t/200')).toBeNull();
186
- });
187
- it('returns null for invalid string', () => {
188
- expect(classifyTwistUrl('not-a-url')).toBeNull();
189
- });
190
- });
191
- //# sourceMappingURL=refs.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refs.test.js","sourceRoot":"","sources":["../../../src/__tests__/lib/refs.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=msg.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"msg.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/msg.test.ts"],"names":[],"mappings":""}
@@ -1,31 +0,0 @@
1
- import { Command } from 'commander';
2
- import { beforeEach, describe, expect, it, vi } from 'vitest';
3
- vi.mock('../lib/api.js', () => ({
4
- getTwistClient: vi.fn().mockRejectedValue(new Error('MOCK_API_REACHED')),
5
- }));
6
- vi.mock('../lib/refs.js', () => ({
7
- resolveMessageId: vi.fn().mockReturnValue(200),
8
- }));
9
- vi.mock('../lib/markdown.js', () => ({
10
- renderMarkdown: vi.fn((text) => text),
11
- }));
12
- vi.mock('chalk');
13
- import { registerMsgCommand } from '../commands/msg.js';
14
- function createProgram() {
15
- const program = new Command();
16
- program.exitOverride();
17
- registerMsgCommand(program);
18
- return program;
19
- }
20
- describe('msg implicit view', () => {
21
- beforeEach(() => {
22
- vi.clearAllMocks();
23
- });
24
- it('tw msg <ref> routes to view (not unknown command)', async () => {
25
- const program = createProgram();
26
- const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
27
- await expect(program.parseAsync(['node', 'tw', 'msg', '200'])).rejects.toThrow('MOCK_API_REACHED');
28
- consoleSpy.mockRestore();
29
- });
30
- });
31
- //# sourceMappingURL=msg.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"msg.test.js","sourceRoot":"","sources":["../../src/__tests__/msg.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7D,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;CAC3E,CAAC,CAAC,CAAA;AAEH,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC;CACjD,CAAC,CAAC,CAAA;AAEH,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC;CAChD,CAAC,CAAC,CAAA;AAEH,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAEhB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAEvD,SAAS,aAAa;IAClB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;IAC7B,OAAO,CAAC,YAAY,EAAE,CAAA;IACtB,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,OAAO,CAAA;AAClB,CAAC;AAED,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,UAAU,CAAC,GAAG,EAAE;QACZ,EAAE,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,OAAO,GAAG,aAAa,EAAE,CAAA;QAC/B,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAExE,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC1E,kBAAkB,CACrB,CAAA;QAED,UAAU,CAAC,WAAW,EAAE,CAAA;IAC5B,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=postinstall.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"postinstall.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/postinstall.test.ts"],"names":[],"mappings":""}
@@ -1,20 +0,0 @@
1
- import { beforeEach, describe, expect, it, vi } from 'vitest';
2
- vi.mock('../lib/skills/update-installed.js', () => ({
3
- updateAllInstalledSkills: vi.fn().mockResolvedValue({ updated: [], skipped: [], errors: [] }),
4
- }));
5
- describe('postinstall', () => {
6
- beforeEach(() => {
7
- vi.resetModules();
8
- });
9
- it('calls updateAllInstalledSkills with local: false', async () => {
10
- const { updateAllInstalledSkills } = await import('../lib/skills/update-installed.js');
11
- await import('../postinstall.js');
12
- expect(updateAllInstalledSkills).toHaveBeenCalledWith({ local: false });
13
- });
14
- it('swallows errors', async () => {
15
- const { updateAllInstalledSkills } = await import('../lib/skills/update-installed.js');
16
- vi.mocked(updateAllInstalledSkills).mockRejectedValueOnce(new Error('fail'));
17
- await expect(import('../postinstall.js')).resolves.not.toThrow();
18
- });
19
- });
20
- //# sourceMappingURL=postinstall.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"postinstall.test.js","sourceRoot":"","sources":["../../src/__tests__/postinstall.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7D,EAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE,CAAC,CAAC;IAChD,wBAAwB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;CAChG,CAAC,CAAC,CAAA;AAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,UAAU,CAAC,GAAG,EAAE;QACZ,EAAE,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAA;QACtF,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;QACjC,MAAM,CAAC,wBAAwB,CAAC,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAA;QACtF,EAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QAC5E,MAAM,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;IACpE,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=progress.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"progress.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/progress.test.ts"],"names":[],"mappings":""}