@ralphkrauss/codex-account-switcher 0.1.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/CONTRIBUTING.md +21 -0
- package/LICENSE.md +21 -0
- package/PUBLISHING.md +116 -0
- package/README.md +112 -0
- package/SECURITY.md +17 -0
- package/SUPPORT.md +14 -0
- package/dist/accounts.d.ts +107 -0
- package/dist/accounts.js +462 -0
- package/dist/accounts.js.map +1 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.js +285 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/package.json +69 -0
- package/src/accounts.ts +645 -0
- package/src/cli.ts +343 -0
- package/src/index.ts +38 -0
package/dist/accounts.js
ADDED
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { access, chmod, copyFile, mkdir, readdir, readFile, rename, rm, stat, writeFile, } from 'node:fs/promises';
|
|
3
|
+
import { constants as fsConstants } from 'node:fs';
|
|
4
|
+
import { homedir } from 'node:os';
|
|
5
|
+
import { delimiter, dirname, isAbsolute, join, relative, resolve, } from 'node:path';
|
|
6
|
+
export const AUTH_NON_EMPTY_BYTES = 100;
|
|
7
|
+
export const ACCOUNT_NAME_PATTERN = /^[A-Za-z0-9._-]+$/u;
|
|
8
|
+
export class CxError extends Error {
|
|
9
|
+
exitCode;
|
|
10
|
+
constructor(message, exitCode = 1) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = 'CxError';
|
|
13
|
+
this.exitCode = exitCode;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function isNotFoundError(error) {
|
|
17
|
+
return typeof error === 'object'
|
|
18
|
+
&& error !== null
|
|
19
|
+
&& 'code' in error
|
|
20
|
+
&& error.code === 'ENOENT';
|
|
21
|
+
}
|
|
22
|
+
function errorMessage(error) {
|
|
23
|
+
return error instanceof Error ? error.message : String(error);
|
|
24
|
+
}
|
|
25
|
+
async function pathExists(path) {
|
|
26
|
+
try {
|
|
27
|
+
await access(path, fsConstants.F_OK);
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
if (isNotFoundError(error)) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async function statIfExists(path) {
|
|
38
|
+
try {
|
|
39
|
+
return await stat(path);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
if (isNotFoundError(error)) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async function chmodIfPossible(path, mode) {
|
|
49
|
+
if (process.platform === 'win32') {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
await chmod(path, mode);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
const code = typeof error === 'object' && error !== null && 'code' in error
|
|
57
|
+
? error.code
|
|
58
|
+
: undefined;
|
|
59
|
+
if (code === 'ENOSYS' || code === 'ENOTSUP' || code === 'EINVAL' || code === 'EPERM') {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async function ensurePrivateDir(path) {
|
|
66
|
+
const existed = await pathExists(path);
|
|
67
|
+
await mkdir(path, { recursive: true, mode: 0o700 });
|
|
68
|
+
if (!existed) {
|
|
69
|
+
await chmodIfPossible(path, 0o700);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async function ensureCodexStoreDirs(paths) {
|
|
73
|
+
await ensurePrivateDir(paths.home);
|
|
74
|
+
await ensurePrivateDir(paths.accountsDir);
|
|
75
|
+
}
|
|
76
|
+
async function copyFilePrivate(source, destination) {
|
|
77
|
+
await ensurePrivateDir(dirname(destination));
|
|
78
|
+
await copyFile(source, destination);
|
|
79
|
+
await chmodIfPossible(destination, 0o600);
|
|
80
|
+
}
|
|
81
|
+
async function writeFilePrivate(destination, contents) {
|
|
82
|
+
await ensurePrivateDir(dirname(destination));
|
|
83
|
+
await writeFile(destination, contents, { mode: 0o600 });
|
|
84
|
+
await chmodIfPossible(destination, 0o600);
|
|
85
|
+
}
|
|
86
|
+
export function getCodexHome(env = process.env) {
|
|
87
|
+
const configured = env.CODEX_HOME;
|
|
88
|
+
if (configured && configured.trim().length > 0) {
|
|
89
|
+
return resolve(configured);
|
|
90
|
+
}
|
|
91
|
+
return join(homedir(), '.codex');
|
|
92
|
+
}
|
|
93
|
+
export function getCodexPaths(env = process.env) {
|
|
94
|
+
const home = getCodexHome(env);
|
|
95
|
+
return {
|
|
96
|
+
home,
|
|
97
|
+
accountsDir: join(home, 'accounts'),
|
|
98
|
+
currentFile: join(home, '.current-account'),
|
|
99
|
+
authFile: join(home, 'auth.json'),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
export function validateAccountName(name) {
|
|
103
|
+
if (name.length === 0) {
|
|
104
|
+
throw new CxError('invalid account name: account name must not be empty', 2);
|
|
105
|
+
}
|
|
106
|
+
if (/^\.+$/u.test(name)) {
|
|
107
|
+
throw new CxError('invalid account name: account name must not be only dots', 2);
|
|
108
|
+
}
|
|
109
|
+
if (!ACCOUNT_NAME_PATTERN.test(name)) {
|
|
110
|
+
throw new CxError('invalid account name: use only letters, numbers, dot, underscore, and dash', 2);
|
|
111
|
+
}
|
|
112
|
+
return name;
|
|
113
|
+
}
|
|
114
|
+
export function accountPathForName(paths, name) {
|
|
115
|
+
const safeName = validateAccountName(name);
|
|
116
|
+
const accountsRoot = resolve(paths.accountsDir);
|
|
117
|
+
const accountFile = resolve(accountsRoot, `${safeName}.json`);
|
|
118
|
+
const relativePath = relative(accountsRoot, accountFile);
|
|
119
|
+
if (relativePath.length === 0 || relativePath.startsWith('..') || isAbsolute(relativePath)) {
|
|
120
|
+
throw new CxError('invalid account name: resolved outside accounts directory', 2);
|
|
121
|
+
}
|
|
122
|
+
return accountFile;
|
|
123
|
+
}
|
|
124
|
+
export async function authFileExists(paths = getCodexPaths()) {
|
|
125
|
+
const stats = await statIfExists(paths.authFile);
|
|
126
|
+
return stats?.isFile() ?? false;
|
|
127
|
+
}
|
|
128
|
+
export async function authLooksNonEmpty(paths = getCodexPaths()) {
|
|
129
|
+
const stats = await statIfExists(paths.authFile);
|
|
130
|
+
return Boolean(stats?.isFile() && stats.size > AUTH_NON_EMPTY_BYTES);
|
|
131
|
+
}
|
|
132
|
+
export async function readCurrentMarker(paths = getCodexPaths()) {
|
|
133
|
+
let raw;
|
|
134
|
+
try {
|
|
135
|
+
raw = await readFile(paths.currentFile, 'utf8');
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
if (isNotFoundError(error)) {
|
|
139
|
+
return { state: 'missing' };
|
|
140
|
+
}
|
|
141
|
+
throw error;
|
|
142
|
+
}
|
|
143
|
+
const marker = raw.trim();
|
|
144
|
+
try {
|
|
145
|
+
return { state: 'valid', name: validateAccountName(marker) };
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
return {
|
|
149
|
+
state: 'invalid',
|
|
150
|
+
raw: marker,
|
|
151
|
+
reason: errorMessage(error),
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
async function writeCurrentMarker(paths, name) {
|
|
156
|
+
await writeFilePrivate(paths.currentFile, `${validateAccountName(name)}\n`);
|
|
157
|
+
}
|
|
158
|
+
async function clearCurrentMarker(paths) {
|
|
159
|
+
await rm(paths.currentFile, { force: true });
|
|
160
|
+
}
|
|
161
|
+
export async function listAccountNames(paths = getCodexPaths()) {
|
|
162
|
+
let entries;
|
|
163
|
+
try {
|
|
164
|
+
entries = await readdir(paths.accountsDir, { withFileTypes: true });
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
if (isNotFoundError(error)) {
|
|
168
|
+
return [];
|
|
169
|
+
}
|
|
170
|
+
throw error;
|
|
171
|
+
}
|
|
172
|
+
const names = [];
|
|
173
|
+
for (const entry of entries) {
|
|
174
|
+
if (!entry.isFile() || !entry.name.endsWith('.json')) {
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
const candidate = entry.name.slice(0, -'.json'.length);
|
|
178
|
+
try {
|
|
179
|
+
names.push(validateAccountName(candidate));
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
// Ignore legacy or manually-created files that cannot be addressed safely.
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return names.sort((left, right) => left.localeCompare(right));
|
|
186
|
+
}
|
|
187
|
+
export async function listAccounts(paths = getCodexPaths()) {
|
|
188
|
+
const [names, currentMarker] = await Promise.all([
|
|
189
|
+
listAccountNames(paths),
|
|
190
|
+
readCurrentMarker(paths),
|
|
191
|
+
]);
|
|
192
|
+
const nameSet = new Set(names);
|
|
193
|
+
const current = currentMarker.state === 'valid' && nameSet.has(currentMarker.name)
|
|
194
|
+
? currentMarker.name
|
|
195
|
+
: null;
|
|
196
|
+
const accounts = names.map((name) => ({
|
|
197
|
+
name,
|
|
198
|
+
file: accountPathForName(paths, name),
|
|
199
|
+
active: name === current,
|
|
200
|
+
}));
|
|
201
|
+
return {
|
|
202
|
+
home: paths.home,
|
|
203
|
+
accountsDir: paths.accountsDir,
|
|
204
|
+
current,
|
|
205
|
+
currentMarker,
|
|
206
|
+
accounts,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
export async function writebackCurrentAccount(options = {}) {
|
|
210
|
+
const paths = options.paths ?? getCodexPaths();
|
|
211
|
+
const current = await readCurrentMarker(paths);
|
|
212
|
+
if (current.state === 'missing') {
|
|
213
|
+
return { performed: false, reason: 'no current account marker' };
|
|
214
|
+
}
|
|
215
|
+
if (current.state === 'invalid') {
|
|
216
|
+
return { performed: false, reason: 'current account marker is invalid' };
|
|
217
|
+
}
|
|
218
|
+
const slot = accountPathForName(paths, current.name);
|
|
219
|
+
if (!(await pathExists(slot))) {
|
|
220
|
+
return { performed: false, reason: 'current account slot no longer exists', account: current.name };
|
|
221
|
+
}
|
|
222
|
+
if (!(await authLooksNonEmpty(paths))) {
|
|
223
|
+
return { performed: false, reason: 'live auth.json is missing or too small', account: current.name };
|
|
224
|
+
}
|
|
225
|
+
await copyFilePrivate(paths.authFile, slot);
|
|
226
|
+
return { performed: true, account: current.name };
|
|
227
|
+
}
|
|
228
|
+
export async function saveAccount(name, options = {}) {
|
|
229
|
+
const paths = options.paths ?? getCodexPaths();
|
|
230
|
+
const safeName = validateAccountName(name);
|
|
231
|
+
const destination = accountPathForName(paths, safeName);
|
|
232
|
+
if (!(await authLooksNonEmpty(paths))) {
|
|
233
|
+
throw new CxError(`no usable ${paths.authFile} found (run 'codex login' first)`, 1);
|
|
234
|
+
}
|
|
235
|
+
if ((await pathExists(destination)) && options.force !== true) {
|
|
236
|
+
throw new CxError(`account '${safeName}' already exists (use --force to overwrite)`, 1);
|
|
237
|
+
}
|
|
238
|
+
await ensureCodexStoreDirs(paths);
|
|
239
|
+
await copyFilePrivate(paths.authFile, destination);
|
|
240
|
+
await writeCurrentMarker(paths, safeName);
|
|
241
|
+
}
|
|
242
|
+
export async function useAccount(name, options = {}) {
|
|
243
|
+
const paths = options.paths ?? getCodexPaths();
|
|
244
|
+
const safeName = validateAccountName(name);
|
|
245
|
+
const source = accountPathForName(paths, safeName);
|
|
246
|
+
if (!(await pathExists(source))) {
|
|
247
|
+
throw new CxError(`no account '${safeName}'`, 1);
|
|
248
|
+
}
|
|
249
|
+
const writeback = await writebackCurrentAccount({ paths });
|
|
250
|
+
await copyFilePrivate(source, paths.authFile);
|
|
251
|
+
await writeCurrentMarker(paths, safeName);
|
|
252
|
+
return writeback;
|
|
253
|
+
}
|
|
254
|
+
export async function renameAccount(oldName, newName, options = {}) {
|
|
255
|
+
const paths = options.paths ?? getCodexPaths();
|
|
256
|
+
const safeOldName = validateAccountName(oldName);
|
|
257
|
+
const safeNewName = validateAccountName(newName);
|
|
258
|
+
if (safeOldName === safeNewName) {
|
|
259
|
+
throw new CxError('old and new account names must differ', 2);
|
|
260
|
+
}
|
|
261
|
+
const source = accountPathForName(paths, safeOldName);
|
|
262
|
+
const destination = accountPathForName(paths, safeNewName);
|
|
263
|
+
const destinationExists = await pathExists(destination);
|
|
264
|
+
if (!(await pathExists(source))) {
|
|
265
|
+
throw new CxError(`no account '${safeOldName}'`, 1);
|
|
266
|
+
}
|
|
267
|
+
if (destinationExists && options.force !== true) {
|
|
268
|
+
throw new CxError(`account '${safeNewName}' already exists (use --force to overwrite)`, 1);
|
|
269
|
+
}
|
|
270
|
+
await ensurePrivateDir(paths.accountsDir);
|
|
271
|
+
if (destinationExists) {
|
|
272
|
+
await rm(destination, { force: true });
|
|
273
|
+
}
|
|
274
|
+
await rename(source, destination);
|
|
275
|
+
await chmodIfPossible(destination, 0o600);
|
|
276
|
+
const marker = await readCurrentMarker(paths);
|
|
277
|
+
const currentUpdated = marker.state === 'valid' && marker.name === safeOldName;
|
|
278
|
+
if (currentUpdated) {
|
|
279
|
+
await writeCurrentMarker(paths, safeNewName);
|
|
280
|
+
}
|
|
281
|
+
return {
|
|
282
|
+
oldName: safeOldName,
|
|
283
|
+
newName: safeNewName,
|
|
284
|
+
overwrote: destinationExists,
|
|
285
|
+
currentUpdated,
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
export async function removeAccount(name, options = {}) {
|
|
289
|
+
const paths = options.paths ?? getCodexPaths();
|
|
290
|
+
const safeName = validateAccountName(name);
|
|
291
|
+
const accountFile = accountPathForName(paths, safeName);
|
|
292
|
+
if (!(await pathExists(accountFile))) {
|
|
293
|
+
throw new CxError(`no account '${safeName}'`, 1);
|
|
294
|
+
}
|
|
295
|
+
const marker = await readCurrentMarker(paths);
|
|
296
|
+
const wasActive = marker.state === 'valid' && marker.name === safeName;
|
|
297
|
+
await rm(accountFile, { force: false });
|
|
298
|
+
if (wasActive) {
|
|
299
|
+
await clearCurrentMarker(paths);
|
|
300
|
+
}
|
|
301
|
+
return { name: safeName, wasActive };
|
|
302
|
+
}
|
|
303
|
+
function signalExitCode(signal) {
|
|
304
|
+
if (signal === 'SIGINT') {
|
|
305
|
+
return 130;
|
|
306
|
+
}
|
|
307
|
+
if (signal === 'SIGTERM') {
|
|
308
|
+
return 143;
|
|
309
|
+
}
|
|
310
|
+
return 1;
|
|
311
|
+
}
|
|
312
|
+
export async function runCodex(codexArgs = [], options = {}) {
|
|
313
|
+
const command = options.command ?? 'codex';
|
|
314
|
+
const args = [...(options.args ?? codexArgs)];
|
|
315
|
+
return await new Promise((resolvePromise, reject) => {
|
|
316
|
+
const child = spawn(command, args, {
|
|
317
|
+
cwd: options.cwd,
|
|
318
|
+
env: options.env ?? process.env,
|
|
319
|
+
stdio: 'inherit',
|
|
320
|
+
windowsHide: false,
|
|
321
|
+
shell: process.platform === 'win32',
|
|
322
|
+
});
|
|
323
|
+
child.on('error', (error) => {
|
|
324
|
+
reject(new CxError(`failed to run '${command}': ${error.message}`, 1));
|
|
325
|
+
});
|
|
326
|
+
child.on('exit', (code, signal) => {
|
|
327
|
+
if (typeof code === 'number') {
|
|
328
|
+
resolvePromise(code);
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
resolvePromise(signal ? signalExitCode(signal) : 1);
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
export async function loginAccount(name, options = {}) {
|
|
336
|
+
const paths = options.paths ?? getCodexPaths(options.env ?? process.env);
|
|
337
|
+
const safeName = validateAccountName(name);
|
|
338
|
+
const destination = accountPathForName(paths, safeName);
|
|
339
|
+
if ((await pathExists(destination)) && options.force !== true) {
|
|
340
|
+
throw new CxError(`account '${safeName}' already exists (use --force to overwrite)`, 1);
|
|
341
|
+
}
|
|
342
|
+
const writeback = await writebackCurrentAccount({ paths });
|
|
343
|
+
const loginExitCode = await runCodex([], {
|
|
344
|
+
...options,
|
|
345
|
+
args: ['login'],
|
|
346
|
+
});
|
|
347
|
+
if (loginExitCode !== 0) {
|
|
348
|
+
throw new CxError(`codex login exited with code ${loginExitCode}`, loginExitCode);
|
|
349
|
+
}
|
|
350
|
+
if (!(await authLooksNonEmpty(paths))) {
|
|
351
|
+
throw new CxError(`codex login did not leave a usable ${paths.authFile}`, 1);
|
|
352
|
+
}
|
|
353
|
+
await ensureCodexStoreDirs(paths);
|
|
354
|
+
await copyFilePrivate(paths.authFile, destination);
|
|
355
|
+
await writeCurrentMarker(paths, safeName);
|
|
356
|
+
return writeback;
|
|
357
|
+
}
|
|
358
|
+
export async function switchAndRunCodex(name, codexArgs = [], options = {}) {
|
|
359
|
+
const paths = options.paths ?? getCodexPaths(options.env ?? process.env);
|
|
360
|
+
await useAccount(name, { paths });
|
|
361
|
+
return await runCodex(codexArgs, options);
|
|
362
|
+
}
|
|
363
|
+
async function executableAccess(path) {
|
|
364
|
+
try {
|
|
365
|
+
await access(path, fsConstants.X_OK);
|
|
366
|
+
return true;
|
|
367
|
+
}
|
|
368
|
+
catch {
|
|
369
|
+
return false;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
function pathEnvValue(env) {
|
|
373
|
+
return env.PATH ?? env.Path ?? env.path ?? '';
|
|
374
|
+
}
|
|
375
|
+
function hasPathSeparator(command) {
|
|
376
|
+
return command.includes('/') || command.includes('\\');
|
|
377
|
+
}
|
|
378
|
+
export async function resolveExecutable(command, env = process.env) {
|
|
379
|
+
if (hasPathSeparator(command)) {
|
|
380
|
+
const absolute = resolve(command);
|
|
381
|
+
return await executableAccess(absolute) ? absolute : null;
|
|
382
|
+
}
|
|
383
|
+
const extensions = process.platform === 'win32'
|
|
384
|
+
? ['', '.cmd', '.exe', '.bat']
|
|
385
|
+
: [''];
|
|
386
|
+
const pathEntries = pathEnvValue(env).split(delimiter).filter((entry) => entry.length > 0);
|
|
387
|
+
for (const directory of pathEntries) {
|
|
388
|
+
for (const extension of extensions) {
|
|
389
|
+
const candidate = join(directory, `${command}${extension}`);
|
|
390
|
+
if (await executableAccess(candidate)) {
|
|
391
|
+
return candidate;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
return null;
|
|
396
|
+
}
|
|
397
|
+
export async function inspectDoctor(metadata, env = process.env) {
|
|
398
|
+
const paths = getCodexPaths(env);
|
|
399
|
+
const [homeStats, accountsDirStats, authStats, marker, accountNames, codexExecutable] = await Promise.all([
|
|
400
|
+
statIfExists(paths.home),
|
|
401
|
+
statIfExists(paths.accountsDir),
|
|
402
|
+
statIfExists(paths.authFile),
|
|
403
|
+
readCurrentMarker(paths),
|
|
404
|
+
listAccountNames(paths),
|
|
405
|
+
resolveExecutable('codex', env),
|
|
406
|
+
]);
|
|
407
|
+
let slotExists = false;
|
|
408
|
+
let currentName = null;
|
|
409
|
+
let currentReason;
|
|
410
|
+
if (marker.state === 'valid') {
|
|
411
|
+
currentName = marker.name;
|
|
412
|
+
slotExists = await pathExists(accountPathForName(paths, marker.name));
|
|
413
|
+
if (!slotExists) {
|
|
414
|
+
currentReason = 'current account slot is missing';
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
else if (marker.state === 'invalid') {
|
|
418
|
+
currentReason = marker.reason;
|
|
419
|
+
}
|
|
420
|
+
const authSize = authStats?.isFile() ? authStats.size : 0;
|
|
421
|
+
const warnings = [];
|
|
422
|
+
if (!authStats?.isFile()) {
|
|
423
|
+
warnings.push('auth.json is missing; run codex login or cx use <name> before launching Codex.');
|
|
424
|
+
}
|
|
425
|
+
else if (authSize <= AUTH_NON_EMPTY_BYTES) {
|
|
426
|
+
warnings.push('auth.json exists but is too small to be treated as a usable login for save/writeback.');
|
|
427
|
+
}
|
|
428
|
+
if (marker.state === 'invalid') {
|
|
429
|
+
warnings.push('current account marker is invalid; writeback will be skipped until it is fixed.');
|
|
430
|
+
}
|
|
431
|
+
if (marker.state === 'valid' && !slotExists) {
|
|
432
|
+
warnings.push('current account marker points at a missing slot; writeback will not recreate it.');
|
|
433
|
+
}
|
|
434
|
+
if (!codexExecutable) {
|
|
435
|
+
warnings.push('codex executable was not found on PATH.');
|
|
436
|
+
}
|
|
437
|
+
return {
|
|
438
|
+
packageName: metadata.packageName,
|
|
439
|
+
version: metadata.version,
|
|
440
|
+
nodeVersion: process.version,
|
|
441
|
+
platform: process.platform,
|
|
442
|
+
codexHome: paths.home,
|
|
443
|
+
accountsDir: paths.accountsDir,
|
|
444
|
+
homeExists: Boolean(homeStats?.isDirectory()),
|
|
445
|
+
accountsDirExists: Boolean(accountsDirStats?.isDirectory()),
|
|
446
|
+
authJson: {
|
|
447
|
+
exists: Boolean(authStats?.isFile()),
|
|
448
|
+
size: authSize,
|
|
449
|
+
looksNonEmpty: authSize > AUTH_NON_EMPTY_BYTES,
|
|
450
|
+
},
|
|
451
|
+
current: {
|
|
452
|
+
state: marker.state,
|
|
453
|
+
name: currentName,
|
|
454
|
+
slotExists,
|
|
455
|
+
...(currentReason ? { reason: currentReason } : {}),
|
|
456
|
+
},
|
|
457
|
+
accounts: accountNames,
|
|
458
|
+
codexExecutable,
|
|
459
|
+
warnings,
|
|
460
|
+
};
|
|
461
|
+
}
|
|
462
|
+
//# sourceMappingURL=accounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED