@doist/twist-cli 2.23.1 → 2.23.3
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/CHANGELOG.md +12 -0
- package/dist/commands/auth/login.d.ts.map +1 -1
- package/dist/commands/auth/login.js +8 -3
- package/dist/commands/auth/login.js.map +1 -1
- package/dist/commands/auth/status.d.ts.map +1 -1
- package/dist/commands/auth/status.js +28 -24
- package/dist/commands/auth/status.js.map +1 -1
- package/dist/commands/auth/token.d.ts.map +1 -1
- package/dist/commands/auth/token.js +8 -7
- package/dist/commands/auth/token.js.map +1 -1
- package/dist/commands/away/helpers.d.ts.map +1 -1
- package/dist/commands/away/helpers.js +2 -4
- package/dist/commands/away/helpers.js.map +1 -1
- package/dist/commands/away/set.d.ts.map +1 -1
- package/dist/commands/away/set.js +2 -2
- package/dist/commands/away/set.js.map +1 -1
- package/dist/commands/changelog.d.ts.map +1 -1
- package/dist/commands/changelog.js +3 -6
- package/dist/commands/changelog.js.map +1 -1
- package/dist/commands/channel.d.ts.map +1 -1
- package/dist/commands/channel.js +3 -2
- package/dist/commands/channel.js.map +1 -1
- package/dist/commands/comment/update.d.ts.map +1 -1
- package/dist/commands/comment/update.js +2 -3
- package/dist/commands/comment/update.js.map +1 -1
- package/dist/commands/completion/install.d.ts.map +1 -1
- package/dist/commands/completion/install.js +2 -3
- package/dist/commands/completion/install.js.map +1 -1
- package/dist/commands/conversation/helpers.d.ts.map +1 -1
- package/dist/commands/conversation/helpers.js +4 -3
- package/dist/commands/conversation/helpers.js.map +1 -1
- package/dist/commands/conversation/reply.d.ts.map +1 -1
- package/dist/commands/conversation/reply.js +2 -3
- package/dist/commands/conversation/reply.js.map +1 -1
- package/dist/commands/conversation/unread.d.ts.map +1 -1
- package/dist/commands/conversation/unread.js +4 -2
- package/dist/commands/conversation/unread.js.map +1 -1
- package/dist/commands/conversation/with.d.ts.map +1 -1
- package/dist/commands/conversation/with.js +36 -41
- package/dist/commands/conversation/with.js.map +1 -1
- package/dist/commands/inbox.d.ts.map +1 -1
- package/dist/commands/inbox.js +5 -3
- package/dist/commands/inbox.js.map +1 -1
- package/dist/commands/msg/update.d.ts.map +1 -1
- package/dist/commands/msg/update.js +2 -3
- package/dist/commands/msg/update.js.map +1 -1
- package/dist/commands/react.d.ts.map +1 -1
- package/dist/commands/react.js +3 -4
- package/dist/commands/react.js.map +1 -1
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +18 -31
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/skill/install.d.ts.map +1 -1
- package/dist/commands/skill/install.js +8 -13
- package/dist/commands/skill/install.js.map +1 -1
- package/dist/commands/skill/uninstall.d.ts.map +1 -1
- package/dist/commands/skill/uninstall.js +7 -11
- package/dist/commands/skill/uninstall.js.map +1 -1
- package/dist/commands/skill/update.d.ts.map +1 -1
- package/dist/commands/skill/update.js +9 -14
- package/dist/commands/skill/update.js.map +1 -1
- package/dist/commands/thread/create.d.ts.map +1 -1
- package/dist/commands/thread/create.js +2 -3
- package/dist/commands/thread/create.js.map +1 -1
- package/dist/commands/thread/delete.d.ts.map +1 -1
- package/dist/commands/thread/delete.js +3 -6
- package/dist/commands/thread/delete.js.map +1 -1
- package/dist/commands/thread/helpers.d.ts.map +1 -1
- package/dist/commands/thread/helpers.js +2 -1
- package/dist/commands/thread/helpers.js.map +1 -1
- package/dist/commands/thread/mute.d.ts.map +1 -1
- package/dist/commands/thread/mute.js +2 -2
- package/dist/commands/thread/mute.js.map +1 -1
- package/dist/commands/thread/reply.d.ts.map +1 -1
- package/dist/commands/thread/reply.js +3 -6
- package/dist/commands/thread/reply.js.map +1 -1
- package/dist/commands/update/action.d.ts.map +1 -1
- package/dist/commands/update/action.js +13 -20
- package/dist/commands/update/action.js.map +1 -1
- package/dist/commands/update/switch.d.ts.map +1 -1
- package/dist/commands/update/switch.js +3 -6
- package/dist/commands/update/switch.js.map +1 -1
- package/dist/commands/user.d.ts.map +1 -1
- package/dist/commands/user.js +2 -1
- package/dist/commands/user.js.map +1 -1
- package/dist/commands/view.d.ts.map +1 -1
- package/dist/commands/view.js +7 -2
- package/dist/commands/view.js.map +1 -1
- package/dist/index.js +19 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +5 -2
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/auth.d.ts +4 -0
- package/dist/lib/auth.d.ts.map +1 -1
- package/dist/lib/auth.js +13 -3
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/errors.d.ts +14 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +13 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/global-args.d.ts +38 -0
- package/dist/lib/global-args.d.ts.map +1 -0
- package/dist/lib/global-args.js +100 -0
- package/dist/lib/global-args.js.map +1 -0
- package/dist/lib/input.d.ts +0 -1
- package/dist/lib/input.d.ts.map +1 -1
- package/dist/lib/input.js +1 -8
- package/dist/lib/input.js.map +1 -1
- package/dist/lib/oauth.d.ts.map +1 -1
- package/dist/lib/oauth.js +15 -9
- package/dist/lib/oauth.js.map +1 -1
- package/dist/lib/output.d.ts +4 -1
- package/dist/lib/output.d.ts.map +1 -1
- package/dist/lib/output.js +23 -5
- package/dist/lib/output.js.map +1 -1
- package/dist/lib/permissions.d.ts.map +1 -1
- package/dist/lib/permissions.js +4 -1
- package/dist/lib/permissions.js.map +1 -1
- package/dist/lib/progress.d.ts.map +1 -1
- package/dist/lib/progress.js +3 -18
- package/dist/lib/progress.js.map +1 -1
- package/dist/lib/public-channels.d.ts +0 -1
- package/dist/lib/public-channels.d.ts.map +1 -1
- package/dist/lib/public-channels.js +5 -8
- package/dist/lib/public-channels.js.map +1 -1
- package/dist/lib/refs.d.ts.map +1 -1
- package/dist/lib/refs.js +21 -18
- package/dist/lib/refs.js.map +1 -1
- package/dist/lib/search-api.d.ts.map +1 -1
- package/dist/lib/search-api.js +2 -1
- package/dist/lib/search-api.js.map +1 -1
- package/dist/lib/skills/create-installer.d.ts.map +1 -1
- package/dist/lib/skills/create-installer.js +9 -4
- package/dist/lib/skills/create-installer.js.map +1 -1
- package/dist/lib/spinner.d.ts.map +1 -1
- package/dist/lib/spinner.js +1 -22
- package/dist/lib/spinner.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export class CliError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
hints;
|
|
4
|
+
type;
|
|
5
|
+
constructor(code, message, hints, type = 'error') {
|
|
6
|
+
super(message);
|
|
7
|
+
this.code = code;
|
|
8
|
+
this.hints = hints;
|
|
9
|
+
this.type = type;
|
|
10
|
+
this.name = 'CliError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AA2CA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAEX;IAEA;IACA;IAJpB,YACoB,IAAe,EAC/B,OAAe,EACC,KAAgB,EAChB,OAAkB,OAAO;QAEzC,KAAK,CAAC,OAAO,CAAC,CAAA;QALE,SAAI,GAAJ,IAAI,CAAW;QAEf,UAAK,GAAL,KAAK,CAAW;QAChB,SAAI,GAAJ,IAAI,CAAqB;QAGzC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;IAC1B,CAAC;CACJ"}
|
|
@@ -0,0 +1,38 @@
|
|
|
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
|
+
export interface GlobalArgs {
|
|
12
|
+
json: boolean;
|
|
13
|
+
ndjson: boolean;
|
|
14
|
+
noSpinner: boolean;
|
|
15
|
+
progressJsonl: boolean;
|
|
16
|
+
progressJsonlPath: string | undefined;
|
|
17
|
+
includePrivateChannels: boolean;
|
|
18
|
+
accessible: boolean;
|
|
19
|
+
nonInteractive: boolean;
|
|
20
|
+
interactive: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Parse well-known global flags from an argv array.
|
|
24
|
+
*
|
|
25
|
+
* Pure function — pass an explicit array for testing, or omit to use
|
|
26
|
+
* `process.argv`.
|
|
27
|
+
*/
|
|
28
|
+
export declare function parseGlobalArgs(argv?: string[]): GlobalArgs;
|
|
29
|
+
/** Clear the cached parse result. Call in test teardown. */
|
|
30
|
+
export declare function resetGlobalArgs(): void;
|
|
31
|
+
export declare function isJsonMode(): boolean;
|
|
32
|
+
export declare function isAccessible(): boolean;
|
|
33
|
+
export declare function isNonInteractive(): boolean;
|
|
34
|
+
export declare function includePrivateChannels(): boolean;
|
|
35
|
+
export declare function shouldDisableSpinner(): boolean;
|
|
36
|
+
export declare function isProgressJsonlEnabled(): boolean;
|
|
37
|
+
export declare function getProgressJsonlPath(): string | undefined;
|
|
38
|
+
//# sourceMappingURL=global-args.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-args.d.ts","sourceRoot":"","sources":["../../src/lib/global-args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,OAAO,CAAA;IACtB,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,sBAAsB,EAAE,OAAO,CAAA;IAC/B,UAAU,EAAE,OAAO,CAAA;IACnB,cAAc,EAAE,OAAO,CAAA;IACvB,WAAW,EAAE,OAAO,CAAA;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU,CAkC3D;AAeD,4DAA4D;AAC5D,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAMD,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAK1C;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAMhD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAM9C;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAEzD"}
|
|
@@ -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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"}
|
package/dist/lib/input.d.ts
CHANGED
package/dist/lib/input.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/lib/input.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
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) {
|
package/dist/lib/input.js.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/lib/input.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/oauth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/lib/oauth.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/lib/oauth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,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,CA6DlE;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,CAkEjB"}
|
package/dist/lib/oauth.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OAuth flow coordination for Twist API authentication
|
|
3
3
|
*/
|
|
4
|
+
import { CliError } from './errors.js';
|
|
5
|
+
const AUTH_HINTS = ['Try again: tw auth login', 'Or set TWIST_API_TOKEN environment variable'];
|
|
4
6
|
// OAuth configuration for Twist (using well-known endpoints with dynamic client registration)
|
|
5
7
|
export const AUTHORIZATION_URL = 'https://twist.com/oauth/authorize';
|
|
6
8
|
export const TOKEN_URL = 'https://twist.com/oauth/access_token';
|
|
@@ -60,11 +62,11 @@ export async function registerDynamicClient() {
|
|
|
60
62
|
});
|
|
61
63
|
if (!response.ok) {
|
|
62
64
|
const errorText = await response.text();
|
|
63
|
-
throw new
|
|
65
|
+
throw new CliError('AUTH_FAILED', `Client registration failed: ${response.status} ${response.statusText} - ${errorText}`, AUTH_HINTS);
|
|
64
66
|
}
|
|
65
67
|
const result = await response.json();
|
|
66
68
|
if (!result.client_id || !result.client_secret) {
|
|
67
|
-
throw new
|
|
69
|
+
throw new CliError('AUTH_FAILED', 'Invalid client registration response: missing client_id or client_secret', AUTH_HINTS);
|
|
68
70
|
}
|
|
69
71
|
return {
|
|
70
72
|
client_id: result.client_id,
|
|
@@ -72,10 +74,12 @@ export async function registerDynamicClient() {
|
|
|
72
74
|
};
|
|
73
75
|
}
|
|
74
76
|
catch (error) {
|
|
77
|
+
if (error instanceof CliError)
|
|
78
|
+
throw error;
|
|
75
79
|
if (error instanceof Error) {
|
|
76
|
-
throw new
|
|
80
|
+
throw new CliError('AUTH_FAILED', `Failed to register OAuth client: ${error.message}`, AUTH_HINTS);
|
|
77
81
|
}
|
|
78
|
-
throw new
|
|
82
|
+
throw new CliError('AUTH_FAILED', 'Failed to register OAuth client: Unknown error', AUTH_HINTS);
|
|
79
83
|
}
|
|
80
84
|
}
|
|
81
85
|
/**
|
|
@@ -119,22 +123,24 @@ export async function exchangeCodeForToken(code, codeVerifier, client) {
|
|
|
119
123
|
});
|
|
120
124
|
if (!response.ok) {
|
|
121
125
|
const errorText = await response.text();
|
|
122
|
-
throw new
|
|
126
|
+
throw new CliError('AUTH_FAILED', `Token exchange failed: ${response.status} ${response.statusText} - ${errorText}`, AUTH_HINTS);
|
|
123
127
|
}
|
|
124
128
|
const data = await response.json();
|
|
125
129
|
if (data.error) {
|
|
126
|
-
throw new
|
|
130
|
+
throw new CliError('AUTH_FAILED', `OAuth error: ${data.error} - ${data.error_description || 'Unknown error'}`, AUTH_HINTS);
|
|
127
131
|
}
|
|
128
132
|
if (!data.access_token) {
|
|
129
|
-
throw new
|
|
133
|
+
throw new CliError('AUTH_FAILED', 'No access token received from OAuth server', AUTH_HINTS);
|
|
130
134
|
}
|
|
131
135
|
return data.access_token;
|
|
132
136
|
}
|
|
133
137
|
catch (error) {
|
|
138
|
+
if (error instanceof CliError)
|
|
139
|
+
throw error;
|
|
134
140
|
if (error instanceof Error) {
|
|
135
|
-
throw new
|
|
141
|
+
throw new CliError('AUTH_FAILED', `Failed to exchange code for token: ${error.message}`, AUTH_HINTS);
|
|
136
142
|
}
|
|
137
|
-
throw new
|
|
143
|
+
throw new CliError('AUTH_FAILED', 'Failed to exchange code for token: Unknown error', AUTH_HINTS);
|
|
138
144
|
}
|
|
139
145
|
}
|
|
140
146
|
//# sourceMappingURL=oauth.js.map
|
package/dist/lib/oauth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/lib/oauth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,8FAA8F;AAC9F,MAAM,CAAC,MAAM,iBAAiB,GAAG,mCAAmC,CAAA;AACpE,MAAM,CAAC,MAAM,SAAS,GAAG,sCAAsC,CAAA;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,kCAAkC,CAAA;AAClE,MAAM,CAAC,MAAM,kBAAkB,GAAG,gCAAgC,CAAA;AAElE,yDAAyD;AACzD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,WAAW,EAAE,4CAA4C;IACzD,YAAY,EAAE,0CAA0C;IACxD,iBAAiB,EAAE,6BAA6B;IAChD,eAAe,EAAE,2BAA2B;IAC5C,cAAc,EAAE,0BAA0B;IAC1C,eAAe,EAAE,4BAA4B;IAC7C,eAAe,EAAE,yBAAyB;IAC1C,gBAAgB,EAAE,yBAAyB;IAC3C,eAAe,EAAE,gBAAgB;IACjC,gBAAgB,EAAE,gBAAgB;IAClC,gBAAgB,EAAE,iBAAiB;IACnC,iBAAiB,EAAE,gBAAgB;IACnC,aAAa,EAAE,uBAAuB;IACtC,oBAAoB,EAAE,qBAAqB;CAC9C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAEX,+DAA+D;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,WAAW;IACX,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,aAAa;IACb,oBAAoB;CACvB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAUX;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACvC,MAAM,UAAU,GAAG;QACf,WAAW,EAAE,WAAW;QACxB,UAAU,EAAE,oCAAoC;QAChD,aAAa,EAAE,CAAC,kBAAkB,CAAC;QACnC,WAAW,EAAE,CAAC,oBAAoB,CAAC;QACnC,cAAc,EAAE,CAAC,MAAM,CAAC;QACxB,0BAA0B,EAAE,qBAAqB,EAAE,oCAAoC;QACvF,gBAAgB,EAAE,QAAQ,EAAE,8BAA8B;QAC1D,QAAQ,EACJ,gHAAgH;KACvH,CAAA;IAED,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE;YAC3C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC7B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;SACnC,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YACvC,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/lib/oauth.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/output.d.ts
CHANGED
|
@@ -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
|
package/dist/lib/output.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/lib/output.js
CHANGED
|
@@ -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(
|
|
114
|
-
|
|
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
|
package/dist/lib/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/lib/permissions.ts"],"names":[],"mappings":"
|
|
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,CAOxD"}
|
package/dist/lib/permissions.js
CHANGED
|
@@ -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,9 @@ 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
|
|
33
|
+
throw new CliError('READ_ONLY', READ_ONLY_ERROR_MESSAGE, [
|
|
34
|
+
'Re-run: tw auth login (without --read-only)',
|
|
35
|
+
]);
|
|
33
36
|
}
|
|
34
37
|
}
|
|
35
38
|
//# 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;
|
|
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,EAAE;YACrD,6CAA6C;SAChD,CAAC,CAAA;IACN,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/lib/progress.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/lib/progress.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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' });
|
package/dist/lib/progress.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/lib/progress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
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":"
|
|
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
|
-
|
|
3
|
-
|
|
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
|
|
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;
|
|
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"}
|
package/dist/lib/refs.d.ts.map
CHANGED
|
@@ -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;
|
|
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,CAgDzE;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,CAqC1F"}
|