@imdeadpool/codex-account-switcher 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +79 -5
  2. package/dist/commands/config.d.ts +15 -0
  3. package/dist/commands/config.js +81 -0
  4. package/dist/commands/daemon.d.ts +9 -0
  5. package/dist/commands/daemon.js +39 -0
  6. package/dist/commands/list.d.ts +3 -0
  7. package/dist/commands/list.js +30 -5
  8. package/dist/commands/login.d.ts +15 -0
  9. package/dist/commands/login.js +97 -0
  10. package/dist/commands/remove.d.ts +14 -0
  11. package/dist/commands/remove.js +104 -0
  12. package/dist/commands/save.d.ts +4 -1
  13. package/dist/commands/save.js +24 -6
  14. package/dist/commands/status.d.ts +5 -0
  15. package/dist/commands/status.js +16 -0
  16. package/dist/lib/accounts/account-service.d.ts +59 -2
  17. package/dist/lib/accounts/account-service.js +551 -36
  18. package/dist/lib/accounts/auth-parser.d.ts +3 -0
  19. package/dist/lib/accounts/auth-parser.js +83 -0
  20. package/dist/lib/accounts/errors.d.ts +15 -0
  21. package/dist/lib/accounts/errors.js +34 -2
  22. package/dist/lib/accounts/index.d.ts +3 -1
  23. package/dist/lib/accounts/index.js +5 -1
  24. package/dist/lib/accounts/registry.d.ts +6 -0
  25. package/dist/lib/accounts/registry.js +166 -0
  26. package/dist/lib/accounts/service-manager.d.ts +4 -0
  27. package/dist/lib/accounts/service-manager.js +204 -0
  28. package/dist/lib/accounts/types.d.ts +71 -0
  29. package/dist/lib/accounts/types.js +5 -0
  30. package/dist/lib/accounts/usage.d.ts +10 -0
  31. package/dist/lib/accounts/usage.js +246 -0
  32. package/dist/lib/base-command.d.ts +1 -0
  33. package/dist/lib/base-command.js +4 -0
  34. package/dist/lib/config/paths.d.ts +6 -0
  35. package/dist/lib/config/paths.js +46 -5
  36. package/dist/tests/auth-parser.test.d.ts +1 -0
  37. package/dist/tests/auth-parser.test.js +65 -0
  38. package/dist/tests/registry.test.d.ts +1 -0
  39. package/dist/tests/registry.test.js +37 -0
  40. package/dist/tests/save-account-safety.test.d.ts +1 -0
  41. package/dist/tests/save-account-safety.test.js +399 -0
  42. package/dist/tests/usage.test.d.ts +1 -0
  43. package/dist/tests/usage.test.js +29 -0
  44. package/package.json +9 -6
  45. package/scripts/postinstall-login-hook.cjs +90 -0
@@ -1,15 +1,72 @@
1
+ import { AccountMapping, AutoSwitchRunResult, StatusReport } from "./types";
2
+ export interface AccountChoice {
3
+ name: string;
4
+ email?: string;
5
+ active: boolean;
6
+ }
7
+ export interface RemoveResult {
8
+ removed: string[];
9
+ activated?: string;
10
+ }
11
+ export interface SaveAccountOptions {
12
+ force?: boolean;
13
+ }
14
+ export interface ResolvedDefaultAccountName {
15
+ name: string;
16
+ source: "active" | "inferred";
17
+ }
18
+ export interface ResolvedLoginAccountName {
19
+ name: string;
20
+ source: "inferred";
21
+ }
22
+ export interface ExternalAuthSyncResult {
23
+ synchronized: boolean;
24
+ savedName?: string;
25
+ autoSwitchDisabled: boolean;
26
+ }
1
27
  export declare class AccountService {
28
+ syncExternalAuthSnapshotIfNeeded(): Promise<ExternalAuthSyncResult>;
2
29
  listAccountNames(): Promise<string[]>;
30
+ listAccountChoices(): Promise<AccountChoice[]>;
31
+ listAccountMappings(): Promise<AccountMapping[]>;
32
+ findMatchingAccounts(query: string): Promise<AccountChoice[]>;
3
33
  getCurrentAccountName(): Promise<string | null>;
4
- saveAccount(rawName: string): Promise<string>;
34
+ saveAccount(rawName: string, options?: SaveAccountOptions): Promise<string>;
35
+ inferAccountNameFromCurrentAuth(): Promise<string>;
36
+ resolveDefaultAccountNameFromCurrentAuth(): Promise<ResolvedDefaultAccountName>;
37
+ resolveLoginAccountNameFromCurrentAuth(): Promise<ResolvedLoginAccountName>;
5
38
  useAccount(rawName: string): Promise<string>;
39
+ removeAccounts(accountNames: string[]): Promise<RemoveResult>;
40
+ removeByQuery(query: string): Promise<RemoveResult>;
41
+ removeAllAccounts(): Promise<RemoveResult>;
42
+ getStatus(): Promise<StatusReport>;
43
+ setAutoSwitchEnabled(enabled: boolean): Promise<StatusReport>;
44
+ setApiUsageEnabled(enabled: boolean): Promise<StatusReport>;
45
+ configureAutoSwitchThresholds(input: {
46
+ threshold5hPercent?: number;
47
+ thresholdWeeklyPercent?: number;
48
+ }): Promise<StatusReport>;
49
+ runAutoSwitchOnce(): Promise<AutoSwitchRunResult>;
50
+ runDaemon(mode: "once" | "watch"): Promise<void>;
51
+ private selectBestCandidateFromRegistry;
52
+ private refreshAccountUsage;
6
53
  private accountFilePath;
7
54
  private normalizeAccountName;
55
+ private isValidPercent;
8
56
  private ensureAuthFileExists;
9
57
  private ensureDir;
10
- private replaceSymlink;
58
+ private materializeAuthSymlink;
59
+ private assertSafeSnapshotOverwrite;
11
60
  private removeIfExists;
12
61
  private writeCurrentName;
13
62
  private readCurrentNameFile;
14
63
  private pathExists;
64
+ private hydrateSnapshotMetadata;
65
+ private resolveUniqueInferredName;
66
+ private loadReconciledRegistry;
67
+ private persistRegistry;
68
+ private activateSnapshot;
69
+ private clearActivePointers;
70
+ private snapshotsShareIdentity;
71
+ private renderSnapshotIdentity;
15
72
  }