@doist/twist-cli 2.23.1 → 2.23.2

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 (136) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/commands/auth/status.d.ts.map +1 -1
  3. package/dist/commands/auth/status.js +28 -24
  4. package/dist/commands/auth/status.js.map +1 -1
  5. package/dist/commands/auth/token.d.ts.map +1 -1
  6. package/dist/commands/auth/token.js +4 -7
  7. package/dist/commands/auth/token.js.map +1 -1
  8. package/dist/commands/away/helpers.d.ts.map +1 -1
  9. package/dist/commands/away/helpers.js +2 -4
  10. package/dist/commands/away/helpers.js.map +1 -1
  11. package/dist/commands/away/set.d.ts.map +1 -1
  12. package/dist/commands/away/set.js +2 -2
  13. package/dist/commands/away/set.js.map +1 -1
  14. package/dist/commands/changelog.d.ts.map +1 -1
  15. package/dist/commands/changelog.js +3 -6
  16. package/dist/commands/changelog.js.map +1 -1
  17. package/dist/commands/channel.d.ts.map +1 -1
  18. package/dist/commands/channel.js +3 -2
  19. package/dist/commands/channel.js.map +1 -1
  20. package/dist/commands/comment/update.d.ts.map +1 -1
  21. package/dist/commands/comment/update.js +2 -3
  22. package/dist/commands/comment/update.js.map +1 -1
  23. package/dist/commands/completion/install.d.ts.map +1 -1
  24. package/dist/commands/completion/install.js +2 -3
  25. package/dist/commands/completion/install.js.map +1 -1
  26. package/dist/commands/conversation/helpers.d.ts.map +1 -1
  27. package/dist/commands/conversation/helpers.js +4 -3
  28. package/dist/commands/conversation/helpers.js.map +1 -1
  29. package/dist/commands/conversation/reply.d.ts.map +1 -1
  30. package/dist/commands/conversation/reply.js +2 -3
  31. package/dist/commands/conversation/reply.js.map +1 -1
  32. package/dist/commands/conversation/unread.d.ts.map +1 -1
  33. package/dist/commands/conversation/unread.js +4 -2
  34. package/dist/commands/conversation/unread.js.map +1 -1
  35. package/dist/commands/conversation/with.d.ts.map +1 -1
  36. package/dist/commands/conversation/with.js +36 -41
  37. package/dist/commands/conversation/with.js.map +1 -1
  38. package/dist/commands/inbox.d.ts.map +1 -1
  39. package/dist/commands/inbox.js +5 -3
  40. package/dist/commands/inbox.js.map +1 -1
  41. package/dist/commands/msg/update.d.ts.map +1 -1
  42. package/dist/commands/msg/update.js +2 -3
  43. package/dist/commands/msg/update.js.map +1 -1
  44. package/dist/commands/react.d.ts.map +1 -1
  45. package/dist/commands/react.js +3 -4
  46. package/dist/commands/react.js.map +1 -1
  47. package/dist/commands/search.d.ts.map +1 -1
  48. package/dist/commands/search.js +18 -31
  49. package/dist/commands/search.js.map +1 -1
  50. package/dist/commands/skill/install.d.ts.map +1 -1
  51. package/dist/commands/skill/install.js +8 -13
  52. package/dist/commands/skill/install.js.map +1 -1
  53. package/dist/commands/skill/uninstall.d.ts.map +1 -1
  54. package/dist/commands/skill/uninstall.js +7 -11
  55. package/dist/commands/skill/uninstall.js.map +1 -1
  56. package/dist/commands/skill/update.d.ts.map +1 -1
  57. package/dist/commands/skill/update.js +9 -14
  58. package/dist/commands/skill/update.js.map +1 -1
  59. package/dist/commands/thread/create.d.ts.map +1 -1
  60. package/dist/commands/thread/create.js +2 -3
  61. package/dist/commands/thread/create.js.map +1 -1
  62. package/dist/commands/thread/delete.d.ts.map +1 -1
  63. package/dist/commands/thread/delete.js +3 -6
  64. package/dist/commands/thread/delete.js.map +1 -1
  65. package/dist/commands/thread/helpers.d.ts.map +1 -1
  66. package/dist/commands/thread/helpers.js +2 -1
  67. package/dist/commands/thread/helpers.js.map +1 -1
  68. package/dist/commands/thread/mute.d.ts.map +1 -1
  69. package/dist/commands/thread/mute.js +2 -2
  70. package/dist/commands/thread/mute.js.map +1 -1
  71. package/dist/commands/thread/reply.d.ts.map +1 -1
  72. package/dist/commands/thread/reply.js +3 -6
  73. package/dist/commands/thread/reply.js.map +1 -1
  74. package/dist/commands/update/action.d.ts.map +1 -1
  75. package/dist/commands/update/action.js +13 -20
  76. package/dist/commands/update/action.js.map +1 -1
  77. package/dist/commands/update/switch.d.ts.map +1 -1
  78. package/dist/commands/update/switch.js +3 -6
  79. package/dist/commands/update/switch.js.map +1 -1
  80. package/dist/commands/user.d.ts.map +1 -1
  81. package/dist/commands/user.js +2 -1
  82. package/dist/commands/user.js.map +1 -1
  83. package/dist/commands/view.d.ts.map +1 -1
  84. package/dist/commands/view.js +3 -2
  85. package/dist/commands/view.js.map +1 -1
  86. package/dist/index.js +19 -5
  87. package/dist/index.js.map +1 -1
  88. package/dist/lib/api.d.ts.map +1 -1
  89. package/dist/lib/api.js +3 -2
  90. package/dist/lib/api.js.map +1 -1
  91. package/dist/lib/auth.d.ts +4 -0
  92. package/dist/lib/auth.d.ts.map +1 -1
  93. package/dist/lib/auth.js +10 -3
  94. package/dist/lib/auth.js.map +1 -1
  95. package/dist/lib/errors.d.ts +14 -0
  96. package/dist/lib/errors.d.ts.map +1 -0
  97. package/dist/lib/errors.js +13 -0
  98. package/dist/lib/errors.js.map +1 -0
  99. package/dist/lib/global-args.d.ts +38 -0
  100. package/dist/lib/global-args.d.ts.map +1 -0
  101. package/dist/lib/global-args.js +100 -0
  102. package/dist/lib/global-args.js.map +1 -0
  103. package/dist/lib/input.d.ts +0 -1
  104. package/dist/lib/input.d.ts.map +1 -1
  105. package/dist/lib/input.js +1 -8
  106. package/dist/lib/input.js.map +1 -1
  107. package/dist/lib/oauth.d.ts.map +1 -1
  108. package/dist/lib/oauth.js +14 -9
  109. package/dist/lib/oauth.js.map +1 -1
  110. package/dist/lib/output.d.ts +4 -1
  111. package/dist/lib/output.d.ts.map +1 -1
  112. package/dist/lib/output.js +23 -5
  113. package/dist/lib/output.js.map +1 -1
  114. package/dist/lib/permissions.d.ts.map +1 -1
  115. package/dist/lib/permissions.js +2 -1
  116. package/dist/lib/permissions.js.map +1 -1
  117. package/dist/lib/progress.d.ts.map +1 -1
  118. package/dist/lib/progress.js +3 -18
  119. package/dist/lib/progress.js.map +1 -1
  120. package/dist/lib/public-channels.d.ts +0 -1
  121. package/dist/lib/public-channels.d.ts.map +1 -1
  122. package/dist/lib/public-channels.js +5 -8
  123. package/dist/lib/public-channels.js.map +1 -1
  124. package/dist/lib/refs.d.ts.map +1 -1
  125. package/dist/lib/refs.js +15 -18
  126. package/dist/lib/refs.js.map +1 -1
  127. package/dist/lib/search-api.d.ts.map +1 -1
  128. package/dist/lib/search-api.js +2 -1
  129. package/dist/lib/search-api.js.map +1 -1
  130. package/dist/lib/skills/create-installer.d.ts.map +1 -1
  131. package/dist/lib/skills/create-installer.js +5 -4
  132. package/dist/lib/skills/create-installer.js.map +1 -1
  133. package/dist/lib/spinner.d.ts.map +1 -1
  134. package/dist/lib/spinner.js +1 -22
  135. package/dist/lib/spinner.js.map +1 -1
  136. package/package.json +1 -1
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Centralized, type-safe parsing of global CLI flags.
3
+ *
4
+ * Replaces scattered `process.argv.includes()` checks with a single parse
5
+ * that correctly handles `--flag=value` variants and avoids false-positives
6
+ * from option values.
7
+ *
8
+ * The result is lazily cached on first access — safe to call before or after
9
+ * Commander's `parseAsync()` since it reads `process.argv` directly.
10
+ */
11
+ /**
12
+ * Parse well-known global flags from an argv array.
13
+ *
14
+ * Pure function — pass an explicit array for testing, or omit to use
15
+ * `process.argv`.
16
+ */
17
+ export function parseGlobalArgs(argv) {
18
+ const args = argv ?? process.argv;
19
+ const has = (flag) => args.includes(flag) || args.some((arg) => arg.startsWith(`${flag}=`));
20
+ // Parse --progress-jsonl with optional path value.
21
+ // Supports: --progress-jsonl, --progress-jsonl=path, --progress-jsonl path
22
+ // "Last one wins" when specified multiple times.
23
+ const progressIndices = args
24
+ .map((arg, index) => ({ arg, index }))
25
+ .filter(({ arg }) => arg === '--progress-jsonl' || arg.startsWith('--progress-jsonl='));
26
+ let progressJsonlPath;
27
+ if (progressIndices.length > 0) {
28
+ const { arg, index } = progressIndices[progressIndices.length - 1];
29
+ if (arg.includes('=')) {
30
+ progressJsonlPath = arg.slice(arg.indexOf('=') + 1);
31
+ }
32
+ else if (index + 1 < args.length && !args[index + 1].startsWith('-')) {
33
+ progressJsonlPath = args[index + 1];
34
+ }
35
+ }
36
+ return {
37
+ json: has('--json'),
38
+ ndjson: has('--ndjson'),
39
+ noSpinner: has('--no-spinner'),
40
+ progressJsonl: progressIndices.length > 0,
41
+ progressJsonlPath,
42
+ includePrivateChannels: has('--include-private-channels'),
43
+ accessible: has('--accessible'),
44
+ nonInteractive: has('--non-interactive'),
45
+ interactive: has('--interactive'),
46
+ };
47
+ }
48
+ // ---------------------------------------------------------------------------
49
+ // Cached singleton
50
+ // ---------------------------------------------------------------------------
51
+ let cached = null;
52
+ function getGlobalArgs() {
53
+ if (!cached) {
54
+ cached = parseGlobalArgs();
55
+ }
56
+ return cached;
57
+ }
58
+ /** Clear the cached parse result. Call in test teardown. */
59
+ export function resetGlobalArgs() {
60
+ cached = null;
61
+ }
62
+ // ---------------------------------------------------------------------------
63
+ // Query functions — drop-in replacements for the old process.argv checks
64
+ // ---------------------------------------------------------------------------
65
+ export function isJsonMode() {
66
+ return getGlobalArgs().json;
67
+ }
68
+ export function isAccessible() {
69
+ return process.env.TW_ACCESSIBLE === '1' || getGlobalArgs().accessible;
70
+ }
71
+ export function isNonInteractive() {
72
+ const args = getGlobalArgs();
73
+ if (args.interactive)
74
+ return false;
75
+ if (args.nonInteractive)
76
+ return true;
77
+ return !process.stdin.isTTY;
78
+ }
79
+ export function includePrivateChannels() {
80
+ const envVal = process.env.TWIST_INCLUDE_PRIVATE_CHANNELS;
81
+ if (envVal === '1' || envVal === 'true') {
82
+ return true;
83
+ }
84
+ return getGlobalArgs().includePrivateChannels;
85
+ }
86
+ export function shouldDisableSpinner() {
87
+ if (process.env.TW_SPINNER === 'false')
88
+ return true;
89
+ if (process.env.CI)
90
+ return true;
91
+ const args = getGlobalArgs();
92
+ return args.json || args.ndjson || args.noSpinner || args.progressJsonl || args.nonInteractive;
93
+ }
94
+ export function isProgressJsonlEnabled() {
95
+ return getGlobalArgs().progressJsonl;
96
+ }
97
+ export function getProgressJsonlPath() {
98
+ return getGlobalArgs().progressJsonlPath;
99
+ }
100
+ //# sourceMappingURL=global-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-args.js","sourceRoot":"","sources":["../../src/lib/global-args.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- export declare function isNonInteractive(): boolean;
2
1
  export declare function readStdin(): Promise<string | null>;
3
2
  export declare function openEditor(): Promise<string | null>;
4
3
  //# sourceMappingURL=input.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/lib/input.ts"],"names":[],"mappings":"AAKA,wBAAgB,gBAAgB,IAAI,OAAO,CAK1C;AAID,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2CxD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoCzD"}
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/lib/input.ts"],"names":[],"mappings":"AAQA,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2CxD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoCzD"}
package/dist/lib/input.js CHANGED
@@ -2,14 +2,7 @@ import { spawn } from 'node:child_process';
2
2
  import { readFile, unlink, writeFile } from 'node:fs/promises';
3
3
  import { tmpdir } from 'node:os';
4
4
  import { join } from 'node:path';
5
- export function isNonInteractive() {
6
- const args = process.argv;
7
- if (args.includes('--interactive'))
8
- return false;
9
- if (args.includes('--non-interactive'))
10
- return true;
11
- return !process.stdin.isTTY;
12
- }
5
+ import { isNonInteractive } from './global-args.js';
13
6
  const STDIN_TIMEOUT_MS = 100;
14
7
  export async function readStdin() {
15
8
  if (process.stdin.isTTY) {
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/lib/input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,UAAU,gBAAgB;IAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;QAAE,OAAO,KAAK,CAAA;IAChD,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAAE,OAAO,IAAI,CAAA;IACnD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAA;AAC/B,CAAC;AAED,MAAM,gBAAgB,GAAG,GAAG,CAAA;AAE5B,MAAM,CAAC,KAAK,UAAU,SAAS;IAC3B,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,IAAI,CAAA;IACf,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,IAAI,IAAI,GAAG,EAAE,CAAA;QACb,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,IAAI,OAAkD,CAAA;QAEtD,MAAM,MAAM,GAAG,CAAC,KAAoB,EAAE,EAAE;YACpC,IAAI,OAAO;gBAAE,OAAM;YACnB,OAAO,GAAG,IAAI,CAAA;YACd,IAAI,OAAO;gBAAE,YAAY,CAAC,OAAO,CAAC,CAAA;YAClC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAC5C,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAC1C,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC9C,OAAO,CAAC,KAAK,CAAC,CAAA;QAClB,CAAC,CAAA;QAED,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE;YAC7B,IAAI,IAAI,KAAK,CAAA;YACb,oEAAoE;YACpE,IAAI,OAAO,EAAE,CAAC;gBACV,YAAY,CAAC,OAAO,CAAC,CAAA;gBACrB,OAAO,GAAG,SAAS,CAAA;YACvB,CAAC;QACL,CAAC,CAAA;QACD,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAA;QAC/C,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAElC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QACjC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC9B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAElC,mFAAmF;QACnF,IAAI,gBAAgB,EAAE,EAAE,CAAC;YACrB,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAA;YAC/B,CAAC,EAAE,gBAAgB,CAAC,CAAA;QACxB,CAAC;IACL,CAAC,CAAC,CAAA;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC5B,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACrB,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAA;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAE5D,MAAM,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IAE5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;YACnC,KAAK,EAAE,SAAS;SACnB,CAAC,CAAA;QAEF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC5B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACb,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;gBACrC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACb,OAAM;YACV,CAAC;YAED,IAAI,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBAC/C,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;gBACrC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAA;YACnC,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO,CAAC,IAAI,CAAC,CAAA;YACjB,CAAC;QACL,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACzB,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YACrC,OAAO,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC"}
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/lib/input.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/lib/oauth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,iBAAiB,sCAAsC,CAAA;AACpE,eAAO,MAAM,SAAS,yCAAyC,CAAA;AAC/D,eAAO,MAAM,gBAAgB,qCAAqC,CAAA;AAClE,eAAO,MAAM,kBAAkB,mCAAmC,CAAA;AAGlE,eAAO,MAAM,iBAAiB,QAenB,CAAA;AAGX,eAAO,MAAM,gBAAgB,QAUlB,CAAA;AAEX;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;CACxB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,WAAW,CAAC,CAgDlE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACrC,MAAM,CAaR;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACtC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,CAiDjB"}
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/lib/oauth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,eAAO,MAAM,iBAAiB,sCAAsC,CAAA;AACpE,eAAO,MAAM,SAAS,yCAAyC,CAAA;AAC/D,eAAO,MAAM,gBAAgB,qCAAqC,CAAA;AAClE,eAAO,MAAM,kBAAkB,mCAAmC,CAAA;AAGlE,eAAO,MAAM,iBAAiB,QAenB,CAAA;AAGX,eAAO,MAAM,gBAAgB,QAUlB,CAAA;AAEX;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;CACxB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,WAAW,CAAC,CAmDlE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACrC,MAAM,CAaR;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACtC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,CAoDjB"}
package/dist/lib/oauth.js CHANGED
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * OAuth flow coordination for Twist API authentication
3
3
  */
4
+ import { CliError } from './errors.js';
4
5
  // OAuth configuration for Twist (using well-known endpoints with dynamic client registration)
5
6
  export const AUTHORIZATION_URL = 'https://twist.com/oauth/authorize';
6
7
  export const TOKEN_URL = 'https://twist.com/oauth/access_token';
@@ -60,11 +61,11 @@ export async function registerDynamicClient() {
60
61
  });
61
62
  if (!response.ok) {
62
63
  const errorText = await response.text();
63
- throw new Error(`Client registration failed: ${response.status} ${response.statusText} - ${errorText}`);
64
+ throw new CliError('AUTH_FAILED', `Client registration failed: ${response.status} ${response.statusText} - ${errorText}`);
64
65
  }
65
66
  const result = await response.json();
66
67
  if (!result.client_id || !result.client_secret) {
67
- throw new Error('Invalid client registration response: missing client_id or client_secret');
68
+ throw new CliError('AUTH_FAILED', 'Invalid client registration response: missing client_id or client_secret');
68
69
  }
69
70
  return {
70
71
  client_id: result.client_id,
@@ -72,10 +73,12 @@ export async function registerDynamicClient() {
72
73
  };
73
74
  }
74
75
  catch (error) {
76
+ if (error instanceof CliError)
77
+ throw error;
75
78
  if (error instanceof Error) {
76
- throw new Error(`Failed to register OAuth client: ${error.message}`);
79
+ throw new CliError('AUTH_FAILED', `Failed to register OAuth client: ${error.message}`);
77
80
  }
78
- throw new Error('Failed to register OAuth client: Unknown error');
81
+ throw new CliError('AUTH_FAILED', 'Failed to register OAuth client: Unknown error');
79
82
  }
80
83
  }
81
84
  /**
@@ -119,22 +122,24 @@ export async function exchangeCodeForToken(code, codeVerifier, client) {
119
122
  });
120
123
  if (!response.ok) {
121
124
  const errorText = await response.text();
122
- throw new Error(`Token exchange failed: ${response.status} ${response.statusText} - ${errorText}`);
125
+ throw new CliError('AUTH_FAILED', `Token exchange failed: ${response.status} ${response.statusText} - ${errorText}`);
123
126
  }
124
127
  const data = await response.json();
125
128
  if (data.error) {
126
- throw new Error(`OAuth error: ${data.error} - ${data.error_description || 'Unknown error'}`);
129
+ throw new CliError('AUTH_FAILED', `OAuth error: ${data.error} - ${data.error_description || 'Unknown error'}`);
127
130
  }
128
131
  if (!data.access_token) {
129
- throw new Error('No access token received from OAuth server');
132
+ throw new CliError('AUTH_FAILED', 'No access token received from OAuth server');
130
133
  }
131
134
  return data.access_token;
132
135
  }
133
136
  catch (error) {
137
+ if (error instanceof CliError)
138
+ throw error;
134
139
  if (error instanceof Error) {
135
- throw new Error(`Failed to exchange code for token: ${error.message}`);
140
+ throw new CliError('AUTH_FAILED', `Failed to exchange code for token: ${error.message}`);
136
141
  }
137
- throw new Error('Failed to exchange code for token: Unknown error');
142
+ throw new CliError('AUTH_FAILED', 'Failed to exchange code for token: Unknown error');
138
143
  }
139
144
  }
140
145
  //# sourceMappingURL=oauth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/lib/oauth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/lib/oauth.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { CliError } from './errors.js';
1
2
  export declare const colors: {
2
3
  author: import("chalk").ChalkInstance;
3
4
  timestamp: import("chalk").ChalkInstance;
@@ -17,9 +18,11 @@ export interface PaginatedOutput<T> {
17
18
  }
18
19
  export declare function formatPaginatedJson<T extends object>(data: PaginatedOutput<T>, type?: EntityType, full?: boolean): string;
19
20
  export declare function formatPaginatedNdjson<T extends object>(data: PaginatedOutput<T>, type?: EntityType, full?: boolean): string;
21
+ export declare function formatError(error: CliError): string;
20
22
  export declare function formatError(message: string): string;
23
+ export declare function formatErrorJson(error: CliError): string;
24
+ export declare function formatErrorJson(code: string, message: string, hints?: string[]): string;
21
25
  export declare function printError(message: string): void;
22
26
  export declare function printJson<T extends object>(data: T | T[], type?: EntityType, full?: boolean): void;
23
27
  export declare function printNdjson<T extends object>(items: T[], type?: EntityType, full?: boolean): void;
24
- export declare function isAccessible(): boolean;
25
28
  //# sourceMappingURL=output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;;;;;;;CAOlB,CAAA;AAgDD,MAAM,MAAM,UAAU,GAChB,QAAQ,GACR,SAAS,GACT,cAAc,GACd,SAAS,GACT,WAAW,GACX,MAAM,GACN,SAAS,CAAA;AA+Bf,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAC/C,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,UAAU,EAChB,IAAI,CAAC,EAAE,OAAO,GACf,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AACjB,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAC/C,IAAI,EAAE,CAAC,EAAE,EACT,IAAI,EAAE,UAAU,EAChB,IAAI,CAAC,EAAE,OAAO,GACf,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AAkBxB,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACvC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EACb,IAAI,CAAC,EAAE,UAAU,EACjB,IAAI,UAAQ,GACb,MAAM,CAKR;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EACzC,KAAK,EAAE,CAAC,EAAE,EACV,IAAI,CAAC,EAAE,UAAU,EACjB,IAAI,UAAQ,GACb,MAAM,CAOR;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,EAAE,CAAA;IACZ,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAChD,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,EACxB,IAAI,CAAC,EAAE,UAAU,EACjB,IAAI,UAAQ,GACb,MAAM,CAGR;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,EAClD,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,EACxB,IAAI,CAAC,EAAE,UAAU,EACjB,IAAI,UAAQ,GACb,MAAM,CAOR;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,UAAQ,GAAG,IAAI,CAEhG;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,UAAQ,GAAG,IAAI,CAE/F;AAED,wBAAgB,YAAY,IAAI,OAAO,CAEtC"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,eAAO,MAAM,MAAM;;;;;;;CAOlB,CAAA;AAgDD,MAAM,MAAM,UAAU,GAChB,QAAQ,GACR,SAAS,GACT,cAAc,GACd,SAAS,GACT,WAAW,GACX,MAAM,GACN,SAAS,CAAA;AA+Bf,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAC/C,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,UAAU,EAChB,IAAI,CAAC,EAAE,OAAO,GACf,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AACjB,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAC/C,IAAI,EAAE,CAAC,EAAE,EACT,IAAI,EAAE,UAAU,EAChB,IAAI,CAAC,EAAE,OAAO,GACf,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AAkBxB,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACvC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EACb,IAAI,CAAC,EAAE,UAAU,EACjB,IAAI,UAAQ,GACb,MAAM,CAKR;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EACzC,KAAK,EAAE,CAAC,EAAE,EACV,IAAI,CAAC,EAAE,UAAU,EACjB,IAAI,UAAQ,GACb,MAAM,CAOR;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,EAAE,CAAA;IACZ,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAChD,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,EACxB,IAAI,CAAC,EAAE,UAAU,EACjB,IAAI,UAAQ,GACb,MAAM,CAGR;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,EAClD,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,EACxB,IAAI,CAAC,EAAE,UAAU,EACjB,IAAI,UAAQ,GACb,MAAM,CAOR;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAA;AACpD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;AAmBpD,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAA;AACxD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;AAcxF,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,UAAQ,GAAG,IAAI,CAEhG;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,UAAQ,GAAG,IAAI,CAE/F"}
@@ -110,8 +110,29 @@ export function formatPaginatedNdjson(data, type, full = false) {
110
110
  }
111
111
  return lines.join('\n');
112
112
  }
113
- export function formatError(message) {
114
- return colors.error(message);
113
+ export function formatError(messageOrError) {
114
+ if (typeof messageOrError === 'string') {
115
+ return colors.error(messageOrError);
116
+ }
117
+ const color = messageOrError.type === 'info' ? chalk.yellow : chalk.red;
118
+ const lines = messageOrError.type === 'info'
119
+ ? [messageOrError.message]
120
+ : [`Error: ${messageOrError.code}`, messageOrError.message];
121
+ if (messageOrError.hints && messageOrError.hints.length > 0) {
122
+ lines.push('');
123
+ for (const hint of messageOrError.hints) {
124
+ lines.push(` - ${hint}`);
125
+ }
126
+ }
127
+ return color(lines.join('\n'));
128
+ }
129
+ export function formatErrorJson(codeOrError, message, hints) {
130
+ if (typeof codeOrError === 'string') {
131
+ return JSON.stringify({ error: { code: codeOrError, message, hints } });
132
+ }
133
+ return JSON.stringify({
134
+ error: { code: codeOrError.code, message: codeOrError.message, hints: codeOrError.hints },
135
+ });
115
136
  }
116
137
  export function printError(message) {
117
138
  console.error(formatError(message));
@@ -122,7 +143,4 @@ export function printJson(data, type, full = false) {
122
143
  export function printNdjson(items, type, full = false) {
123
144
  console.log(formatNdjson(items, type, full));
124
145
  }
125
- export function isAccessible() {
126
- return process.env.TW_ACCESSIBLE === '1' || process.argv.includes('--accessible');
127
- }
128
146
  //# sourceMappingURL=output.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,MAAM,CAAC,MAAM,MAAM,GAAG;IAClB,MAAM,EAAE,KAAK,CAAC,IAAI;IAClB,SAAS,EAAE,KAAK,CAAC,GAAG;IACpB,OAAO,EAAE,KAAK,CAAC,IAAI;IACnB,MAAM,EAAE,KAAK,CAAC,IAAI;IAClB,GAAG,EAAE,KAAK,CAAC,GAAG;IACd,KAAK,EAAE,KAAK,CAAC,GAAG;CACnB,CAAA;AAED,MAAM,uBAAuB,GAAG;IAC5B,IAAI;IACJ,OAAO;IACP,WAAW;IACX,aAAa;IACb,SAAS;IACT,QAAQ;IACR,cAAc;IACd,YAAY;IACZ,WAAW;CACL,CAAA;AAEV,MAAM,wBAAwB,GAAG;IAC7B,IAAI;IACJ,SAAS;IACT,SAAS;IACT,UAAU;IACV,QAAQ;IACR,WAAW;CACL,CAAA;AAEV,MAAM,6BAA6B,GAAG;IAClC,IAAI;IACJ,aAAa;IACb,SAAS;IACT,OAAO;IACP,cAAc;IACd,YAAY;IACZ,UAAU;CACJ,CAAA;AAEV,MAAM,wBAAwB,GAAG;IAC7B,IAAI;IACJ,SAAS;IACT,SAAS;IACT,gBAAgB;IAChB,QAAQ;IACR,WAAW;CACL,CAAA;AAEV,MAAM,0BAA0B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAU,CAAA;AAE7E,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAU,CAAA;AAElG,MAAM,wBAAwB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAU,CAAA;AAWvE,SAAS,kBAAkB,CAAC,IAAgB;IACxC,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,QAAQ;YACT,OAAO,uBAAuB,CAAA;QAClC,KAAK,SAAS;YACV,OAAO,wBAAwB,CAAA;QACnC,KAAK,cAAc;YACf,OAAO,6BAA6B,CAAA;QACxC,KAAK,SAAS;YACV,OAAO,wBAAwB,CAAA;QACnC,KAAK,WAAW;YACZ,OAAO,0BAA0B,CAAA;QACrC,KAAK,MAAM;YACP,OAAO,qBAAqB,CAAA;QAChC,KAAK,SAAS;YACV,OAAO,wBAAwB,CAAA;IACvC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAmB,IAAO,EAAE,MAAyB;IACpE,MAAM,MAAM,GAAe,EAAE,CAAA;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAChB,CAAC;YAAC,MAAkC,CAAC,KAAK,CAAC,GAAI,IAAgC,CAAC,KAAK,CAAC,CAAA;QAC1F,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC;AAYD,MAAM,UAAU,kBAAkB,CAC9B,IAAa,EACb,IAAgB,EAChB,IAAI,GAAG,KAAK;IAEZ,IAAI,IAAI,EAAE,CAAC;QACP,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACvC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;IACvD,CAAC;IAED,OAAO,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,UAAU,CACtB,IAAa,EACb,IAAiB,EACjB,IAAI,GAAG,KAAK;IAEZ,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AAClE,CAAC;AAED,MAAM,UAAU,YAAY,CACxB,KAAU,EACV,IAAiB,EACjB,IAAI,GAAG,KAAK;IAEZ,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/D,CAAC;IACD,OAAO,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC;SACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SACnC,IAAI,CAAC,IAAI,CAAC,CAAA;AACnB,CAAC;AAOD,MAAM,UAAU,mBAAmB,CAC/B,IAAwB,EACxB,IAAiB,EACjB,IAAI,GAAG,KAAK;IAEZ,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAA;IAClF,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AAC5E,CAAC;AAED,MAAM,UAAU,qBAAqB,CACjC,IAAwB,EACxB,IAAiB,EACjB,IAAI,GAAG,KAAK;IAEZ,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAA;IAClF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;IACzD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;IAC5E,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC;AAID,MAAM,UAAU,WAAW,CAAC,cAAiC;IACzD,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IACvC,CAAC;IACD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAA;IACvE,MAAM,KAAK,GACP,cAAc,CAAC,IAAI,KAAK,MAAM;QAC1B,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC;QAC1B,CAAC,CAAC,CAAC,UAAU,cAAc,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;IACnE,IAAI,cAAc,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;QAC7B,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AAClC,CAAC;AAID,MAAM,UAAU,eAAe,CAC3B,WAA8B,EAC9B,OAAgB,EAChB,KAAgB;IAEhB,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;IAC3E,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC;QAClB,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE;KAC5F,CAAC,CAAA;AACN,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe;IACtC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,SAAS,CAAmB,IAAa,EAAE,IAAiB,EAAE,IAAI,GAAG,KAAK;IACtF,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,WAAW,CAAmB,KAAU,EAAE,IAAiB,EAAE,IAAI,GAAG,KAAK;IACrF,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAChD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/lib/permissions.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,wHACqF,CAAA;AA0BzH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKxD"}
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/lib/permissions.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB,wHACqF,CAAA;AA0BzH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKxD"}
@@ -1,4 +1,5 @@
1
1
  import { getAuthMetadata } from './auth.js';
2
+ import { CliError } from './errors.js';
2
3
  export const READ_ONLY_ERROR_MESSAGE = 'This CLI is authenticated in read-only mode. Re-run `tw auth login` without --read-only to enable write operations.';
3
4
  /**
4
5
  * Known read-only API method paths. Any method not in this set is assumed to be mutating.
@@ -29,7 +30,7 @@ export function isMutatingMethod(methodPath) {
29
30
  export async function ensureWriteAllowed() {
30
31
  const metadata = await getAuthMetadata();
31
32
  if (metadata.authMode === 'read-only') {
32
- throw new Error(READ_ONLY_ERROR_MESSAGE);
33
+ throw new CliError('READ_ONLY', READ_ONLY_ERROR_MESSAGE);
33
34
  }
34
35
  }
35
36
  //# sourceMappingURL=permissions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/lib/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,MAAM,CAAC,MAAM,uBAAuB,GAChC,qHAAqH,CAAA;AAEzH;;;GAGG;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACnC,sBAAsB;IACtB,0BAA0B;IAC1B,kCAAkC;IAClC,4BAA4B;IAC5B,mBAAmB;IACnB,mBAAmB;IACnB,qBAAqB;IACrB,sBAAsB;IACtB,qBAAqB;IACrB,sBAAsB;IACtB,gCAAgC;IAChC,+BAA+B;IAC/B,yBAAyB;IACzB,iCAAiC;IACjC,kCAAkC;IAClC,gBAAgB;IAChB,OAAO;CACV,CAAC,CAAA;AAEF,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IAC/C,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACpC,MAAM,QAAQ,GAAG,MAAM,eAAe,EAAE,CAAA;IACxC,IAAI,QAAQ,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAC5C,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/lib/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,MAAM,CAAC,MAAM,uBAAuB,GAChC,qHAAqH,CAAA;AAEzH;;;GAGG;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACnC,sBAAsB;IACtB,0BAA0B;IAC1B,kCAAkC;IAClC,4BAA4B;IAC5B,mBAAmB;IACnB,mBAAmB;IACnB,qBAAqB;IACrB,sBAAsB;IACtB,qBAAqB;IACrB,sBAAsB;IACtB,gCAAgC;IAChC,+BAA+B;IAC/B,yBAAyB;IACzB,iCAAiC;IACjC,kCAAkC;IAClC,gBAAgB;IAChB,OAAO;CACV,CAAC,CAAA;AAEF,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IAC/C,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACpC,MAAM,QAAQ,GAAG,MAAM,eAAe,EAAE,CAAA;IACxC,IAAI,QAAQ,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAA;IAC5D,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/lib/progress.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,OAAO,CAAA;IAClE,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,qBAAa,eAAe;IACxB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,YAAY,CAAsD;;IAM1E,OAAO,CAAC,kBAAkB;IA2C1B,SAAS,IAAI,OAAO;IAIpB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,IAAI;IAcnD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIhC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAI3D,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IASlF,YAAY,IAAI,IAAI;IAIpB,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAIrD,KAAK,IAAI,IAAI;CAOhB;AAKD,wBAAgB,kBAAkB,IAAI,eAAe,CAKpD;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAK3C"}
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/lib/progress.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,OAAO,CAAA;IAClE,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,qBAAa,eAAe;IACxB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,YAAY,CAAsD;;IAM1E,OAAO,CAAC,kBAAkB;IAwB1B,SAAS,IAAI,OAAO;IAIpB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,IAAI;IAcnD,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIhC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAI3D,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IASlF,YAAY,IAAI,IAAI;IAIpB,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAIrD,KAAK,IAAI,IAAI;CAOhB;AAKD,wBAAgB,kBAAkB,IAAI,eAAe,CAKpD;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAK3C"}
@@ -1,4 +1,5 @@
1
1
  import fs from 'node:fs';
2
+ import { getProgressJsonlPath, isProgressJsonlEnabled } from './global-args.js';
2
3
  export class ProgressTracker {
3
4
  enabled = false;
4
5
  outputStream = null;
@@ -6,27 +7,11 @@ export class ProgressTracker {
6
7
  this.checkAndInitialize();
7
8
  }
8
9
  checkAndInitialize() {
9
- const args = process.argv;
10
- // Find all --progress-jsonl flags and use the last one
11
- const progressIndices = args
12
- .map((arg, index) => ({ arg, index }))
13
- .filter(({ arg }) => arg.startsWith('--progress-jsonl'));
14
- if (progressIndices.length === 0) {
10
+ if (!isProgressJsonlEnabled()) {
15
11
  return;
16
12
  }
17
13
  this.enabled = true;
18
- // Use the last occurrence
19
- const { arg, index: progressIndex } = progressIndices[progressIndices.length - 1];
20
- // Handle both --progress-jsonl and --progress-jsonl=path formats
21
- let outputPath;
22
- if (arg.includes('=')) {
23
- // Format: --progress-jsonl=/path/to/file
24
- outputPath = arg.split('=', 2)[1];
25
- }
26
- else if (progressIndex + 1 < args.length && !args[progressIndex + 1].startsWith('-')) {
27
- // Format: --progress-jsonl /path/to/file
28
- outputPath = args[progressIndex + 1];
29
- }
14
+ const outputPath = getProgressJsonlPath();
30
15
  if (outputPath) {
31
16
  try {
32
17
  this.outputStream = fs.createWriteStream(outputPath, { flags: 'a' });
@@ -1 +1 @@
1
- {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/lib/progress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AAexB,MAAM,OAAO,eAAe;IAChB,OAAO,GAAG,KAAK,CAAA;IACf,YAAY,GAAkD,IAAI,CAAA;IAE1E;QACI,IAAI,CAAC,kBAAkB,EAAE,CAAA;IAC7B,CAAC;IAEO,kBAAkB;QACtB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;QAEzB,uDAAuD;QACvD,MAAM,eAAe,GAAG,IAAI;aACvB,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;aACrC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAA;QAE5D,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAM;QACV,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QAEnB,0BAA0B;QAC1B,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAEjF,iEAAiE;QACjE,IAAI,UAA8B,CAAA;QAElC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,yCAAyC;YACzC,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACrC,CAAC;aAAM,IAAI,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrF,yCAAyC;YACzC,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAA;QACxC,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACb,IAAI,CAAC;gBACD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;YACxE,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC;gBACd,6CAA6C;gBAC7C,OAAO,CAAC,KAAK,CACT,2CAA2C,UAAU,0BAA0B,CAClF,CAAA;gBACD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAA;YACtC,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAA;QACtC,CAAC;IACL,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,OAAO,CAAA;IACvB,CAAC;IAED,IAAI,CAAC,KAAuC;QACxC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,OAAM;QACV,CAAC;QAED,MAAM,aAAa,GAAkB;YACjC,GAAG,KAAK;YACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,CAAA;QAED,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAA;QACjD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,SAAS,CAAC,OAAe;QACrB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,WAAW,CAAC,QAAgB,EAAE,MAAsB;QAChD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,eAAe,CAAC,KAAa,EAAE,OAAgB,EAAE,UAA0B;QACvE,IAAI,CAAC,IAAI,CAAC;YACN,IAAI,EAAE,cAAc;YACpB,KAAK;YACL,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,UAAU;SAC1B,CAAC,CAAA;IACN,CAAC;IAED,YAAY;QACR,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;IACnC,CAAC;IAED,SAAS,CAAC,SAAkB,EAAE,OAAgB;QAC1C,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;IAChE,CAAC;IAED,KAAK;QACD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;YAC5D,CAAC;YAAC,IAAI,CAAC,YAA+B,CAAC,KAAK,EAAE,CAAA;QAClD,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;IAC5B,CAAC;CACJ;AAED,4BAA4B;AAC5B,IAAI,eAAe,GAA2B,IAAI,CAAA;AAElD,MAAM,UAAU,kBAAkB;IAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;QACnB,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;IAC3C,CAAC;IACD,OAAO,eAAe,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,oBAAoB;IAChC,IAAI,eAAe,EAAE,CAAC;QAClB,eAAe,CAAC,KAAK,EAAE,CAAA;IAC3B,CAAC;IACD,eAAe,GAAG,IAAI,CAAA;AAC1B,CAAC"}
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/lib/progress.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- export declare function includePrivateChannels(): boolean;
2
1
  export declare function getPublicChannelIds(workspaceId: number): Promise<Set<number>>;
3
2
  export declare function clearPublicChannelCache(): void;
4
3
  export declare function assertChannelIsPublic(channelId: number, workspaceId: number): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"public-channels.d.ts","sourceRoot":"","sources":["../../src/lib/public-channels.ts"],"names":[],"mappings":"AAEA,wBAAgB,sBAAsB,IAAI,OAAO,CAMhD;AAID,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAYnF;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjG"}
1
+ {"version":3,"file":"public-channels.d.ts","sourceRoot":"","sources":["../../src/lib/public-channels.ts"],"names":[],"mappings":"AAMA,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAYnF;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjG"}
@@ -1,11 +1,6 @@
1
1
  import { getTwistClient } from './api.js';
2
- export function includePrivateChannels() {
3
- const envVal = process.env.TWIST_INCLUDE_PRIVATE_CHANNELS;
4
- if (envVal === '1' || envVal === 'true') {
5
- return true;
6
- }
7
- return process.argv.includes('--include-private-channels');
8
- }
2
+ import { CliError } from './errors.js';
3
+ import { includePrivateChannels } from './global-args.js';
9
4
  const publicChannelCache = new Map();
10
5
  export async function getPublicChannelIds(workspaceId) {
11
6
  const cached = publicChannelCache.get(workspaceId);
@@ -29,7 +24,9 @@ export async function assertChannelIsPublic(channelId, workspaceId) {
29
24
  return;
30
25
  const publicIds = await getPublicChannelIds(workspaceId);
31
26
  if (!publicIds.has(channelId)) {
32
- throw new Error('This thread belongs to a private channel. Use --include-private-channels to access it.');
27
+ throw new CliError('NOT_FOUND', 'This thread belongs to a private channel.', [
28
+ 'Use --include-private-channels to access it',
29
+ ]);
33
30
  }
34
31
  }
35
32
  //# sourceMappingURL=public-channels.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"public-channels.js","sourceRoot":"","sources":["../../src/lib/public-channels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAEzC,MAAM,UAAU,sBAAsB;IAClC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAA;IACzD,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtC,OAAO,IAAI,CAAA;IACf,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAA;AAC9D,CAAC;AAED,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAuB,CAAA;AAEzD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,WAAmB;IACzD,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAClD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAA;IACrC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC,CAAA;IACnE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QACxB,IAAI,EAAE,CAAC,MAAM;YAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACvC,CAAC;IACD,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IAC9C,OAAO,SAAS,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,uBAAuB;IACnC,kBAAkB,CAAC,KAAK,EAAE,CAAA;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,SAAiB,EAAE,WAAmB;IAC9E,IAAI,sBAAsB,EAAE;QAAE,OAAM;IACpC,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAA;IACxD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACX,wFAAwF,CAC3F,CAAA;IACL,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"public-channels.js","sourceRoot":"","sources":["../../src/lib/public-channels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAuB,CAAA;AAEzD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,WAAmB;IACzD,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAClD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAA;IACrC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC,CAAA;IACnE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QACxB,IAAI,EAAE,CAAC,MAAM;YAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACvC,CAAC;IACD,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IAC9C,OAAO,SAAS,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,uBAAuB;IACnC,kBAAkB,CAAC,KAAK,EAAE,CAAA;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,SAAiB,EAAE,WAAmB;IAC9E,IAAI,sBAAsB,EAAE;QAAE,OAAM;IACpC,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAA;IACxD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,QAAQ,CAAC,WAAW,EAAE,2CAA2C,EAAE;YACzE,6CAA6C;SAChD,CAAC,CAAA;IACN,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/lib/refs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAOjD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE5C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO7C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAInD;AAED,MAAM,WAAW,cAAc;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CA8ChE;AAED,wBAAgB,QAAQ,CACpB,GAAG,EAAE,MAAM,GAET;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAmBnC;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAqCzE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYnD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYpD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYpD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYzD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYpD;AAED,MAAM,MAAM,aAAa,GAAG;IACxB,UAAU,EAAE,SAAS,GAAG,cAAc,GAAG,SAAS,GAAG,QAAQ,CAAA;IAC7D,GAAG,EAAE,MAAM,CAAA;CACd,CAAA;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAUlE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBtD;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgC1F"}
1
+ {"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/lib/refs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAQjD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE5C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO7C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAInD;AAED,MAAM,WAAW,cAAc;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CA8ChE;AAED,wBAAgB,QAAQ,CACpB,GAAG,EAAE,MAAM,GAET;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAmBnC;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CA2CzE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAenD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAepD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAepD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAezD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAepD;AAED,MAAM,MAAM,aAAa,GAAG;IACxB,UAAU,EAAE,SAAS,GAAG,cAAc,GAAG,SAAS,GAAG,QAAQ,CAAA;IAC7D,GAAG,EAAE,MAAM,CAAA;CACd,CAAA;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAUlE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAetD;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmC1F"}
package/dist/lib/refs.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { fetchWorkspaces } from './api.js';
2
+ import { CliError } from './errors.js';
2
3
  function normalizeRef(ref) {
3
4
  return ref.trim();
4
5
  }
@@ -9,7 +10,7 @@ export function extractId(ref) {
9
10
  const normalized = normalizeRef(ref);
10
11
  const idStr = isIdRef(normalized) ? normalized.slice(3).trim() : normalized;
11
12
  if (!/^\d+$/.test(idStr)) {
12
- throw new Error(`Invalid ID: ${ref}`);
13
+ throw new CliError('INVALID_ID', `Invalid ID: ${ref}`);
13
14
  }
14
15
  return Number(idStr);
15
16
  }
@@ -81,14 +82,14 @@ export async function resolveWorkspaceRef(ref) {
81
82
  if (parsed.type === 'id') {
82
83
  const workspace = workspaces.find((w) => w.id === parsed.id);
83
84
  if (!workspace) {
84
- throw new Error(`Workspace with ID ${parsed.id} not found`);
85
+ throw new CliError('WORKSPACE_NOT_FOUND', `Workspace with ID ${parsed.id} not found`);
85
86
  }
86
87
  return workspace;
87
88
  }
88
89
  if (parsed.type === 'url' && parsed.parsed.workspaceId) {
89
90
  const workspace = workspaces.find((w) => w.id === parsed.parsed.workspaceId);
90
91
  if (!workspace) {
91
- throw new Error(`Workspace with ID ${parsed.parsed.workspaceId} not found`);
92
+ throw new CliError('WORKSPACE_NOT_FOUND', `Workspace with ID ${parsed.parsed.workspaceId} not found`);
92
93
  }
93
94
  return workspace;
94
95
  }
@@ -105,10 +106,10 @@ export async function resolveWorkspaceRef(ref) {
105
106
  .slice(0, 5)
106
107
  .map((w) => `"${w.name}" (id:${w.id})`)
107
108
  .join(', ');
108
- throw new Error(`Multiple workspaces match "${ref}": ${matches}`);
109
+ throw new CliError('AMBIGUOUS_WORKSPACE', `Multiple workspaces match "${ref}": ${matches}`);
109
110
  }
110
111
  }
111
- throw new Error(`Workspace "${ref}" not found`);
112
+ throw new CliError('WORKSPACE_NOT_FOUND', `Workspace "${ref}" not found`);
112
113
  }
113
114
  export function resolveThreadId(ref) {
114
115
  const parsed = parseRef(ref);
@@ -118,7 +119,7 @@ export function resolveThreadId(ref) {
118
119
  if (parsed.type === 'url' && parsed.parsed.threadId) {
119
120
  return parsed.parsed.threadId;
120
121
  }
121
- throw new Error(`Invalid thread reference: ${ref}. Use 123, id:123, or a Twist URL.`);
122
+ throw new CliError('INVALID_REF', `Invalid thread reference: ${ref}. Use 123, id:123, or a Twist URL.`);
122
123
  }
123
124
  export function resolveChannelId(ref) {
124
125
  const parsed = parseRef(ref);
@@ -128,7 +129,7 @@ export function resolveChannelId(ref) {
128
129
  if (parsed.type === 'url' && parsed.parsed.channelId) {
129
130
  return parsed.parsed.channelId;
130
131
  }
131
- throw new Error(`Invalid channel reference: ${ref}. Use 123, id:123, or a Twist URL.`);
132
+ throw new CliError('INVALID_REF', `Invalid channel reference: ${ref}. Use 123, id:123, or a Twist URL.`);
132
133
  }
133
134
  export function resolveCommentId(ref) {
134
135
  const parsed = parseRef(ref);
@@ -138,7 +139,7 @@ export function resolveCommentId(ref) {
138
139
  if (parsed.type === 'url' && parsed.parsed.commentId) {
139
140
  return parsed.parsed.commentId;
140
141
  }
141
- throw new Error(`Invalid comment reference: ${ref}. Use 123, id:123, or a Twist URL.`);
142
+ throw new CliError('INVALID_REF', `Invalid comment reference: ${ref}. Use 123, id:123, or a Twist URL.`);
142
143
  }
143
144
  export function resolveConversationId(ref) {
144
145
  const parsed = parseRef(ref);
@@ -148,7 +149,7 @@ export function resolveConversationId(ref) {
148
149
  if (parsed.type === 'url' && parsed.parsed.conversationId) {
149
150
  return parsed.parsed.conversationId;
150
151
  }
151
- throw new Error(`Invalid conversation reference: ${ref}. Use 123, id:123, or a Twist URL.`);
152
+ throw new CliError('INVALID_REF', `Invalid conversation reference: ${ref}. Use 123, id:123, or a Twist URL.`);
152
153
  }
153
154
  export function resolveMessageId(ref) {
154
155
  const parsed = parseRef(ref);
@@ -158,7 +159,7 @@ export function resolveMessageId(ref) {
158
159
  if (parsed.type === 'url' && parsed.parsed.messageId) {
159
160
  return parsed.parsed.messageId;
160
161
  }
161
- throw new Error(`Invalid message reference: ${ref}. Use 123, id:123, or a Twist URL.`);
162
+ throw new CliError('INVALID_REF', `Invalid message reference: ${ref}. Use 123, id:123, or a Twist URL.`);
162
163
  }
163
164
  export function classifyTwistUrl(url) {
164
165
  const parsed = parseTwistUrl(url);
@@ -178,17 +179,13 @@ export function parseUserIdRefs(refs) {
178
179
  return refs.split(',').map((userRef) => {
179
180
  const trimmed = userRef.trim();
180
181
  if (!trimmed) {
181
- console.error('Invalid user reference list: found empty value');
182
- process.exit(1);
183
- return 0;
182
+ throw new CliError('INVALID_REF', 'Invalid user reference list: found empty value');
184
183
  }
185
184
  try {
186
185
  return extractId(trimmed);
187
186
  }
188
187
  catch {
189
- console.error(`Invalid user reference: ${trimmed}. Use 123 or id:123`);
190
- process.exit(1);
191
- return 0;
188
+ throw new CliError('INVALID_REF', `Invalid user reference: ${trimmed}. Use 123 or id:123`);
192
189
  }
193
190
  });
194
191
  }
@@ -206,11 +203,11 @@ export async function resolveUserRefs(refs, workspaceId) {
206
203
  const query = ref.toLowerCase();
207
204
  const matches = users.filter((u) => u.name.toLowerCase().includes(query) || u.email?.toLowerCase().includes(query));
208
205
  if (matches.length === 0) {
209
- throw new Error(`No user found matching "${ref}"`);
206
+ throw new CliError('USER_NOT_FOUND', `No user found matching "${ref}"`);
210
207
  }
211
208
  if (matches.length > 1) {
212
209
  const list = matches.map((u) => ` ${u.id} ${u.name} <${u.email ?? ''}>`).join('\n');
213
- throw new Error(`Multiple users match "${ref}":\n${list}\n\nUse numeric ID to specify.`);
210
+ throw new CliError('AMBIGUOUS_USER', `Multiple users match "${ref}":\n${list}\n\nUse numeric ID to specify.`);
214
211
  }
215
212
  ids.push(matches[0].id);
216
213
  }