@ralphkrauss/codex-account-switcher 0.1.4 → 0.1.6

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/dist/remote.js CHANGED
@@ -3,7 +3,7 @@ import { randomBytes } from 'node:crypto';
3
3
  import { constants as fsConstants } from 'node:fs';
4
4
  import { access, chmod, mkdir, readFile, rename, rm, writeFile, } from 'node:fs/promises';
5
5
  import { dirname, join } from 'node:path';
6
- import { CxError, accountPathForName, getCodexPaths, listAccountNames, resolveExecutable, validateAccountName, } from './accounts.js';
6
+ import { CxError, accountPathForName, getCodexPaths, listAccountNames, resolveExecutable, useAccount, validateAccountName, writebackCurrentAccount, } from './accounts.js';
7
7
  export const REMOTE_CONFIG_VERSION = 1;
8
8
  export const DEFAULT_ONEPASSWORD_ITEM_PREFIX = 'cx-';
9
9
  export const ONEPASSWORD_BACKEND = '1password';
@@ -257,6 +257,59 @@ function looksLikeMissingField(result) {
257
257
  function itemTitle(config, account) {
258
258
  return `${config.itemPrefix}${account}`;
259
259
  }
260
+ function accountNameFromItemTitle(config, title) {
261
+ if (!title.startsWith(config.itemPrefix)) {
262
+ return null;
263
+ }
264
+ const account = title.slice(config.itemPrefix.length);
265
+ try {
266
+ const safeAccount = validateAccountName(account);
267
+ return safeAccount === 'default' ? null : safeAccount;
268
+ }
269
+ catch {
270
+ return null;
271
+ }
272
+ }
273
+ function sortedUnique(values) {
274
+ return [...new Set(values)].sort((left, right) => left.localeCompare(right));
275
+ }
276
+ function parseOnePasswordItemTitles(stdout, action) {
277
+ let parsed;
278
+ try {
279
+ parsed = JSON.parse(stdout);
280
+ }
281
+ catch (error) {
282
+ throw new CxError(`1Password item list JSON could not be parsed while ${action}: ${errorMessage(error)}`, 1);
283
+ }
284
+ if (!Array.isArray(parsed)) {
285
+ throw new CxError(`1Password item list did not return an array while ${action}`, 1);
286
+ }
287
+ return parsed
288
+ .map((item) => (isRecord(item) && typeof item.title === 'string' ? item.title : null))
289
+ .filter((title) => title !== null);
290
+ }
291
+ async function listOnePasswordAccountNames(config, env) {
292
+ const result = await runOp([
293
+ 'item',
294
+ 'list',
295
+ '--vault',
296
+ config.vault,
297
+ '--format',
298
+ 'json',
299
+ ], env, `listing 1Password items in vault '${config.vault}'`);
300
+ return sortedUnique(parseOnePasswordItemTitles(result.stdout, `listing 1Password items in vault '${config.vault}'`)
301
+ .map((title) => accountNameFromItemTitle(config, title))
302
+ .filter((account) => account !== null));
303
+ }
304
+ async function verifyOnePasswordVault(config, env) {
305
+ await runOp([
306
+ 'vault',
307
+ 'get',
308
+ config.vault,
309
+ '--format',
310
+ 'json',
311
+ ], env, `checking 1Password vault '${config.vault}'`);
312
+ }
260
313
  function validateRemoteSyncAccountName(account) {
261
314
  const safeAccount = validateAccountName(account);
262
315
  if (safeAccount === 'default') {
@@ -341,8 +394,55 @@ function decodeAuthJsonField(stdout, item) {
341
394
  return stdout;
342
395
  }
343
396
  }
397
+ function decodeAuthJsonFieldFromItemJson(stdout, item) {
398
+ let parsed;
399
+ try {
400
+ parsed = JSON.parse(stdout);
401
+ }
402
+ catch (error) {
403
+ throw new CxError(`1Password item '${item}' JSON could not be parsed: ${errorMessage(error)}`, 1);
404
+ }
405
+ if (!isRecord(parsed) || !Array.isArray(parsed.fields)) {
406
+ throw new CxError(`1Password item '${item}' does not contain fields metadata`, 1);
407
+ }
408
+ const field = parsed.fields.find((candidate) => (isRecord(candidate) && candidate.label === ONEPASSWORD_AUTH_FIELD));
409
+ if (!field) {
410
+ throw new CxError(`1Password item '${item}' does not contain a revealable '${ONEPASSWORD_AUTH_FIELD}' field`, 1);
411
+ }
412
+ if (typeof field.value !== 'string') {
413
+ throw new CxError(`1Password item '${item}' field '${ONEPASSWORD_AUTH_FIELD}' did not contain a string value`, 1);
414
+ }
415
+ parseAuthJsonString(field.value, `auth_json field in 1Password item '${item}'`);
416
+ return field.value;
417
+ }
344
418
  async function readOnePasswordAuthJson(config, item, env) {
345
- const result = await runOpRaw([
419
+ const jsonResult = await runOpRaw([
420
+ 'item',
421
+ 'get',
422
+ item,
423
+ '--vault',
424
+ config.vault,
425
+ '--format',
426
+ 'json',
427
+ ], env);
428
+ if (jsonResult.exitCode === 0) {
429
+ try {
430
+ return decodeAuthJsonFieldFromItemJson(jsonResult.stdout, item);
431
+ }
432
+ catch (error) {
433
+ if (!errorMessage(error).includes(`'${ONEPASSWORD_AUTH_FIELD}'`)) {
434
+ throw error;
435
+ }
436
+ // Fall through to the field-specific command for older op/item shapes.
437
+ }
438
+ }
439
+ else {
440
+ if (looksLikeMissingItem(jsonResult)) {
441
+ throw new CxError(`remote account item '${item}' was not found in 1Password vault '${config.vault}'`, 1);
442
+ }
443
+ throwOpFailure(`reading 1Password item '${item}'`, jsonResult);
444
+ }
445
+ const fieldResult = await runOpRaw([
346
446
  'item',
347
447
  'get',
348
448
  item,
@@ -352,16 +452,16 @@ async function readOnePasswordAuthJson(config, item, env) {
352
452
  `label=${ONEPASSWORD_AUTH_FIELD}`,
353
453
  '--reveal',
354
454
  ], env);
355
- if (result.exitCode === 0) {
356
- return decodeAuthJsonField(result.stdout, item);
455
+ if (fieldResult.exitCode === 0) {
456
+ return decodeAuthJsonField(fieldResult.stdout, item);
357
457
  }
358
- if (looksLikeMissingField(result)) {
458
+ if (looksLikeMissingField(fieldResult)) {
359
459
  throw new CxError(`1Password item '${item}' does not contain a revealable '${ONEPASSWORD_AUTH_FIELD}' field`, 1);
360
460
  }
361
- if (looksLikeMissingItem(result)) {
461
+ if (looksLikeMissingItem(fieldResult)) {
362
462
  throw new CxError(`remote account item '${item}' was not found in 1Password vault '${config.vault}'`, 1);
363
463
  }
364
- throwOpFailure(`reading '${ONEPASSWORD_AUTH_FIELD}' from 1Password item '${item}'`, result);
464
+ throwOpFailure(`reading '${ONEPASSWORD_AUTH_FIELD}' from 1Password item '${item}'`, fieldResult);
365
465
  }
366
466
  async function readLocalAccountAuthJson(account, paths) {
367
467
  const safeAccount = validateRemoteSyncAccountName(account);
@@ -393,10 +493,13 @@ async function writeLocalAccountAuthJson(account, authJson, paths, force) {
393
493
  export async function syncPushAccount(account, options = {}) {
394
494
  const env = options.env ?? process.env;
395
495
  const paths = remotePaths(options);
396
- const [config, local] = await Promise.all([
397
- requireRemoteConfig({ paths }),
398
- readLocalAccountAuthJson(account, paths),
399
- ]);
496
+ const config = await requireRemoteConfig({ paths });
497
+ const safeAccount = validateRemoteSyncAccountName(account);
498
+ const writeback = await writebackCurrentAccount({ paths });
499
+ if (writeback.performed === true && writeback.account !== safeAccount) {
500
+ throw new CxError(`unexpected writeback account '${writeback.account}' while syncing '${safeAccount}'`, 1);
501
+ }
502
+ const local = await readLocalAccountAuthJson(safeAccount, paths);
400
503
  const item = itemTitle(config, local.account);
401
504
  const operation = await upsertOnePasswordAuthJson(config, item, local.authJson, env);
402
505
  return {
@@ -425,13 +528,79 @@ export async function syncPullAccount(account, options = {}) {
425
528
  overwritten: local.overwritten,
426
529
  };
427
530
  }
531
+ export async function listRemoteAccountNames(options = {}) {
532
+ const env = options.env ?? process.env;
533
+ const paths = remotePaths(options);
534
+ const config = await requireRemoteConfig({ paths });
535
+ return await listOnePasswordAccountNames(config, env);
536
+ }
537
+ export async function syncPullAllAccounts(options = {}) {
538
+ const paths = remotePaths(options);
539
+ const accounts = await listRemoteAccountNames(options);
540
+ const results = [];
541
+ for (const account of accounts) {
542
+ const accountFile = accountPathForName(paths, account);
543
+ if (options.force !== true && await pathExists(accountFile)) {
544
+ continue;
545
+ }
546
+ results.push(await syncPullAccount(account, options));
547
+ }
548
+ return results;
549
+ }
550
+ export async function syncPushAllAccounts(options = {}) {
551
+ const paths = remotePaths(options);
552
+ const accounts = await listRemoteSyncAccountNames(paths);
553
+ const results = [];
554
+ for (const account of accounts) {
555
+ results.push(await syncPushAccount(account, options));
556
+ }
557
+ return results;
558
+ }
559
+ export async function setupOnePasswordProfiles(input, options = {}) {
560
+ const env = options.env ?? process.env;
561
+ const paths = remotePaths(options);
562
+ const configured = await configureOnePasswordRemote(input, { paths });
563
+ await verifyOnePasswordVault(configured.config, env);
564
+ const remoteAccounts = await listOnePasswordAccountNames(configured.config, env);
565
+ const pulled = input.pull === true
566
+ ? await syncPullAllAccounts({ paths, env, force: input.force })
567
+ : [];
568
+ let usedAccount = null;
569
+ if (input.use) {
570
+ const account = validateRemoteSyncAccountName(input.use);
571
+ const accountFile = accountPathForName(paths, account);
572
+ if (!await pathExists(accountFile)) {
573
+ await syncPullAccount(account, { paths, env, force: input.force });
574
+ }
575
+ await useAccount(account, { paths });
576
+ usedAccount = account;
577
+ }
578
+ return {
579
+ configPath: configured.configPath,
580
+ remoteConfigured: true,
581
+ opAvailable: true,
582
+ vault: configured.config.vault,
583
+ itemPrefix: configured.config.itemPrefix,
584
+ remoteAccounts,
585
+ pulledAccounts: pulled.map((entry) => entry.account),
586
+ usedAccount,
587
+ };
588
+ }
428
589
  export async function inspectSyncStatus(account, options = {}) {
429
590
  const env = options.env ?? process.env;
430
591
  const paths = remotePaths(options);
431
592
  const config = await readRemoteConfig({ paths });
432
593
  const opPath = await resolveExecutable('op', env);
433
- const accounts = account ? [validateRemoteSyncAccountName(account)] : await listRemoteSyncAccountNames(paths);
594
+ let accounts = account ? [validateRemoteSyncAccountName(account)] : await listRemoteSyncAccountNames(paths);
434
595
  const statuses = [];
596
+ if (!account && config && opPath) {
597
+ try {
598
+ accounts = sortedUnique([...accounts, ...await listOnePasswordAccountNames(config, env)]);
599
+ }
600
+ catch {
601
+ // Keep local status useful; per-account remote errors are reported below.
602
+ }
603
+ }
435
604
  for (const accountName of accounts) {
436
605
  const accountFile = accountPathForName(paths, accountName);
437
606
  let presence = 'unknown';
@@ -1 +1 @@
1
- {"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ralphkrauss/codex-account-switcher",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Safe multi-account auth.json switcher for the native Codex CLI.",
5
5
  "author": "Ralph Krauss <ralph@krauss.be>",
6
6
  "type": "module",
package/src/cli.ts CHANGED
@@ -17,9 +17,12 @@ import {
17
17
  renameAccount,
18
18
  runCodex,
19
19
  saveAccount,
20
+ setupOnePasswordProfiles,
20
21
  syncHermesAccount,
21
22
  syncPullAccount,
23
+ syncPullAllAccounts,
22
24
  syncPushAccount,
25
+ syncPushAllAccounts,
23
26
  useAccount,
24
27
  useHermesAccount,
25
28
  validateAccountName,
@@ -32,6 +35,7 @@ import {
32
35
 
33
36
  const PACKAGE_NAME = '@ralphkrauss/codex-account-switcher';
34
37
  const SUBCOMMANDS = new Set([
38
+ '1password',
35
39
  'doctor',
36
40
  'hermes',
37
41
  'help',
@@ -79,6 +83,12 @@ interface ParsedRemoteConfigureArgs {
79
83
  readonly itemPrefix?: string;
80
84
  }
81
85
 
86
+ interface ParsedOnePasswordSetupArgs extends ParsedRemoteConfigureArgs {
87
+ readonly pull: boolean;
88
+ readonly force: boolean;
89
+ readonly use?: string;
90
+ }
91
+
82
92
  function write(stream: NodeJS.WritableStream, text: string): void {
83
93
  stream.write(text.endsWith('\n') ? text : `${text}\n`);
84
94
  }
@@ -112,10 +122,12 @@ Usage:
112
122
  cx hermes use <account> [--profile <name>] [--no-config]
113
123
  cx hermes sync <account> [--profile <name>]
114
124
  cx hermes status [--profile <name>] [--json]
125
+ cx 1password setup --vault <vault> [--item-prefix <prefix>] [--pull] [--force] [--use <account>]
126
+ cx 1password status [--json]
115
127
  cx remote configure 1password --vault <vault> [--item-prefix <prefix>]
116
128
  cx remote status [--json]
117
- cx sync push <account>
118
- cx sync pull <account> [--force]
129
+ cx sync push <account>|--all
130
+ cx sync pull <account>|--all [--force]
119
131
  cx sync status [account] [--json]
120
132
  cx doctor [--json]
121
133
  cx --help
@@ -164,15 +176,32 @@ Notes:
164
176
  The default 1Password item prefix is cx-. Token contents are never printed.`;
165
177
  }
166
178
 
179
+ function onePasswordHelpText(): string {
180
+ return `Usage:
181
+ cx 1password setup --vault <vault> [--item-prefix <prefix>] [--pull] [--force] [--use <account>]
182
+ cx 1password status [--json]
183
+
184
+ Commands:
185
+ setup Configure 1Password as the native profile backend, verify op/vault access,
186
+ optionally pull all remote profiles, and optionally select one profile.
187
+ status Show 1Password backend status and local/remote profile presence.
188
+
189
+ Examples:
190
+ cx 1password setup --vault Private --pull --use gi
191
+ cx 1password setup --vault Private --item-prefix codex-`;
192
+ }
193
+
167
194
  function syncHelpText(): string {
168
195
  return `Usage:
169
- cx sync push <account>
170
- cx sync pull <account> [--force]
196
+ cx sync push <account>|--all
197
+ cx sync pull <account>|--all [--force]
171
198
  cx sync status [account] [--json]
172
199
 
173
200
  Commands:
174
201
  push Upsert CODEX_HOME/accounts/<account>.json into the configured 1Password item.
202
+ With --all, push every local named account except reserved default.
175
203
  pull Read the configured 1Password item into CODEX_HOME/accounts/<account>.json.
204
+ With --all, pull every remote 1Password-backed profile not already local.
176
205
  Refuses to overwrite unless --force is passed.
177
206
  status Compare local account-file presence with remote item presence without printing tokens.`;
178
207
  }
@@ -277,6 +306,62 @@ function parseRemoteConfigureArgs(args: readonly string[]): ParsedRemoteConfigur
277
306
  return { vault, ...(itemPrefix ? { itemPrefix } : {}) };
278
307
  }
279
308
 
309
+ function parseOnePasswordSetupArgs(args: readonly string[]): ParsedOnePasswordSetupArgs {
310
+ let vault: string | undefined;
311
+ let itemPrefix: string | undefined;
312
+ let pull = false;
313
+ let force = false;
314
+ let use: string | undefined;
315
+
316
+ for (let index = 0; index < args.length; index += 1) {
317
+ const arg = args[index] ?? '';
318
+ if (arg === '--vault') {
319
+ const value = args[index + 1];
320
+ if (!value || value.startsWith('-')) {
321
+ throw new CxError('usage: cx 1password setup --vault <vault> [--item-prefix <prefix>] [--pull] [--force] [--use <account>]', 2);
322
+ }
323
+ vault = value;
324
+ index += 1;
325
+ continue;
326
+ }
327
+ if (arg === '--item-prefix') {
328
+ const value = args[index + 1];
329
+ if (!value || value.startsWith('-')) {
330
+ throw new CxError('usage: cx 1password setup --vault <vault> [--item-prefix <prefix>] [--pull] [--force] [--use <account>]', 2);
331
+ }
332
+ itemPrefix = value;
333
+ index += 1;
334
+ continue;
335
+ }
336
+ if (arg === '--pull') {
337
+ pull = true;
338
+ continue;
339
+ }
340
+ if (arg === '--force') {
341
+ force = true;
342
+ continue;
343
+ }
344
+ if (arg === '--use') {
345
+ const value = args[index + 1];
346
+ if (!value || value.startsWith('-')) {
347
+ throw new CxError('usage: cx 1password setup --vault <vault> [--item-prefix <prefix>] [--pull] [--force] [--use <account>]', 2);
348
+ }
349
+ use = value;
350
+ index += 1;
351
+ continue;
352
+ }
353
+ if (arg.startsWith('--')) {
354
+ throw new CxError(`unknown option '${arg}'`, 2);
355
+ }
356
+ throw new CxError('usage: cx 1password setup --vault <vault> [--item-prefix <prefix>] [--pull] [--force] [--use <account>]', 2);
357
+ }
358
+
359
+ if (!vault) {
360
+ throw new CxError('usage: cx 1password setup --vault <vault> [--item-prefix <prefix>] [--pull] [--force] [--use <account>]', 2);
361
+ }
362
+ return { vault, pull, force, ...(itemPrefix ? { itemPrefix } : {}), ...(use ? { use } : {}) };
363
+ }
364
+
280
365
  function parseLoginArgs(args: readonly string[]): ParsedLoginArgs {
281
366
  let force = false;
282
367
  let name: string | null = null;
@@ -473,6 +558,26 @@ async function printList(io: CliIo, env: NodeJS.ProcessEnv): Promise<void> {
473
558
  write(io.stdout, formatAccounts(await listAccounts(getCodexPaths(env))));
474
559
  }
475
560
 
561
+ async function useAccountWithRemoteFallback(name: string, env: NodeJS.ProcessEnv, io: CliIo): Promise<void> {
562
+ const paths = getCodexPaths(env);
563
+ try {
564
+ await useAccount(name, { paths });
565
+ return;
566
+ } catch (error) {
567
+ if (!(error instanceof CxError) || !error.message.includes(`no account '${name}'`)) {
568
+ throw error;
569
+ }
570
+
571
+ try {
572
+ const pulled = await syncPullAccount(name, { env, paths });
573
+ write(io.stdout, `pulled 1Password-backed profile '${pulled.account}'`);
574
+ await useAccount(name, { paths });
575
+ } catch {
576
+ throw error;
577
+ }
578
+ }
579
+ }
580
+
476
581
  function parseRunArgs(args: readonly string[]): { account: string | null; codexArgs: readonly string[] } {
477
582
  const separatorIndex = args.indexOf('--');
478
583
  if (separatorIndex >= 0) {
@@ -591,6 +696,48 @@ async function handleRemoteCommand(
591
696
  }
592
697
  }
593
698
 
699
+ async function handleOnePasswordCommand(
700
+ args: readonly string[],
701
+ env: NodeJS.ProcessEnv,
702
+ io: CliIo,
703
+ ): Promise<number> {
704
+ const [command, ...rest] = args;
705
+ if (!command || command === 'help' || command === '--help' || command === '-h') {
706
+ write(io.stdout, onePasswordHelpText());
707
+ return 0;
708
+ }
709
+
710
+ switch (command) {
711
+ case 'setup': {
712
+ const parsed = parseOnePasswordSetupArgs(rest);
713
+ const result = await setupOnePasswordProfiles(parsed, { env, paths: getCodexPaths(env) });
714
+ write(io.stdout, 'configured 1Password-backed Codex profiles');
715
+ write(io.stdout, `config: ${result.configPath}`);
716
+ write(io.stdout, `vault: ${result.vault}`);
717
+ write(io.stdout, `item prefix: ${result.itemPrefix}`);
718
+ write(io.stdout, `remote profiles: ${result.remoteAccounts.length > 0 ? result.remoteAccounts.join(', ') : '(none)'}`);
719
+ if (parsed.pull) {
720
+ write(io.stdout, `pulled profiles: ${result.pulledAccounts.length > 0 ? result.pulledAccounts.join(', ') : '(none)'}`);
721
+ }
722
+ if (result.usedAccount) {
723
+ write(io.stdout, `active codex account: ${result.usedAccount}`);
724
+ }
725
+ return 0;
726
+ }
727
+
728
+ case 'status': {
729
+ const parsed = parseJsonArgs(rest);
730
+ requireArity('1password status [--json]', parsed.positionals, 0);
731
+ const status = await inspectSyncStatus(undefined, { env, paths: getCodexPaths(env) });
732
+ write(io.stdout, parsed.json ? JSON.stringify(status, null, 2) : formatSyncStatus(status));
733
+ return 0;
734
+ }
735
+
736
+ default:
737
+ throw new CxError(`unknown 1password command '${command}'`, 2);
738
+ }
739
+ }
740
+
594
741
  async function handleSyncCommand(
595
742
  args: readonly string[],
596
743
  env: NodeJS.ProcessEnv,
@@ -604,7 +751,12 @@ async function handleSyncCommand(
604
751
 
605
752
  switch (command) {
606
753
  case 'push': {
607
- requireArity('sync push <account>', rest, 1);
754
+ requireArity('sync push <account>|--all', rest, 1);
755
+ if (rest[0] === '--all') {
756
+ const results = await syncPushAllAccounts({ env, paths: getCodexPaths(env) });
757
+ write(io.stdout, `pushed profiles: ${results.length > 0 ? results.map((entry) => entry.account).join(', ') : '(none)'}`);
758
+ return 0;
759
+ }
608
760
  const account = rest[0] ?? '';
609
761
  const result = await syncPushAccount(account, { env, paths: getCodexPaths(env) });
610
762
  write(io.stdout, `pushed account '${result.account}' to 1Password item '${result.item}'`);
@@ -614,13 +766,33 @@ async function handleSyncCommand(
614
766
  }
615
767
 
616
768
  case 'pull': {
617
- const parsed = parseForceArgs(rest);
618
- requireArity('sync pull <account> [--force]', parsed.positionals, 1);
619
- const account = parsed.positionals[0] ?? '';
769
+ let force = false;
770
+ const positionals: string[] = [];
771
+ for (const arg of rest) {
772
+ if (arg === '--force') {
773
+ force = true;
774
+ continue;
775
+ }
776
+ if (arg !== '--all' && arg.startsWith('--')) {
777
+ throw new CxError(`unknown option '${arg}'`, 2);
778
+ }
779
+ positionals.push(arg);
780
+ }
781
+ requireArity('sync pull <account>|--all [--force]', positionals, 1);
782
+ if (positionals[0] === '--all') {
783
+ const results = await syncPullAllAccounts({
784
+ env,
785
+ paths: getCodexPaths(env),
786
+ force,
787
+ });
788
+ write(io.stdout, `pulled profiles: ${results.length > 0 ? results.map((entry) => entry.account).join(', ') : '(none)'}`);
789
+ return 0;
790
+ }
791
+ const account = positionals[0] ?? '';
620
792
  const result = await syncPullAccount(account, {
621
793
  env,
622
794
  paths: getCodexPaths(env),
623
- force: parsed.force,
795
+ force,
624
796
  });
625
797
  write(io.stdout, `pulled 1Password item '${result.item}' into account '${result.account}'`);
626
798
  write(io.stdout, `account file: ${result.accountFile}`);
@@ -682,7 +854,7 @@ export async function main(
682
854
  }
683
855
 
684
856
  validateAccountName(first);
685
- await useAccount(first, { paths: getCodexPaths(env) });
857
+ await useAccountWithRemoteFallback(first, env, io);
686
858
  write(io.stdout, `→ codex on '${first}'`);
687
859
  return await runCodex(rest, { env });
688
860
  }
@@ -708,7 +880,7 @@ export async function main(
708
880
  case 'use': {
709
881
  requireArity('use <name>', rest, 1);
710
882
  const name = rest[0] ?? '';
711
- await useAccount(name, { paths: getCodexPaths(env) });
883
+ await useAccountWithRemoteFallback(name, env, io);
712
884
  write(io.stdout, `active codex account: ${name}`);
713
885
  return 0;
714
886
  }
@@ -749,7 +921,7 @@ export async function main(
749
921
  case 'run': {
750
922
  const parsed = parseRunArgs(rest);
751
923
  if (parsed.account) {
752
- await useAccount(parsed.account, { paths: getCodexPaths(env) });
924
+ await useAccountWithRemoteFallback(parsed.account, env, io);
753
925
  write(io.stdout, `→ codex on '${parsed.account}'`);
754
926
  }
755
927
  return await runCodex(parsed.codexArgs, { env });
@@ -768,6 +940,9 @@ export async function main(
768
940
  case 'hermes':
769
941
  return await handleHermesCommand(rest, env, io);
770
942
 
943
+ case '1password':
944
+ return await handleOnePasswordCommand(rest, env, io);
945
+
771
946
  case 'remote':
772
947
  return await handleRemoteCommand(rest, env, io);
773
948
 
package/src/index.ts CHANGED
@@ -41,8 +41,12 @@ export {
41
41
  getRemoteConfigPath,
42
42
  inspectRemoteStatus,
43
43
  inspectSyncStatus,
44
+ listRemoteAccountNames,
44
45
  readRemoteConfig,
46
+ setupOnePasswordProfiles,
47
+ syncPullAllAccounts,
45
48
  syncPullAccount,
49
+ syncPushAllAccounts,
46
50
  syncPushAccount,
47
51
  } from './remote.js';
48
52
 
@@ -80,6 +84,8 @@ export type {
80
84
  RemotePathOptions,
81
85
  RemotePresence,
82
86
  RemoteStatus,
87
+ SetupOnePasswordProfilesInput,
88
+ SetupOnePasswordProfilesResult,
83
89
  SyncPullResult,
84
90
  SyncPushResult,
85
91
  SyncStatus,