agyx 0.1.2 → 0.1.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.
Files changed (41) hide show
  1. package/README.md +39 -14
  2. package/dist/src/cli.js +150 -99
  3. package/dist/src/cli.js.map +1 -1
  4. package/dist/src/color.d.ts +9 -0
  5. package/dist/src/color.js +28 -0
  6. package/dist/src/color.js.map +1 -0
  7. package/dist/src/config.d.ts +28 -4
  8. package/dist/src/config.js +89 -21
  9. package/dist/src/config.js.map +1 -1
  10. package/dist/src/coordinator.d.ts +12 -2
  11. package/dist/src/coordinator.js +265 -11
  12. package/dist/src/coordinator.js.map +1 -1
  13. package/dist/src/eligibility.d.ts +4 -0
  14. package/dist/src/eligibility.js +10 -0
  15. package/dist/src/eligibility.js.map +1 -0
  16. package/dist/src/google_auth.d.ts +1 -0
  17. package/dist/src/google_auth.js +42 -0
  18. package/dist/src/google_auth.js.map +1 -0
  19. package/dist/src/install.d.ts +2 -0
  20. package/dist/src/install.js +24 -7
  21. package/dist/src/install.js.map +1 -1
  22. package/dist/src/keychain.js +2 -2
  23. package/dist/src/keychain.js.map +1 -1
  24. package/dist/src/onboarding.d.ts +1 -0
  25. package/dist/src/onboarding.js +87 -0
  26. package/dist/src/onboarding.js.map +1 -0
  27. package/dist/src/profile_view.d.ts +22 -0
  28. package/dist/src/profile_view.js +77 -0
  29. package/dist/src/profile_view.js.map +1 -0
  30. package/dist/src/quota.d.ts +1 -0
  31. package/dist/src/quota.js +3 -0
  32. package/dist/src/quota.js.map +1 -1
  33. package/dist/src/selection.d.ts +1 -1
  34. package/dist/src/selection.js +18 -1
  35. package/dist/src/selection.js.map +1 -1
  36. package/dist/src/session.js +54 -31
  37. package/dist/src/session.js.map +1 -1
  38. package/dist/src/ui.d.ts +19 -0
  39. package/dist/src/ui.js +306 -0
  40. package/dist/src/ui.js.map +1 -0
  41. package/package.json +8 -1
@@ -6,7 +6,6 @@ export const configDir = process.env.AGYX_CONFIG_DIR
6
6
  export const runtimeDir = join(configDir, "run");
7
7
  export const logDir = join(configDir, "logs");
8
8
  export const statePath = join(configDir, "state.json");
