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.
- package/README.md +39 -14
- package/dist/src/cli.js +150 -99
- package/dist/src/cli.js.map +1 -1
- package/dist/src/color.d.ts +9 -0
- package/dist/src/color.js +28 -0
- package/dist/src/color.js.map +1 -0
- package/dist/src/config.d.ts +28 -4
- package/dist/src/config.js +89 -21
- package/dist/src/config.js.map +1 -1
- package/dist/src/coordinator.d.ts +12 -2
- package/dist/src/coordinator.js +265 -11
- package/dist/src/coordinator.js.map +1 -1
- package/dist/src/eligibility.d.ts +4 -0
- package/dist/src/eligibility.js +10 -0
- package/dist/src/eligibility.js.map +1 -0
- package/dist/src/google_auth.d.ts +1 -0
- package/dist/src/google_auth.js +42 -0
- package/dist/src/google_auth.js.map +1 -0
- package/dist/src/install.d.ts +2 -0
- package/dist/src/install.js +24 -7
- package/dist/src/install.js.map +1 -1
- package/dist/src/keychain.js +2 -2
- package/dist/src/keychain.js.map +1 -1
- package/dist/src/onboarding.d.ts +1 -0
- package/dist/src/onboarding.js +87 -0
- package/dist/src/onboarding.js.map +1 -0
- package/dist/src/profile_view.d.ts +22 -0
- package/dist/src/profile_view.js +77 -0
- package/dist/src/profile_view.js.map +1 -0
- package/dist/src/quota.d.ts +1 -0
- package/dist/src/quota.js +3 -0
- package/dist/src/quota.js.map +1 -1
- package/dist/src/selection.d.ts +1 -1
- package/dist/src/selection.js +18 -1
- package/dist/src/selection.js.map +1 -1
- package/dist/src/session.js +54 -31
- package/dist/src/session.js.map +1 -1
- package/dist/src/ui.d.ts +19 -0
- package/dist/src/ui.js +306 -0
- package/dist/src/ui.js.map +1 -0
- package/package.json +8 -1
package/dist/src/config.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
}
|
package/dist/src/config.js.map
CHANGED
|
@@ -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;
|
|
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;AA0C1C,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;AAEvD,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,EACnB,eAAe,GAAG,UAAU;IAE5B,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,QAAQ,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,QAAQ,CAAC,aAAa,GAAG,KAAK,IAAI,SAAS,CAAC;QAC5C,QAAQ,CAAC,oBAAoB,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,QAAQ,CAAC,oBAAoB,GAAG,SAAS,CAAC;QAC1C,QAAQ,CAAC,eAAe,GAAG,SAAS,CAAC;QACrC,QAAQ,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACvC,QAAQ,CAAC,sBAAsB,GAAG,SAAS,CAAC;QAC5C,QAAQ,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACvC,IACE,QAAQ,CAAC,WAAW,KAAK,WAAW;eACjC,QAAQ,CAAC,YAAY;eACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EACrD,CAAC;YACD,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,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YAChD,aAAa,EAAE,KAAK;YACpB,oBAAoB,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YACnD,iBAAiB,EAAE,SAAS;YAC5B,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,EAAE,eAAe,CAAC,CAAC;IACxE,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAY,EACZ,IAAY,EACZ,GAAG,GAAG,IAAI,IAAI,EAAE,EAChB,kBAAkB,GAAG,IAAI;IAEzB,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,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO,CAAC,cAAc,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC;IACD,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,kBAAkB,CAChC,KAAY,EACZ,IAAY,EACZ,GAAG,GAAG,IAAI,IAAI,EAAE;IAEhB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC5C,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,CAC3D,CAAC;IACF,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAClC,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAC5C,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9B,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW;QAAE,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;IAC3E,OAAO,CAAC,iBAAiB,GAAG,UAAU,CAAC;IACvC,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IACtC,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC;AAC7C,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,CAC5C,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,CAC3D,CAAC;IACF,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,UAAU,6BAA6B,CAC3C,KAAY,EACZ,IAAY,EACZ,WAAmB,EACnB,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,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC;IAC7C,OAAO,CAAC,gBAAgB,GAAG,UAAU,CAAC;IACtC,OAAO,CAAC,aAAa,GAAG,WAAW,CAAC;IACpC,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IACzC,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IACzC,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IACpC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,KAAY,EACZ,IAAY,EACZ,WAA+B,EAC/B,aAAiC,EACjC,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,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9D,OAAO,CAAC,aAAa,GAAG,WAAW,CAAC;IACpC,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IACzC,OAAO,CAAC,eAAe,GAAG,WAAW;QACnC,CAAC,CAAC,YAAY,aAAa,IAAI,GAAG,SAAS,WAAW,EAAE;QACxD,CAAC,CAAC,wDAAwD,CAAC;IAC7D,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9B,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QACjC,KAAK,CAAC,aAAa,GAAG,WAAW;YAC/B,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9B,KAAK,CAAC,IAAI,KAAK,IAAI;mBAChB,CAAC,KAAK,CAAC,KAAK,KAAK,WAAW,IAAI,KAAK,CAAC,aAAa,KAAK,WAAW,CAAC,CACxE,EAAE,IAAI;YACP,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAY,EACZ,IAAY,EACZ,KAAyB,EACzB,GAAG,GAAG,IAAI,IAAI,EAAE;IAEhB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC5C,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,CAC3D,CAAC;IACF,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,CAAC,iBAAiB,GAAG,YAAY,CAAC;IACzC,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC;IAC3C,OAAO,CAAC,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC;IACzC,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,oBAAoB,CACxC,IAAY,EACZ,GAAG,GAAG,IAAI,IAAI,EAAE;IAEhB,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACrC,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAAY,EACZ,KAAyB;IAEzB,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,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,CACnB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC,CACtF,CAAC;IACF,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,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,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
|
|
11
|
-
|
|
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>;
|
package/dist/src/coordinator.js
CHANGED
|
@@ -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,
|
|
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 =
|
|
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
|
-
|
|
50
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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,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"}
|