@doist/twist-cli 2.39.0 → 2.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/commands/account/current.d.ts +4 -0
- package/dist/commands/account/current.d.ts.map +1 -0
- package/dist/commands/account/current.js +46 -0
- package/dist/commands/account/current.js.map +1 -0
- package/dist/commands/account/helpers.d.ts +8 -0
- package/dist/commands/account/helpers.d.ts.map +1 -0
- package/dist/commands/account/helpers.js +18 -0
- package/dist/commands/account/helpers.js.map +1 -0
- package/dist/commands/account/index.d.ts +3 -0
- package/dist/commands/account/index.d.ts.map +1 -0
- package/dist/commands/account/index.js +30 -0
- package/dist/commands/account/index.js.map +1 -0
- package/dist/commands/account/list.d.ts +4 -0
- package/dist/commands/account/list.d.ts.map +1 -0
- package/dist/commands/account/list.js +30 -0
- package/dist/commands/account/list.js.map +1 -0
- package/dist/commands/account/remove.d.ts +4 -0
- package/dist/commands/account/remove.d.ts.map +1 -0
- package/dist/commands/account/remove.js +18 -0
- package/dist/commands/account/remove.js.map +1 -0
- package/dist/commands/account/use.d.ts +4 -0
- package/dist/commands/account/use.d.ts.map +1 -0
- package/dist/commands/account/use.js +13 -0
- package/dist/commands/account/use.js.map +1 -0
- package/dist/commands/auth/helpers.d.ts +1 -1
- package/dist/commands/auth/helpers.d.ts.map +1 -1
- package/dist/commands/auth/helpers.js.map +1 -1
- package/dist/commands/auth/store-wrap.d.ts +1 -1
- package/dist/commands/auth/store-wrap.d.ts.map +1 -1
- package/dist/commands/auth/store-wrap.js +16 -1
- package/dist/commands/auth/store-wrap.js.map +1 -1
- package/dist/commands/auth/token.d.ts.map +1 -1
- package/dist/commands/auth/token.js +19 -10
- package/dist/commands/auth/token.js.map +1 -1
- package/dist/commands/config/view.d.ts.map +1 -1
- package/dist/commands/config/view.js +17 -1
- package/dist/commands/config/view.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/auth-constants.d.ts +9 -0
- package/dist/lib/auth-constants.d.ts.map +1 -0
- package/dist/lib/auth-constants.js +9 -0
- package/dist/lib/auth-constants.js.map +1 -0
- package/dist/lib/auth-provider.d.ts +41 -7
- package/dist/lib/auth-provider.d.ts.map +1 -1
- package/dist/lib/auth-provider.js +179 -106
- package/dist/lib/auth-provider.js.map +1 -1
- package/dist/lib/auth.d.ts +13 -12
- package/dist/lib/auth.d.ts.map +1 -1
- package/dist/lib/auth.js +46 -238
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/config.d.ts +21 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +62 -3
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/errors.d.ts +1 -1
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/migrate-auth.d.ts +14 -0
- package/dist/lib/migrate-auth.d.ts.map +1 -0
- package/dist/lib/migrate-auth.js +61 -0
- package/dist/lib/migrate-auth.js.map +1 -0
- package/dist/lib/skills/content.d.ts +1 -1
- package/dist/lib/skills/content.d.ts.map +1 -1
- package/dist/lib/skills/content.js +3 -0
- package/dist/lib/skills/content.js.map +1 -1
- package/dist/lib/twist-account.d.ts +22 -0
- package/dist/lib/twist-account.d.ts.map +1 -0
- package/dist/lib/twist-account.js +23 -0
- package/dist/lib/twist-account.js.map +1 -0
- package/dist/lib/user-records.d.ts +15 -0
- package/dist/lib/user-records.d.ts.map +1 -0
- package/dist/lib/user-records.js +84 -0
- package/dist/lib/user-records.js.map +1 -0
- package/dist/postinstall.js +4 -0
- package/dist/postinstall.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { type AuthAccount, type AuthProvider, type
|
|
2
|
-
import { type
|
|
3
|
-
import type { AuthMode } from './config.js';
|
|
1
|
+
import { type AccountRef, type AuthAccount, type AuthProvider, type KeyringTokenStore } from '@doist/cli-core/auth';
|
|
2
|
+
import { type AuthMode } from './config.js';
|
|
4
3
|
export declare const AUTHORIZATION_URL = "https://twist.com/oauth/authorize";
|
|
5
4
|
export declare const TOKEN_URL = "https://twist.com/oauth/access_token";
|
|
6
5
|
export declare const REGISTRATION_URL = "https://twist.com/oauth/register";
|
|
@@ -19,10 +18,45 @@ export type TwistAccount = AuthAccount & {
|
|
|
19
18
|
authMode: AuthMode;
|
|
20
19
|
authScope: string;
|
|
21
20
|
};
|
|
21
|
+
export type TwistTokenStore = KeyringTokenStore<TwistAccount>;
|
|
22
22
|
export declare function createTwistAuthProvider(): AuthProvider<TwistAccount>;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Accepts `42`, `id:42`, and case-insensitive labels — `parseRef` normalises
|
|
25
|
+
* the numeric forms. Broader than cli-core's default strict-equality matcher.
|
|
26
|
+
*/
|
|
27
|
+
export declare function matchTwistAccount(account: TwistAccount, ref: AccountRef): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* True when the v2 store is empty but a legacy v1 token snapshot is still
|
|
30
|
+
* the only thing keeping the CLI authenticated — typically because
|
|
31
|
+
* `migrateLegacyAuth` couldn't reach the Twist API to identify the account
|
|
32
|
+
* (`MigrateSkipReason: 'identify-failed'`). Account-management commands
|
|
33
|
+
* use this to fail with a dedicated `AUTH_MIGRATION_PENDING` envelope
|
|
34
|
+
* instead of a misleading `ACCOUNT_NOT_FOUND`.
|
|
35
|
+
*/
|
|
36
|
+
export declare function isLegacyAuthActive(): Promise<boolean>;
|
|
37
|
+
/**
|
|
38
|
+
* Resolve a `ref` against the v2 store, returning the canonical account.
|
|
39
|
+
* Throws `ACCOUNT_NOT_FOUND` on a miss. Shared between the `tw account ...`
|
|
40
|
+
* commands and `withUserRefAware` so the same hint reaches every caller.
|
|
41
|
+
*/
|
|
42
|
+
export declare function findAccountInStore(store: TwistTokenStore, ref: AccountRef): Promise<TwistAccount>;
|
|
43
|
+
/**
|
|
44
|
+
* `TWIST_API_TOKEN` short-circuits `active()` only when no explicit ref is
|
|
45
|
+
* supplied — cli-core's `KeyringTokenStore` doesn't know about the env var,
|
|
46
|
+
* and an explicit ref means the caller targets a specific stored account.
|
|
47
|
+
*
|
|
48
|
+
* `ensureMigrated()` runs on every stored-state op so `--ignore-scripts`
|
|
49
|
+
* installs still migrate on first command. When migration isn't conclusive:
|
|
50
|
+
* - `active()` falls back to the legacy snapshot, honouring `ref` so it
|
|
51
|
+
* can't resolve to a different account than the caller asked for.
|
|
52
|
+
* - `set()` / `clear()` discharge legacy state on disk first so v2 writes
|
|
53
|
+
* aren't shadowed by a stale v1 token on the next read.
|
|
54
|
+
*/
|
|
27
55
|
export declare function createTwistTokenStore(): TwistTokenStore;
|
|
56
|
+
/**
|
|
57
|
+
* Where the currently-active token lives. Returns `'config-file'` whenever
|
|
58
|
+
* a plaintext token is on disk — including the legacy `config.token` slot —
|
|
59
|
+
* so doctor/config-view reports the security-relevant state accurately.
|
|
60
|
+
*/
|
|
61
|
+
export declare function getActiveTokenSource(): Promise<'env' | 'secure-store' | 'config-file'>;
|
|
28
62
|
//# sourceMappingURL=auth-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-provider.d.ts","sourceRoot":"","sources":["../../src/lib/auth-provider.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"auth-provider.d.ts","sourceRoot":"","sources":["../../src/lib/auth-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EAKjB,KAAK,iBAAiB,EAEzB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EAAE,KAAK,QAAQ,EAA0C,MAAM,aAAa,CAAA;AAOnF,eAAO,MAAM,iBAAiB,sCAAsC,CAAA;AACpE,eAAO,MAAM,SAAS,yCAAyC,CAAA;AAC/D,eAAO,MAAM,gBAAgB,qCAAqC,CAAA;AAKlE,eAAO,MAAM,iBAAiB,UAkB7B,CAAA;AAED,eAAO,MAAM,gBAAgB,UAW5B,CAAA;AAID;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAA;AAsE7D,wBAAgB,uBAAuB,IAAI,YAAY,CAAC,YAAY,CAAC,CAsHpE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAKjF;AA8ED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAK3D;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACpC,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,UAAU,GAChB,OAAO,CAAC,YAAY,CAAC,CASvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAkDvD;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,KAAK,GAAG,cAAc,GAAG,aAAa,CAAC,CAQ5F"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import { deriveChallenge, generateVerifier,
|
|
1
|
+
import { createKeyringTokenStore, createSecureStore, deriveChallenge, generateVerifier, } from '@doist/cli-core/auth';
|
|
2
2
|
import { createWrappedTwistClient } from './api.js';
|
|
3
|
-
import {
|
|
3
|
+
import { LEGACY_KEYRING_ACCOUNT, SECURE_STORE_SERVICE } from './auth-constants.js';
|
|
4
|
+
import { getConfig, getConfigPath, updateConfig } from './config.js';
|
|
4
5
|
import { CliError } from './errors.js';
|
|
6
|
+
import { runMigrateLegacyAuth } from './migrate-auth.js';
|
|
5
7
|
import { parseRef } from './refs.js';
|
|
8
|
+
import { makeTwistAccount, toTwistAccount } from './twist-account.js';
|
|
9
|
+
import { createTwistUserRecordStore, getDefaultUserRecord } from './user-records.js';
|
|
6
10
|
export const AUTHORIZATION_URL = 'https://twist.com/oauth/authorize';
|
|
7
11
|
export const TOKEN_URL = 'https://twist.com/oauth/access_token';
|
|
8
12
|
export const REGISTRATION_URL = 'https://twist.com/oauth/register';
|
|
@@ -170,129 +174,198 @@ export function createTwistAuthProvider() {
|
|
|
170
174
|
const hs = asHandshake(handshake);
|
|
171
175
|
const client = createWrappedTwistClient(token);
|
|
172
176
|
const user = await client.users.getSessionUser();
|
|
173
|
-
return {
|
|
174
|
-
id: String(user.id),
|
|
175
|
-
label: user.name,
|
|
176
|
-
authMode: hs.authMode ?? 'unknown',
|
|
177
|
-
authScope: hs.authScope ?? '',
|
|
178
|
-
};
|
|
177
|
+
return toTwistAccount(user, { authMode: hs.authMode, authScope: hs.authScope });
|
|
179
178
|
},
|
|
180
179
|
};
|
|
181
180
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
181
|
+
/**
|
|
182
|
+
* Accepts `42`, `id:42`, and case-insensitive labels — `parseRef` normalises
|
|
183
|
+
* the numeric forms. Broader than cli-core's default strict-equality matcher.
|
|
184
|
+
*/
|
|
185
|
+
export function matchTwistAccount(account, ref) {
|
|
186
|
+
const parsed = parseRef(ref);
|
|
187
|
+
if (parsed.type === 'id')
|
|
188
|
+
return Number(account.id) === parsed.id;
|
|
189
|
+
if (parsed.type === 'name')
|
|
190
|
+
return account.label.toLowerCase() === parsed.name.toLowerCase();
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
const TOKEN_ENV_VAR = 'TWIST_API_TOKEN';
|
|
194
|
+
/** True when the v2 store is the authoritative source. */
|
|
195
|
+
function migrationIsConclusive(result) {
|
|
196
|
+
return (result.status === 'migrated' ||
|
|
197
|
+
result.status === 'already-migrated' ||
|
|
198
|
+
result.status === 'no-legacy-state');
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Synthesise a snapshot from v1 state still on disk (legacy keyring slot,
|
|
202
|
+
* then plaintext `config.token`). Fallback for when migration can't complete.
|
|
203
|
+
* Token-only users with no `authUserId` get `account.id = ''`.
|
|
204
|
+
*/
|
|
205
|
+
async function readLegacyTokenSnapshot() {
|
|
206
|
+
const fromKeyring = await createSecureStore({
|
|
207
|
+
serviceName: SECURE_STORE_SERVICE,
|
|
208
|
+
account: LEGACY_KEYRING_ACCOUNT,
|
|
209
|
+
})
|
|
210
|
+
.getSecret()
|
|
211
|
+
.catch(() => null);
|
|
212
|
+
const config = await getConfig();
|
|
213
|
+
const token = fromKeyring || config.token?.trim() || null;
|
|
214
|
+
if (!token)
|
|
215
|
+
return null;
|
|
216
|
+
return {
|
|
217
|
+
token,
|
|
218
|
+
account: makeTwistAccount({
|
|
219
|
+
id: config.authUserId !== undefined ? String(config.authUserId) : '',
|
|
220
|
+
label: config.authUserName ?? '',
|
|
221
|
+
authMode: config.authMode,
|
|
222
|
+
authScope: config.authScope,
|
|
223
|
+
}),
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Clear the legacy keyring slot + v1 flat config fields. Runs before a
|
|
228
|
+
* write/clear when migration is inconclusive so v2 writes aren't shadowed
|
|
229
|
+
* by a stale legacy token. Best-effort — failures leave legacy in place.
|
|
230
|
+
*/
|
|
231
|
+
async function dischargeLegacyState() {
|
|
232
|
+
await Promise.allSettled([
|
|
233
|
+
createSecureStore({
|
|
234
|
+
serviceName: SECURE_STORE_SERVICE,
|
|
235
|
+
account: LEGACY_KEYRING_ACCOUNT,
|
|
236
|
+
}).deleteSecret(),
|
|
237
|
+
updateConfig({
|
|
238
|
+
token: undefined,
|
|
239
|
+
authMode: undefined,
|
|
240
|
+
authScope: undefined,
|
|
241
|
+
authUserId: undefined,
|
|
242
|
+
authUserName: undefined,
|
|
243
|
+
pendingSecureStoreClear: undefined,
|
|
244
|
+
}),
|
|
245
|
+
]);
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Memoised one-shot migration trigger. Resolves with `null` on rejection
|
|
249
|
+
* so the CLI never fails to start because of a migration error — the
|
|
250
|
+
* legacy snapshot fallback below handles that case. Tests reset the memo
|
|
251
|
+
* with `vi.resetModules()` + a dynamic re-import.
|
|
252
|
+
*/
|
|
253
|
+
let migrationPromise;
|
|
254
|
+
function ensureMigrated() {
|
|
255
|
+
if (!migrationPromise) {
|
|
256
|
+
migrationPromise = runMigrateLegacyAuth({ silent: true }).catch(() => null);
|
|
217
257
|
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
}
|
|
258
|
+
return migrationPromise;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* True when the v2 store is empty but a legacy v1 token snapshot is still
|
|
262
|
+
* the only thing keeping the CLI authenticated — typically because
|
|
263
|
+
* `migrateLegacyAuth` couldn't reach the Twist API to identify the account
|
|
264
|
+
* (`MigrateSkipReason: 'identify-failed'`). Account-management commands
|
|
265
|
+
* use this to fail with a dedicated `AUTH_MIGRATION_PENDING` envelope
|
|
266
|
+
* instead of a misleading `ACCOUNT_NOT_FOUND`.
|
|
267
|
+
*/
|
|
268
|
+
export async function isLegacyAuthActive() {
|
|
269
|
+
const result = await ensureMigrated();
|
|
270
|
+
if (result !== null && migrationIsConclusive(result))
|
|
232
271
|
return false;
|
|
272
|
+
const legacy = await readLegacyTokenSnapshot();
|
|
273
|
+
return legacy !== null;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Resolve a `ref` against the v2 store, returning the canonical account.
|
|
277
|
+
* Throws `ACCOUNT_NOT_FOUND` on a miss. Shared between the `tw account ...`
|
|
278
|
+
* commands and `withUserRefAware` so the same hint reaches every caller.
|
|
279
|
+
*/
|
|
280
|
+
export async function findAccountInStore(store, ref) {
|
|
281
|
+
const records = await store.list();
|
|
282
|
+
const match = records.find(({ account }) => matchTwistAccount(account, ref));
|
|
283
|
+
if (!match) {
|
|
284
|
+
throw new CliError('ACCOUNT_NOT_FOUND', `No stored account matches "${ref}".`, [
|
|
285
|
+
'Run: tw account list',
|
|
286
|
+
]);
|
|
233
287
|
}
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
288
|
+
return match.account;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* `TWIST_API_TOKEN` short-circuits `active()` only when no explicit ref is
|
|
292
|
+
* supplied — cli-core's `KeyringTokenStore` doesn't know about the env var,
|
|
293
|
+
* and an explicit ref means the caller targets a specific stored account.
|
|
294
|
+
*
|
|
295
|
+
* `ensureMigrated()` runs on every stored-state op so `--ignore-scripts`
|
|
296
|
+
* installs still migrate on first command. When migration isn't conclusive:
|
|
297
|
+
* - `active()` falls back to the legacy snapshot, honouring `ref` so it
|
|
298
|
+
* can't resolve to a different account than the caller asked for.
|
|
299
|
+
* - `set()` / `clear()` discharge legacy state on disk first so v2 writes
|
|
300
|
+
* aren't shadowed by a stale v1 token on the next read.
|
|
301
|
+
*/
|
|
302
|
+
export function createTwistTokenStore() {
|
|
303
|
+
const inner = createKeyringTokenStore({
|
|
304
|
+
serviceName: SECURE_STORE_SERVICE,
|
|
305
|
+
userRecords: createTwistUserRecordStore(),
|
|
306
|
+
recordsLocation: getConfigPath(),
|
|
307
|
+
matchAccount: matchTwistAccount,
|
|
308
|
+
});
|
|
309
|
+
async function maybeDischargeLegacy() {
|
|
310
|
+
const result = await ensureMigrated();
|
|
311
|
+
if (result === null || !migrationIsConclusive(result)) {
|
|
312
|
+
await dischargeLegacyState();
|
|
245
313
|
}
|
|
246
|
-
return snapshot;
|
|
247
314
|
}
|
|
248
|
-
return {
|
|
315
|
+
return Object.assign(Object.create(inner), {
|
|
249
316
|
async active(ref) {
|
|
250
|
-
// No-ref legacy path — tolerate missing keyring / no token and
|
|
251
|
-
// return null so downstream callers (status's `fetchLive`,
|
|
252
|
-
// login's pre-flight, etc.) keep falling through to their own
|
|
253
|
-
// `NoTokenError` envelope rather than seeing a raw keyring
|
|
254
|
-
// error. Returning a snapshot whenever a token resolves — even
|
|
255
|
-
// when the persisted identity is empty (env var, manual
|
|
256
|
-
// `tw auth token`, pre-upgrade config) — also avoids a second
|
|
257
|
-
// credential read downstream.
|
|
258
317
|
if (ref === undefined) {
|
|
259
|
-
|
|
318
|
+
const envToken = process.env[TOKEN_ENV_VAR];
|
|
319
|
+
if (envToken) {
|
|
320
|
+
return {
|
|
321
|
+
token: envToken,
|
|
322
|
+
account: { id: '', label: '', authMode: 'unknown', authScope: '' },
|
|
323
|
+
};
|
|
324
|
+
}
|
|
260
325
|
}
|
|
261
|
-
|
|
326
|
+
const result = await ensureMigrated();
|
|
327
|
+
if (result === null || !migrationIsConclusive(result)) {
|
|
328
|
+
const legacy = await readLegacyTokenSnapshot();
|
|
329
|
+
if (legacy && (ref === undefined || matchTwistAccount(legacy.account, ref))) {
|
|
330
|
+
return legacy;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
return inner.active(ref);
|
|
262
334
|
},
|
|
263
335
|
async set(account, token) {
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
authMode: account.authMode,
|
|
267
|
-
authScope: account.authScope,
|
|
268
|
-
authUserId: Number.isFinite(userId) ? userId : undefined,
|
|
269
|
-
authUserName: account.label,
|
|
270
|
-
});
|
|
336
|
+
await maybeDischargeLegacy();
|
|
337
|
+
return inner.set(account, token);
|
|
271
338
|
},
|
|
272
339
|
async clear(ref) {
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
// ✓ Logged out — the upstream `attachLogoutCommand` treats any
|
|
276
|
-
// non-throwing `clear()` as success.
|
|
277
|
-
if (ref !== undefined) {
|
|
278
|
-
await resolveByRef(ref);
|
|
279
|
-
}
|
|
280
|
-
lastClearResult = await clearApiToken();
|
|
340
|
+
await maybeDischargeLegacy();
|
|
341
|
+
return inner.clear(ref);
|
|
281
342
|
},
|
|
282
343
|
async list() {
|
|
283
|
-
|
|
284
|
-
return
|
|
344
|
+
await ensureMigrated();
|
|
345
|
+
return inner.list();
|
|
285
346
|
},
|
|
286
347
|
async setDefault(ref) {
|
|
287
|
-
await
|
|
288
|
-
|
|
289
|
-
},
|
|
290
|
-
getLastStorageResult() {
|
|
291
|
-
return lastStorageResult;
|
|
348
|
+
await ensureMigrated();
|
|
349
|
+
return inner.setDefault(ref);
|
|
292
350
|
},
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Where the currently-active token lives. Returns `'config-file'` whenever
|
|
355
|
+
* a plaintext token is on disk — including the legacy `config.token` slot —
|
|
356
|
+
* so doctor/config-view reports the security-relevant state accurately.
|
|
357
|
+
*/
|
|
358
|
+
export async function getActiveTokenSource() {
|
|
359
|
+
if (process.env[TOKEN_ENV_VAR])
|
|
360
|
+
return 'env';
|
|
361
|
+
const config = await getConfig();
|
|
362
|
+
const record = getDefaultUserRecord(config);
|
|
363
|
+
if (record?.fallbackToken)
|
|
364
|
+
return 'config-file';
|
|
365
|
+
if (record)
|
|
366
|
+
return 'secure-store';
|
|
367
|
+
if (config.token?.trim())
|
|
368
|
+
return 'config-file';
|
|
369
|
+
return 'secure-store';
|
|
297
370
|
}
|
|
298
371
|
//# sourceMappingURL=auth-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-provider.js","sourceRoot":"","sources":["../../src/lib/auth-provider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth-provider.js","sourceRoot":"","sources":["../../src/lib/auth-provider.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/auth.d.ts
CHANGED
|
@@ -1,21 +1,14 @@
|
|
|
1
|
+
import { SecureStoreUnavailableError } from '@doist/cli-core/auth';
|
|
1
2
|
import { type AuthMode } from './config.js';
|
|
2
3
|
import { CliError } from './errors.js';
|
|
3
|
-
export
|
|
4
|
-
export declare class NoTokenError extends CliError {
|
|
5
|
-
constructor();
|
|
6
|
-
}
|
|
4
|
+
export { SecureStoreUnavailableError };
|
|
7
5
|
export declare const TOKEN_ENV_VAR = "TWIST_API_TOKEN";
|
|
6
|
+
export declare const SECURE_STORE_DESCRIPTION = "system credential manager";
|
|
8
7
|
export type TokenStorageLocation = 'secure-store' | 'config-file';
|
|
9
8
|
export type TokenStorageResult = {
|
|
10
9
|
storage: TokenStorageLocation;
|
|
11
10
|
warning?: string;
|
|
12
11
|
};
|
|
13
|
-
export type SaveApiTokenOptions = {
|
|
14
|
-
authMode?: AuthMode;
|
|
15
|
-
authScope?: string;
|
|
16
|
-
authUserId?: number;
|
|
17
|
-
authUserName?: string;
|
|
18
|
-
};
|
|
19
12
|
export type AuthMetadata = {
|
|
20
13
|
authMode: AuthMode;
|
|
21
14
|
authScope?: string;
|
|
@@ -34,9 +27,17 @@ export type AuthProbeResult = {
|
|
|
34
27
|
token: string;
|
|
35
28
|
metadata: AuthProbeMetadata;
|
|
36
29
|
};
|
|
30
|
+
export declare class NoTokenError extends CliError {
|
|
31
|
+
constructor();
|
|
32
|
+
}
|
|
33
|
+
/** Read the active token. The store wraps env-var precedence internally. */
|
|
37
34
|
export declare function getApiToken(): Promise<string>;
|
|
35
|
+
/** Token + metadata in one round-trip for `tw config view` / `tw doctor`. */
|
|
38
36
|
export declare function probeApiToken(): Promise<AuthProbeResult>;
|
|
37
|
+
/**
|
|
38
|
+
* Auth metadata for `tw auth status` and `ensureWriteAllowed`. Falls back
|
|
39
|
+
* to v1 flat fields when no v2 record exists so a legacy `read-only` token
|
|
40
|
+
* isn't reported as `'unknown'` — that would skip the local READ_ONLY guard.
|
|
41
|
+
*/
|
|
39
42
|
export declare function getAuthMetadata(): Promise<AuthMetadata>;
|
|
40
|
-
export declare function saveApiToken(token: string, options?: SaveApiTokenOptions): Promise<TokenStorageResult>;
|
|
41
|
-
export declare function clearApiToken(): Promise<TokenStorageResult>;
|
|
42
43
|
//# sourceMappingURL=auth.d.ts.map
|
package/dist/lib/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAGlE,OAAO,EAAE,KAAK,QAAQ,EAAa,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGtC,OAAO,EAAE,2BAA2B,EAAE,CAAA;AAEtC,eAAO,MAAM,aAAa,oBAAoB,CAAA;AAE9C,eAAO,MAAM,wBAAwB,8BAA8B,CAAA;AAEnE,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,aAAa,CAAA;AAEjE,MAAM,MAAM,kBAAkB,GAAG;IAC7B,OAAO,EAAE,oBAAoB,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,KAAK,GAAG,aAAa,GAAG,cAAc,CAAA;CACjD,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,iBAAiB,CAAA;CAC9B,CAAA;AAED,qBAAa,YAAa,SAAQ,QAAQ;;CAUzC;AAED,4EAA4E;AAC5E,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAInD;AAED,6EAA6E;AAC7E,wBAAsB,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC,CAW9D;AAED;;;;GAIG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAe7D"}
|