9
- export const googleAccountsPath = join(homedir(), ".gemini", "google_accounts.json");
10
9
  export async function ensureDirectories() {
11
10
  for (const directory of [configDir, runtimeDir, logDir]) {
12
11
  await mkdir(directory, { recursive: true, mode: 0o700 });
@@ -31,7 +30,7 @@ export async function saveState(state) {
31
30
  await chmod(temporary, 0o600);
32
31
  await rename(temporary, statePath);
33
32
  }
34
- export async function upsertProfile(name, email, makeActive) {
33
+ export async function upsertProfile(name, email, makeActive, countActivation = makeActive) {
35
34
  const state = await loadState();
36
35
  const now = new Date();
37
36
  const nowString = now.toISOString();
@@ -40,7 +39,17 @@ export async function upsertProfile(name, email, makeActive) {
40
39
  existing.email = email ?? existing.email;
41
40
  existing.authenticatedAt = nowString;
42
41
  existing.updatedAt = nowString;
43
- if (existing.quotaStatus === "exhausted") {
42
+ existing.credentialStatus = email ? "verified" : "unknown";
43
+ existing.verifiedEmail = email ?? undefined;
44
+ existing.credentialVerifiedAt = email ? nowString : undefined;
45
+ existing.credentialMismatchAt = undefined;
46
+ existing.credentialError = undefined;
47
+ existing.eligibilityStatus = "unknown";
48
+ existing.lastEligibilityErrorAt = undefined;
49
+ existing.eligibilityReason = undefined;
50
+ if (existing.quotaStatus === "exhausted"
51
+ && existing.quotaResetAt
52
+ && Date.parse(existing.quotaResetAt) <= now.getTime()) {
44
53
  existing.quotaStatus = "available";
45
54
  existing.quotaResetAt = undefined;
46
55
  existing.lastQuotaReason = undefined;
@@ -54,15 +63,19 @@ export async function upsertProfile(name, email, makeActive) {
54
63
  updatedAt: nowString,
55
64
  authenticatedAt: nowString,
56
65
  quotaStatus: "available",
66
+ credentialStatus: email ? "verified" : "unknown",
67
+ verifiedEmail: email,
68
+ credentialVerifiedAt: email ? nowString : undefined,
69
+ eligibilityStatus: "unknown",
57
70
  selectionCount: 0,
58
71
  });
59
72
  }
60
73
  state.profiles.sort((left, right) => left.name.localeCompare(right.name));
61
74
  if (makeActive)
62
- markProfileActivated(state, name, now);
75
+ markProfileActivated(state, name, now, countActivation);
63
76
  await saveState(state);
64
77
  }
65
- export function markProfileActivated(state, name, now = new Date()) {
78
+ export function markProfileActivated(state, name, now = new Date(), incrementSelection = true) {
66
79
  const profile = state.profiles.find((entry) => entry.name === name);
67
80
  if (!profile)
68
81
  throw new Error(`Profile not found: ${name}`);
@@ -70,7 +83,9 @@ export function markProfileActivated(state, name, now = new Date()) {
70
83
  state.activeProfile = name;
71
84
  profile.lastActivatedAt = nowString;
72
85
  profile.updatedAt = nowString;
73
- profile.selectionCount = (profile.selectionCount ?? 0) + 1;
86
+ if (incrementSelection) {
87
+ profile.selectionCount = (profile.selectionCount ?? 0) + 1;
88
+ }
74
89
  if (profile.quotaStatus === "exhausted"
75
90
  && profile.quotaResetAt
76
91
  && Date.parse(profile.quotaResetAt) <= now.getTime()) {
@@ -79,8 +94,22 @@ export function markProfileActivated(state, name, now = new Date()) {
79
94
  profile.lastQuotaReason = undefined;
80
95
  }
81
96
  }
97
+ export function markProfileRequest(state, name, now = new Date()) {
98
+ const profile = state.profiles.find((entry) => entry.name === name || entry.previousNames?.includes(name));
99
+ if (!profile)
100
+ return;
101
+ const nowString = now.toISOString();
102
+ profile.lastRequestAt = nowString;
103
+ profile.lastSuccessfulRequestAt = nowString;
104
+ profile.updatedAt = nowString;
105
+ if (profile.quotaStatus !== "exhausted")
106
+ profile.quotaStatus = "available";
107
+ profile.eligibilityStatus = "eligible";
108
+ profile.eligibilityReason = undefined;
109
+ profile.lastEligibilityErrorAt = undefined;
110
+ }
82
111
  export function markProfileQuotaExhausted(state, name, event, now = new Date()) {
83
- const profile = state.profiles.find((entry) => entry.name === name);
112
+ const profile = state.profiles.find((entry) => entry.name === name || entry.previousNames?.includes(name));
84
113
  if (!profile)
85
114
  return;
86
115
  const nowString = now.toISOString();
@@ -90,11 +119,63 @@ export function markProfileQuotaExhausted(state, name, event, now = new Date())
90
119
  profile.quotaResetAt = event.resetAt;
91
120
  profile.updatedAt = nowString;
92
121
  }
122
+ export function markProfileCredentialVerified(state, name, actualEmail, now = new Date()) {
123
+ const profile = state.profiles.find((entry) => entry.name === name);
124
+ if (!profile)
125
+ return;
126
+ const nowString = now.toISOString();
127
+ profile.email = profile.email ?? actualEmail;
128
+ profile.credentialStatus = "verified";
129
+ profile.verifiedEmail = actualEmail;
130
+ profile.credentialVerifiedAt = nowString;
131
+ profile.credentialMismatchAt = undefined;
132
+ profile.credentialError = undefined;
133
+ profile.updatedAt = nowString;
134
+ }
135
+ export function markProfileCredentialMismatch(state, name, actualEmail, expectedEmail, now = new Date()) {
136
+ const profile = state.profiles.find((entry) => entry.name === name);
137
+ if (!profile)
138
+ return;
139
+ const nowString = now.toISOString();
140
+ profile.credentialStatus = actualEmail ? "mismatch" : "error";
141
+ profile.verifiedEmail = actualEmail;
142
+ profile.credentialMismatchAt = nowString;
143
+ profile.credentialError = actualEmail
144
+ ? `expected ${expectedEmail ?? "-"}, got ${actualEmail}`
145
+ : "credential probe did not return an authenticated email";
146
+ profile.updatedAt = nowString;
147
+ if (state.activeProfile === name) {
148
+ state.activeProfile = actualEmail
149
+ ? state.profiles.find((entry) => entry.name !== name
150
+ && (entry.email === actualEmail || entry.verifiedEmail === actualEmail))?.name
151
+ : undefined;
152
+ }
153
+ }
154
+ export function markProfileIneligible(state, name, event, now = new Date()) {
155
+ const profile = state.profiles.find((entry) => entry.name === name || entry.previousNames?.includes(name));
156
+ if (!profile)
157
+ return;
158
+ const nowString = now.toISOString();
159
+ profile.eligibilityStatus = "ineligible";
160
+ profile.lastEligibilityErrorAt = nowString;
161
+ profile.eligibilityReason = event.reason;
162
+ profile.updatedAt = nowString;
163
+ }
93
164
  export async function recordProfileQuotaExhausted(name, event) {
94
165
  const state = await loadState();
95
166
  markProfileQuotaExhausted(state, name, event);
96
167
  await saveState(state);
97
168
  }
169
+ export async function recordProfileRequest(name, now = new Date()) {
170
+ const state = await loadState();
171
+ markProfileRequest(state, name, now);
172
+ await saveState(state);
173
+ }
174
+ export async function recordProfileIneligible(name, event) {
175
+ const state = await loadState();
176
+ markProfileIneligible(state, name, event);
177
+ await saveState(state);
178
+ }
98
179
  export async function cleanupRuntimeFile(path) {
99
180
  await rm(path, { force: true }).catch(() => undefined);
100
181
  }
@@ -115,7 +196,7 @@ export function profileNameFromEmail(email) {
115
196
  }
116
197
  export function uniqueProfileName(baseName, state) {
117
198
  const base = validateProfileName(baseName);
118
- const names = new Set(state.profiles.map((profile) => profile.name));
199
+ const names = new Set(state.profiles.flatMap((profile) => [profile.name, ...(profile.previousNames ?? [])]));
119
200
  if (!names.has(base))
120
201
  return base;
121
202
  for (let suffix = 2; suffix < 10000; suffix += 1) {
@@ -125,19 +206,6 @@ export function uniqueProfileName(baseName, state) {
125
206
  }
126
207
  throw new Error(`Could not find an unused profile name for '${base}'.`);
127
208
  }
128
- export async function readActiveGoogleAccountEmail() {
129
- try {
130
- const accounts = JSON.parse(await readFile(googleAccountsPath, "utf8"));
131
- return typeof accounts.active === "string" && accounts.active.includes("@")
132
- ? accounts.active
133
- : undefined;
134
- }
135
- catch (error) {
136
- if (error.code === "ENOENT")
137
- return undefined;
138
- return undefined;
139
- }
140
- }
141
209
  export async function ensureParent(path) {
142
210
  await mkdir(dirname(path), { recursive: true, mode: 0o700 });
143
211
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AA0B1C,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe;OAC/C,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACjD,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC;AAErF,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,KAAK,MAAM,SAAS,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,MAAM,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAU,CAAC;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACtC,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAY;IAC1C,MAAM,iBAAiB,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,GAAG,SAAS,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IACpD,MAAM,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACnF,MAAM,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9B,MAAM,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,KAAyB,EACzB,UAAmB;IAEnB,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACzE,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,KAAK,GAAG,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;QACzC,QAAQ,CAAC,eAAe,GAAG,SAAS,CAAC;QACrC,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;QAC/B,IAAI,QAAQ,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;YACzC,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;YACnC,QAAQ,CAAC,YAAY,GAAG,SAAS,CAAC;YAClC,QAAQ,CAAC,eAAe,GAAG,SAAS,CAAC;QACvC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAClB,IAAI;YACJ,KAAK;YACL,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS;YACpB,eAAe,EAAE,SAAS;YAC1B,WAAW,EAAE,WAAW;YACxB,cAAc,EAAE,CAAC;SAClB,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,IAAI,UAAU;QAAE,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAY,EACZ,IAAY,EACZ,GAAG,GAAG,IAAI,IAAI,EAAE;IAEhB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACpE,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACpC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IACpC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,cAAc,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3D,IACE,OAAO,CAAC,WAAW,KAAK,WAAW;WAChC,OAAO,CAAC,YAAY;WACpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EACpD,CAAC;QACD,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;QAClC,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;QACjC,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IACtC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,KAAY,EACZ,IAAY,EACZ,KAA2C,EAC3C,GAAG,GAAG,IAAI,IAAI,EAAE;IAEhB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACpE,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;IAClC,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACrC,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;IACvC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;IACrC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAAY,EACZ,KAA2C;IAE3C,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,yBAAyB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9C,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,2CAA2C,CACzE,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,SAAS;SACzB,WAAW,EAAE;SACb,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAC9B,OAAO,mBAAmB,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,KAAY;IAC9D,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IAC9C,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B;IAChD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAErE,CAAC;QACF,OAAO,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YACzE,CAAC,CAAC,QAAQ,CAAC,MAAM;YACjB,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACzE,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY;IAC7C,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { State } from "./config.js";
1
2
  import { SessionRecord } from "./session.js";
2
3
  export declare function sessionRecords(): Promise<SessionRecord[]>;
3
4
  export declare function pauseAll(): Promise<SessionRecord[]>;
@@ -6,8 +7,17 @@ export interface ProfileCaptureResult {
6
7
  name: string;
7
8
  email?: string;
8
9
  }
10
+ export interface ProfileSwitchResult {
11
+ name: string;
12
+ email?: string;
13
+ alreadyActive?: boolean;
14
+ }
9
15
  export declare function saveCurrent(nameInput?: string, explicitEmail?: string): Promise<ProfileCaptureResult>;
10
- export declare function activateProfile(nameInput: string): Promise<void>;
11
- export declare function switchProfile(name: string): Promise<void>;
16
+ export declare function activateProfile(nameInput: string, options?: {
17
+ verify?: boolean;
18
+ }): Promise<ProfileSwitchResult>;
19
+ export declare function switchProfile(name: string): Promise<ProfileSwitchResult>;
20
+ export declare function switchToNextProfile(): Promise<ProfileSwitchResult>;
21
+ export declare function verifyAllProfiles(): Promise<State>;
12
22
  export declare function detectEmail(content: string): string | undefined;
13
23
  export declare function loginProfile(nameInput?: string, explicitEmail?: string, resume?: boolean): Promise<ProfileCaptureResult>;
@@ -1,10 +1,69 @@
1
1
  import { spawn } from "node:child_process";
2
- import { readdir, readFile, rm } from "node:fs/promises";
2
+ import { chmod, readdir, readFile, rename, rm, writeFile } from "node:fs/promises";
3
3
  import { connect } from "node:net";
4
4
  import { join } from "node:path";
5
- import { ensureDirectories, loadState, logDir, markProfileActivated, profileNameFromEmail, readActiveGoogleAccountEmail, runtimeDir, saveState, upsertProfile, uniqueProfileName, validateProfileName, } from "./config.js";
5
+ import { ensureDirectories, loadState, logDir, markProfileActivated, markProfileCredentialMismatch, markProfileCredentialVerified, profileNameFromEmail, runtimeDir, saveState, upsertProfile, uniqueProfileName, validateProfileName, } from "./config.js";
6
6
  import { keychain } from "./keychain.js";
7
+ import { detectCredentialEmail } from "./google_auth.js";
7
8
  import { findRealAgy, runningAgy, stopProcesses, } from "./processes.js";
9
+ import { effectiveProfileStatus, selectNextProfile } from "./selection.js";
10
+ function parseJSONPrefix(content) {
11
+ try {
12
+ return JSON.parse(content);
13
+ }
14
+ catch (error) {
15
+ let depth = 0;
16
+ let inString = false;
17
+ let escaped = false;
18
+ let started = false;
19
+ for (let index = 0; index < content.length; index += 1) {
20
+ const character = content[index];
21
+ if (!started) {
22
+ if (/\s/.test(character))
23
+ continue;
24
+ if (character !== "{")
25
+ throw error;
26
+ started = true;
27
+ depth = 1;
28
+ continue;
29
+ }
30
+ if (escaped) {
31
+ escaped = false;
32
+ continue;
33
+ }
34
+ if (character === "\\") {
35
+ escaped = inString;
36
+ continue;
37
+ }
38
+ if (character === "\"") {
39
+ inString = !inString;
40
+ continue;
41
+ }
42
+ if (inString)
43
+ continue;
44
+ if (character === "{")
45
+ depth += 1;
46
+ if (character === "}")
47
+ depth -= 1;
48
+ if (depth === 0) {
49
+ return JSON.parse(content.slice(0, index + 1));
50
+ }
51
+ }
52
+ throw error;
53
+ }
54
+ }
55
+ async function writeRuntimeRecord(path, record) {
56
+ const temporary = `${path}.${process.pid}.tmp`;
57
+ try {
58
+ await writeFile(temporary, `${JSON.stringify(record, null, 2)}\n`, { mode: 0o600 });
59
+ await chmod(temporary, 0o600);
60
+ await rename(temporary, path);
61
+ }
62
+ catch (error) {
63
+ await rm(temporary, { force: true }).catch(() => undefined);
64
+ throw error;
65
+ }
66
+ }
8
67
  async function send(socketPath, command) {
9
68
  return await new Promise((resolvePromise, reject) => {
10
69
  const socket = connect(socketPath);
@@ -30,8 +89,9 @@ export async function sessionRecords() {
30
89
  for (const entry of entries.filter((name) => name.endsWith(".json"))) {
31
90
  const path = join(runtimeDir, entry);
32
91
  try {
33
- const record = JSON.parse(await readFile(path, "utf8"));
92
+ const record = parseJSONPrefix(await readFile(path, "utf8"));
34
93
  process.kill(record.pid, 0);
94
+ await writeRuntimeRecord(path, record);
35
95
  records.push(record);
36
96
  }
37
97
  catch {
@@ -45,9 +105,18 @@ export async function pauseAll() {
45
105
  const paused = [];
46
106
  for (const record of records) {
47
107
  const reply = await send(record.socketPath, "pause");
48
- if (!reply.ok)
49
- throw new Error(reply.error ?? `Failed to pause ${record.id}`);
50
- paused.push(reply.record ?? record);
108
+ if (!reply.ok) {
109
+ if (!reply.error?.includes("Unexpected non-whitespace character after JSON")) {
110
+ throw new Error(reply.error ?? `Failed to pause ${record.id}`);
111
+ }
112
+ paused.push({
113
+ ...record,
114
+ childPid: undefined,
115
+ paused: true,
116
+ });
117
+ continue;
118
+ }
119
+ paused.push(reply.record ?? { ...record, childPid: undefined, paused: true });
51
120
  }
52
121
  const managedPIDs = new Set(paused.map((record) => record.childPid).filter(Boolean));
53
122
  const unmanaged = (await runningAgy()).filter(({ pid }) => !managedPIDs.has(pid));
@@ -83,14 +152,43 @@ function resolveProfileName(state, nameInput, email, context) {
83
152
  export async function saveCurrent(nameInput, explicitEmail) {
84
153
  const state = await loadState();
85
154
  const activeProfileEmail = state.profiles.find((profile) => profile.name === state.activeProfile)?.email;
86
- const email = explicitEmail ?? await readActiveGoogleAccountEmail() ?? activeProfileEmail;
155
+ const probeLogPath = join(logDir, `email-probe-${Date.now()}.log`);
156
+ const email = explicitEmail
157
+ ?? await detectActiveEmail(probeLogPath)
158
+ ?? (nameInput ? activeProfileEmail : undefined);
87
159
  const name = resolveProfileName(state, nameInput, email, "save");
88
160
  const credential = await keychain.readActive();
89
161
  await keychain.writeProfile(name, credential);
90
- await upsertProfile(name, email, true);
162
+ await upsertProfile(name, email, true, false);
91
163
  return { name, email };
92
164
  }
93
- export async function activateProfile(nameInput) {
165
+ async function verifyActiveCredential(state, name) {
166
+ const profile = state.profiles.find((entry) => entry.name === name);
167
+ if (!profile)
168
+ throw new Error(`Profile not found: ${name}`);
169
+ const expectedEmail = profile.email;
170
+ const initialCredential = await keychain.readActive();
171
+ let actualEmail = await detectCredentialEmail(initialCredential);
172
+ if (!actualEmail) {
173
+ actualEmail = await detectActiveEmail(join(logDir, `verify-${name}-${Date.now()}.log`));
174
+ }
175
+ const refreshedCredential = await keychain.readActive();
176
+ actualEmail = actualEmail ?? await detectCredentialEmail(refreshedCredential);
177
+ if (!actualEmail) {
178
+ markProfileCredentialMismatch(state, name, undefined, expectedEmail);
179
+ await saveState(state);
180
+ throw new Error(`Profile '${name}' credential could not be verified. No authenticated email was detected.`);
181
+ }
182
+ if (expectedEmail && actualEmail !== expectedEmail) {
183
+ markProfileCredentialMismatch(state, name, actualEmail, expectedEmail);
184
+ await saveState(state);
185
+ throw new Error(`Profile '${name}' credential mismatch: expected ${expectedEmail}, got ${actualEmail}.`);
186
+ }
187
+ await keychain.writeProfile(name, refreshedCredential);
188
+ markProfileCredentialVerified(state, name, actualEmail);
189
+ return actualEmail;
190
+ }
191
+ export async function activateProfile(nameInput, options = {}) {
94
192
  const name = validateProfileName(nameInput);
95
193
  const state = await loadState();
96
194
  if (!state.profiles.some((profile) => profile.name === name)) {
@@ -98,22 +196,178 @@ export async function activateProfile(nameInput) {
98
196
  }
99
197
  const credential = await keychain.readProfile(name);
100
198
  await keychain.writeActive(credential);
199
+ const email = options.verify ? await verifyActiveCredential(state, name) : undefined;
101
200
  markProfileActivated(state, name);
102
201
  await saveState(state);
202
+ return { name, email };
103
203
  }
104
204
  export async function switchProfile(name) {
205
+ const initialState = await loadState();
206
+ const profile = initialState.profiles.find((entry) => entry.name === name);
207
+ if (!profile)
208
+ throw new Error(`Profile not found: ${name}`);
209
+ if (initialState.activeProfile === name) {
210
+ return {
211
+ name,
212
+ email: profile.email ?? profile.verifiedEmail,
213
+ alreadyActive: true,
214
+ };
215
+ }
216
+ const status = effectiveProfileStatus(profile);
217
+ if (status !== "ready") {
218
+ throw new Error(`Profile '${name}' is not selectable: ${status}.`);
219
+ }
105
220
  const sessions = await pauseAll();
221
+ const previousCredential = await keychain.readActive().catch(() => undefined);
106
222
  try {
107
- await activateProfile(name);
223
+ return await activateProfile(name, { verify: true });
224
+ }
225
+ catch (error) {
226
+ if (previousCredential)
227
+ await keychain.writeActive(previousCredential);
228
+ throw error;
108
229
  }
109
230
  finally {
110
231
  await resumeAll(sessions);
111
232
  }
112
233
  }
234
+ export async function switchToNextProfile() {
235
+ const initialState = await loadState();
236
+ const initialCandidate = selectNextProfile(initialState);
237
+ if (initialCandidate.name === initialState.activeProfile) {
238
+ return {
239
+ name: initialCandidate.name,
240
+ email: initialCandidate.email ?? initialCandidate.verifiedEmail,
241
+ alreadyActive: true,
242
+ };
243
+ }
244
+ const sessions = await pauseAll();
245
+ const previousCredential = await keychain.readActive().catch(() => undefined);
246
+ let lastError;
247
+ try {
248
+ for (let attempt = 0; attempt < 10000; attempt += 1) {
249
+ const state = await loadState();
250
+ const candidate = selectNextProfile(state);
251
+ if (candidate.name === state.activeProfile) {
252
+ return {
253
+ name: candidate.name,
254
+ email: candidate.email ?? candidate.verifiedEmail,
255
+ alreadyActive: true,
256
+ };
257
+ }
258
+ try {
259
+ return await activateProfile(candidate.name, { verify: true });
260
+ }
261
+ catch (error) {
262
+ lastError = error;
263
+ const profile = (await loadState()).profiles.find((entry) => entry.name === candidate.name);
264
+ if (!profile || !["mismatch", "error"].includes(profile.credentialStatus ?? "")) {
265
+ throw error;
266
+ }
267
+ }
268
+ }
269
+ throw lastError ?? new Error("No selectable profiles.");
270
+ }
271
+ catch (error) {
272
+ if (previousCredential)
273
+ await keychain.writeActive(previousCredential);
274
+ throw error;
275
+ }
276
+ finally {
277
+ await resumeAll(sessions);
278
+ }
279
+ }
280
+ export async function verifyAllProfiles() {
281
+ const sessions = await pauseAll();
282
+ const previousCredential = await keychain.readActive().catch(() => undefined);
283
+ try {
284
+ const names = (await loadState()).profiles.map((profile) => profile.name);
285
+ for (const name of names) {
286
+ const state = await loadState();
287
+ if (!state.profiles.some((profile) => profile.name === name))
288
+ continue;
289
+ try {
290
+ const credential = await keychain.readProfile(name);
291
+ await keychain.writeActive(credential);
292
+ await verifyActiveCredential(state, name);
293
+ await saveState(state);
294
+ }
295
+ catch (error) {
296
+ const currentState = await loadState();
297
+ const profile = currentState.profiles.find((entry) => entry.name === name);
298
+ if (profile && profile.credentialStatus !== "mismatch") {
299
+ markProfileCredentialMismatch(currentState, name, undefined, profile.email);
300
+ await saveState(currentState);
301
+ }
302
+ }
303
+ }
304
+ return await loadState();
305
+ }
306
+ finally {
307
+ if (previousCredential)
308
+ await keychain.writeActive(previousCredential);
309
+ await resumeAll(sessions);
310
+ }
311
+ }
113
312
  export function detectEmail(content) {
114
313
  const matches = [...content.matchAll(/authenticated successfully as ([^\s]+@[^\s]+)/gi)];
115
314
  return matches.at(-1)?.[1];
116
315
  }
316
+ async function detectActiveEmail(logPath) {
317
+ const realAgy = await findRealAgy();
318
+ return await new Promise((resolvePromise, reject) => {
319
+ const child = spawn(realAgy, ["--log-file", logPath], {
320
+ stdio: "ignore",
321
+ cwd: process.cwd(),
322
+ env: {
323
+ ...process.env,
324
+ AGYX_EMAIL_PROBE: "1",
325
+ },
326
+ });
327
+ let settled = false;
328
+ let interval;
329
+ let timeout;
330
+ const finish = (email) => {
331
+ if (settled)
332
+ return;
333
+ settled = true;
334
+ clearInterval(interval);
335
+ clearTimeout(timeout);
336
+ if (child.exitCode === null)
337
+ child.kill("SIGTERM");
338
+ resolvePromise(email);
339
+ };
340
+ interval = setInterval(async () => {
341
+ try {
342
+ const email = detectEmail(await readFile(logPath, "utf8"));
343
+ if (email)
344
+ finish(email);
345
+ }
346
+ catch {
347
+ // Wait for the log file and auth line.
348
+ }
349
+ }, 200);
350
+ timeout = setTimeout(() => finish(undefined), 7000);
351
+ child.on("error", (error) => {
352
+ if (settled)
353
+ return;
354
+ settled = true;
355
+ clearInterval(interval);
356
+ clearTimeout(timeout);
357
+ reject(error);
358
+ });
359
+ child.on("exit", async () => {
360
+ if (settled)
361
+ return;
362
+ try {
363
+ finish(detectEmail(await readFile(logPath, "utf8")));
364
+ }
365
+ catch {
366
+ finish(undefined);
367
+ }
368
+ });
369
+ });
370
+ }
117
371
  async function interactiveLogin(logPath) {
118
372
  const realAgy = await findRealAgy();
119
373
  return await new Promise((resolvePromise, reject) => {
@@ -167,7 +421,7 @@ export async function loginProfile(nameInput, explicitEmail, resume = true) {
167
421
  const credential = await keychain.readActive().catch(() => undefined);
168
422
  if (!credential)
169
423
  throw new Error("Login ended without creating an agy credential.");
170
- const email = explicitEmail ?? detectedEmail ?? await readActiveGoogleAccountEmail();
424
+ const email = explicitEmail ?? detectedEmail;
171
425
  const name = resolveProfileName(await loadState(), nameInput, email, "login");
172
426
  await keychain.writeProfile(name, credential);
173
427
  await upsertProfile(name, email, true);
@@ -1 +1 @@
1
- {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../src/coordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../src/coordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export interface EligibilityEvent {
2
+ reason: string;
3
+ }
4
+ export declare function parseEligibilityEventLine(line: string): EligibilityEvent | undefined;
@@ -0,0 +1,10 @@
1
+ export function parseEligibilityEventLine(line) {
2
+ if (!/account ineligible|not eligible for antigravity|eligibility check failed/i.test(line)) {
3
+ return undefined;
4
+ }
5
+ const reason = line.match(/Account ineligible:\s*(.+)$/i)?.[1]
6
+ ?? line.match(/Eligibility check failed:\s*(.+)$/i)?.[1]
7
+ ?? "account is not eligible for Antigravity; verify it in the browser or login another account";
8
+ return { reason };
9
+ }
10
+ //# sourceMappingURL=eligibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eligibility.js","sourceRoot":"","sources":["../../src/eligibility.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,IAAI,CAAC,2EAA2E,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5F,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC;WACzD,IAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,EAAE,CAAC,CAAC,CAAC;WACrD,4FAA4F,CAAC;IAClG,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}