geminimock 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 +77 -8
- package/dist/auth/account-store.d.ts +36 -0
- package/dist/auth/account-store.js +366 -0
- package/dist/auth/account-store.js.map +1 -0
- package/dist/auth/credential-store.d.ts +2 -0
- package/dist/auth/credential-store.js +33 -1
- package/dist/auth/credential-store.js.map +1 -1
- package/dist/auth/oauth-flow.d.ts +0 -2
- package/dist/auth/oauth-flow.js +122 -15
- package/dist/auth/oauth-flow.js.map +1 -1
- package/dist/auth/oauth-service.d.ts +12 -3
- package/dist/auth/oauth-service.js +90 -29
- package/dist/auth/oauth-service.js.map +1 -1
- package/dist/cli.js +336 -14
- package/dist/cli.js.map +1 -1
- package/dist/commands/auth-login.d.ts +16 -0
- package/dist/commands/auth-login.js +114 -0
- package/dist/commands/auth-login.js.map +1 -0
- package/dist/commands/auth-logout.d.ts +19 -0
- package/dist/commands/auth-logout.js +178 -0
- package/dist/commands/auth-logout.js.map +1 -0
- package/dist/config/env.d.ts +1 -0
- package/dist/config/env.js +3 -1
- package/dist/config/env.js.map +1 -1
- package/dist/gemini/code-assist-client.d.ts +15 -1
- package/dist/gemini/code-assist-client.js +101 -37
- package/dist/gemini/code-assist-client.js.map +1 -1
- package/dist/gemini/errors.d.ts +8 -0
- package/dist/gemini/errors.js +29 -0
- package/dist/gemini/errors.js.map +1 -0
- package/dist/server/app.js +8 -3
- package/dist/server/app.js.map +1 -1
- package/dist/server/background-service.d.ts +46 -0
- package/dist/server/background-service.js +332 -0
- package/dist/server/background-service.js.map +1 -0
- package/package.json +6 -1
package/dist/cli.js
CHANGED
|
@@ -1,34 +1,283 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { createInterface } from "node:readline/promises";
|
|
3
|
+
import { emitKeypressEvents } from "node:readline";
|
|
4
|
+
import { stdin as input, stdout as output } from "node:process";
|
|
5
|
+
import { createAccountStore } from "./auth/account-store.js";
|
|
3
6
|
import { OAuthService } from "./auth/oauth-service.js";
|
|
7
|
+
import { runAuthLoginFlow } from "./commands/auth-login.js";
|
|
8
|
+
import { runAuthLogoutFlow } from "./commands/auth-logout.js";
|
|
4
9
|
import { loadEnv } from "./config/env.js";
|
|
5
10
|
import { CodeAssistClient } from "./gemini/code-assist-client.js";
|
|
6
11
|
import { ModelCatalogService } from "./gemini/model-catalog-service.js";
|
|
7
12
|
import { createApp } from "./server/app.js";
|
|
13
|
+
import { createBackgroundServiceManager } from "./server/background-service.js";
|
|
8
14
|
import { performSelfUpdate } from "./update/self-update.js";
|
|
9
15
|
function usage() {
|
|
10
16
|
process.stdout.write([
|
|
11
17
|
"Usage:",
|
|
12
18
|
" geminimock serve",
|
|
19
|
+
" geminimock server start",
|
|
20
|
+
" geminimock server stop",
|
|
21
|
+
" geminimock server status",
|
|
13
22
|
" geminimock auth login",
|
|
14
|
-
" geminimock auth logout",
|
|
23
|
+
" geminimock auth logout [--all]",
|
|
24
|
+
" geminimock auth accounts list",
|
|
25
|
+
" geminimock auth accounts use <id|email>",
|
|
26
|
+
" geminimock auth accounts remove <id|email>",
|
|
15
27
|
" geminimock models list",
|
|
16
28
|
" geminimock update"
|
|
17
29
|
].join("\n") + "\n");
|
|
18
30
|
}
|
|
19
|
-
async function runAuthLogin() {
|
|
31
|
+
async function runAuthLogin(singleOnly = false) {
|
|
20
32
|
const env = loadEnv();
|
|
21
|
-
const store =
|
|
33
|
+
const store = createAccountStore(env.accountsPath, env.oauthPath, env.oauthFallbackPath);
|
|
22
34
|
const oauthService = new OAuthService(store);
|
|
23
|
-
const
|
|
24
|
-
|
|
35
|
+
const isTTY = Boolean(process.stdin.isTTY && process.stdout.isTTY);
|
|
36
|
+
if (singleOnly || !isTTY) {
|
|
37
|
+
const result = await oauthService.login();
|
|
38
|
+
process.stdout.write(`OAuth login succeeded${result.email ? `: ${result.email}` : ""}\n`);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const keyQueue = [];
|
|
42
|
+
let keyResolver = null;
|
|
43
|
+
function mapKeypressToLoginKey(key) {
|
|
44
|
+
const name = key.name?.toLowerCase();
|
|
45
|
+
if (name === "up") {
|
|
46
|
+
return "up";
|
|
47
|
+
}
|
|
48
|
+
if (name === "down") {
|
|
49
|
+
return "down";
|
|
50
|
+
}
|
|
51
|
+
if (name === "return" || name === "enter") {
|
|
52
|
+
return "enter";
|
|
53
|
+
}
|
|
54
|
+
if (name === "escape" || name === "q" || (key.ctrl && name === "c")) {
|
|
55
|
+
return "cancel";
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
const onKeypress = (_str, key) => {
|
|
60
|
+
const mapped = mapKeypressToLoginKey(key);
|
|
61
|
+
if (!mapped) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (keyResolver) {
|
|
65
|
+
const resolve = keyResolver;
|
|
66
|
+
keyResolver = null;
|
|
67
|
+
resolve(mapped);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
keyQueue.push(mapped);
|
|
71
|
+
};
|
|
72
|
+
async function readLoginKeyFromTTY() {
|
|
73
|
+
const next = keyQueue.shift();
|
|
74
|
+
if (next) {
|
|
75
|
+
return next;
|
|
76
|
+
}
|
|
77
|
+
return new Promise((resolve) => {
|
|
78
|
+
keyResolver = resolve;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
const stdin = process.stdin;
|
|
82
|
+
const wasRaw = Boolean(stdin.isRaw);
|
|
83
|
+
const io = {
|
|
84
|
+
isTTY,
|
|
85
|
+
write(message) {
|
|
86
|
+
process.stdout.write(message);
|
|
87
|
+
},
|
|
88
|
+
clear() {
|
|
89
|
+
process.stdout.write("\u001b[2J\u001b[H");
|
|
90
|
+
},
|
|
91
|
+
async readKey() {
|
|
92
|
+
return readLoginKeyFromTTY();
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
const doLoginWithCookedMode = async () => {
|
|
96
|
+
process.stdout.write("\u001b[2J\u001b[H");
|
|
97
|
+
process.stdout.write("\u001b[?25h");
|
|
98
|
+
stdin.setRawMode(false);
|
|
99
|
+
stdin.off("keypress", onKeypress);
|
|
100
|
+
keyResolver = null;
|
|
101
|
+
keyQueue.length = 0;
|
|
102
|
+
try {
|
|
103
|
+
return await oauthService.login({
|
|
104
|
+
write(message) {
|
|
105
|
+
process.stdout.write(message);
|
|
106
|
+
},
|
|
107
|
+
async readCode(prompt) {
|
|
108
|
+
const rl = createInterface({ input, output });
|
|
109
|
+
try {
|
|
110
|
+
return await rl.question(prompt);
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
rl.close();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
emitKeypressEvents(stdin);
|
|
120
|
+
stdin.on("keypress", onKeypress);
|
|
121
|
+
stdin.setRawMode(true);
|
|
122
|
+
process.stdout.write("\u001b[?25l");
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
emitKeypressEvents(stdin);
|
|
126
|
+
stdin.on("keypress", onKeypress);
|
|
127
|
+
stdin.setRawMode(true);
|
|
128
|
+
stdin.resume();
|
|
129
|
+
process.stdout.write("\u001b[?25l");
|
|
130
|
+
try {
|
|
131
|
+
const lines = await runAuthLoginFlow({
|
|
132
|
+
io,
|
|
133
|
+
doLogin: doLoginWithCookedMode
|
|
134
|
+
});
|
|
135
|
+
process.stdout.write("\u001b[2J\u001b[H");
|
|
136
|
+
process.stdout.write(`${lines.join("\n")}\n`);
|
|
137
|
+
}
|
|
138
|
+
finally {
|
|
139
|
+
process.stdout.write("\u001b[?25h");
|
|
140
|
+
stdin.off("keypress", onKeypress);
|
|
141
|
+
keyResolver = null;
|
|
142
|
+
stdin.setRawMode(wasRaw);
|
|
143
|
+
stdin.pause();
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
async function runAuthLogout(all = false) {
|
|
147
|
+
const env = loadEnv();
|
|
148
|
+
const store = createAccountStore(env.accountsPath, env.oauthPath, env.oauthFallbackPath);
|
|
149
|
+
const oauthService = new OAuthService(store);
|
|
150
|
+
const isTTY = Boolean(process.stdin.isTTY && process.stdout.isTTY);
|
|
151
|
+
const keyQueue = [];
|
|
152
|
+
let keyResolver = null;
|
|
153
|
+
function mapKeypressToLogoutKey(key) {
|
|
154
|
+
const name = key.name?.toLowerCase();
|
|
155
|
+
if (name === "up") {
|
|
156
|
+
return "up";
|
|
157
|
+
}
|
|
158
|
+
if (name === "down") {
|
|
159
|
+
return "down";
|
|
160
|
+
}
|
|
161
|
+
if (name === "return" || name === "enter") {
|
|
162
|
+
return "enter";
|
|
163
|
+
}
|
|
164
|
+
if (name === "escape" || name === "q" || (key.ctrl && name === "c")) {
|
|
165
|
+
return "cancel";
|
|
166
|
+
}
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
const onKeypress = (_str, key) => {
|
|
170
|
+
const mapped = mapKeypressToLogoutKey(key);
|
|
171
|
+
if (!mapped) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
if (keyResolver) {
|
|
175
|
+
const resolve = keyResolver;
|
|
176
|
+
keyResolver = null;
|
|
177
|
+
resolve(mapped);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
keyQueue.push(mapped);
|
|
181
|
+
};
|
|
182
|
+
async function readLogoutKeyFromTTY() {
|
|
183
|
+
const next = keyQueue.shift();
|
|
184
|
+
if (next) {
|
|
185
|
+
return next;
|
|
186
|
+
}
|
|
187
|
+
return new Promise((resolve) => {
|
|
188
|
+
keyResolver = resolve;
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
const io = {
|
|
192
|
+
isTTY,
|
|
193
|
+
write(message) {
|
|
194
|
+
process.stdout.write(message);
|
|
195
|
+
},
|
|
196
|
+
clear() {
|
|
197
|
+
process.stdout.write("\u001b[2J\u001b[H");
|
|
198
|
+
},
|
|
199
|
+
async readKey() {
|
|
200
|
+
if (!isTTY) {
|
|
201
|
+
return "cancel";
|
|
202
|
+
}
|
|
203
|
+
return readLogoutKeyFromTTY();
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
const runFlow = async () => {
|
|
207
|
+
const lines = await runAuthLogoutFlow({
|
|
208
|
+
oauthService,
|
|
209
|
+
store,
|
|
210
|
+
io,
|
|
211
|
+
forceAll: all
|
|
212
|
+
});
|
|
213
|
+
if (isTTY) {
|
|
214
|
+
process.stdout.write("\u001b[2J\u001b[H");
|
|
215
|
+
}
|
|
216
|
+
process.stdout.write(`${lines.join("\n")}\n`);
|
|
217
|
+
};
|
|
218
|
+
const canRawMode = isTTY && typeof process.stdin.setRawMode === "function";
|
|
219
|
+
if (!canRawMode) {
|
|
220
|
+
await runFlow();
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
const stdin = process.stdin;
|
|
224
|
+
const wasRaw = Boolean(stdin.isRaw);
|
|
225
|
+
emitKeypressEvents(stdin);
|
|
226
|
+
stdin.on("keypress", onKeypress);
|
|
227
|
+
stdin.setRawMode(true);
|
|
228
|
+
stdin.resume();
|
|
229
|
+
process.stdout.write("\u001b[?25l");
|
|
230
|
+
try {
|
|
231
|
+
await runFlow();
|
|
232
|
+
}
|
|
233
|
+
finally {
|
|
234
|
+
process.stdout.write("\u001b[?25h");
|
|
235
|
+
stdin.off("keypress", onKeypress);
|
|
236
|
+
keyResolver = null;
|
|
237
|
+
stdin.setRawMode(wasRaw);
|
|
238
|
+
stdin.pause();
|
|
239
|
+
}
|
|
25
240
|
}
|
|
26
|
-
async function
|
|
241
|
+
async function runAuthAccountsList() {
|
|
27
242
|
const env = loadEnv();
|
|
28
|
-
const store =
|
|
243
|
+
const store = createAccountStore(env.accountsPath, env.oauthPath, env.oauthFallbackPath);
|
|
29
244
|
const oauthService = new OAuthService(store);
|
|
30
|
-
await oauthService.
|
|
31
|
-
|
|
245
|
+
const accounts = await oauthService.listAccounts();
|
|
246
|
+
const active = await store.getActiveAccount();
|
|
247
|
+
if (accounts.length === 0) {
|
|
248
|
+
process.stdout.write("No accounts registered\n");
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
for (const account of accounts) {
|
|
252
|
+
const marker = active?.id === account.id ? "*" : " ";
|
|
253
|
+
const label = account.email ?? "(no email)";
|
|
254
|
+
const status = account.enabled ? "enabled" : "disabled";
|
|
255
|
+
process.stdout.write(`${marker} ${account.id} ${label} ${status}\n`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
async function runAuthAccountsUse(idOrEmail) {
|
|
259
|
+
if (!idOrEmail) {
|
|
260
|
+
throw new Error("Missing account id or email");
|
|
261
|
+
}
|
|
262
|
+
const env = loadEnv();
|
|
263
|
+
const store = createAccountStore(env.accountsPath, env.oauthPath, env.oauthFallbackPath);
|
|
264
|
+
const oauthService = new OAuthService(store);
|
|
265
|
+
const selected = await oauthService.useAccount(idOrEmail);
|
|
266
|
+
process.stdout.write(`Active account set: ${selected.id}${selected.email ? ` (${selected.email})` : ""}\n`);
|
|
267
|
+
}
|
|
268
|
+
async function runAuthAccountsRemove(idOrEmail) {
|
|
269
|
+
if (!idOrEmail) {
|
|
270
|
+
throw new Error("Missing account id or email");
|
|
271
|
+
}
|
|
272
|
+
const env = loadEnv();
|
|
273
|
+
const store = createAccountStore(env.accountsPath, env.oauthPath, env.oauthFallbackPath);
|
|
274
|
+
const oauthService = new OAuthService(store);
|
|
275
|
+
const removed = await oauthService.removeAccount(idOrEmail);
|
|
276
|
+
if (!removed) {
|
|
277
|
+
process.stdout.write(`Account not found: ${idOrEmail}\n`);
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
process.stdout.write(`Account removed: ${idOrEmail}\n`);
|
|
32
281
|
}
|
|
33
282
|
async function runServe() {
|
|
34
283
|
const env = loadEnv();
|
|
@@ -36,11 +285,60 @@ async function runServe() {
|
|
|
36
285
|
await app.listen({ host: env.host, port: env.port });
|
|
37
286
|
process.stdout.write(`Server listening on http://${env.host}:${env.port}\n`);
|
|
38
287
|
}
|
|
288
|
+
async function runServerStart() {
|
|
289
|
+
const manager = createBackgroundServiceManager();
|
|
290
|
+
const result = await manager.start();
|
|
291
|
+
if (result.alreadyRunning) {
|
|
292
|
+
if (result.pid) {
|
|
293
|
+
process.stdout.write(`Server already running (PID ${result.pid}) at ${result.url}\n`);
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
process.stdout.write(`Server already running at ${result.url}\n`);
|
|
297
|
+
}
|
|
298
|
+
process.stdout.write(`Logs: ${result.logPath}\n`);
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
process.stdout.write(`Server started in background (PID ${result.pid ?? "unknown"}) at ${result.url}\n`);
|
|
302
|
+
process.stdout.write(`Logs: ${result.logPath}\n`);
|
|
303
|
+
}
|
|
304
|
+
async function runServerStop() {
|
|
305
|
+
const manager = createBackgroundServiceManager();
|
|
306
|
+
const result = await manager.stop();
|
|
307
|
+
if (!result.stopped) {
|
|
308
|
+
if (result.unmanagedRunning) {
|
|
309
|
+
process.stdout.write("Server is running but unmanaged by geminimock (no pid file)\n");
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
process.stdout.write("Server is not running\n");
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
process.stdout.write(`Server stopped (PID ${result.pid})\n`);
|
|
316
|
+
}
|
|
317
|
+
async function runServerStatus() {
|
|
318
|
+
const manager = createBackgroundServiceManager();
|
|
319
|
+
const result = await manager.status();
|
|
320
|
+
if (!result.running) {
|
|
321
|
+
process.stdout.write(`Server is not running (${result.url})\n`);
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
if (result.pid) {
|
|
325
|
+
process.stdout.write(`Server is running (PID ${result.pid}) at ${result.url}\n`);
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
process.stdout.write(`Server is running at ${result.url} (unmanaged)\n`);
|
|
329
|
+
}
|
|
330
|
+
process.stdout.write(`Logs: ${result.logPath}\n`);
|
|
331
|
+
}
|
|
39
332
|
async function runModelsList() {
|
|
40
333
|
const env = loadEnv();
|
|
41
|
-
const store =
|
|
334
|
+
const store = createAccountStore(env.accountsPath, env.oauthPath, env.oauthFallbackPath);
|
|
42
335
|
const oauthService = new OAuthService(store);
|
|
43
|
-
const client = new CodeAssistClient(env, () => oauthService.getAccessToken()
|
|
336
|
+
const client = new CodeAssistClient(env, () => oauthService.getAccessToken(), {
|
|
337
|
+
onApiError: (error) => oauthService.handleCodeAssistError(error),
|
|
338
|
+
onApiSuccess: () => oauthService.handleCodeAssistSuccess(),
|
|
339
|
+
maxAttempts: () => oauthService.getApiAttemptLimit(),
|
|
340
|
+
getAccountCacheKey: () => oauthService.getActiveAccountId()
|
|
341
|
+
});
|
|
44
342
|
const catalog = new ModelCatalogService(client);
|
|
45
343
|
const models = await catalog.listModels(true);
|
|
46
344
|
if (models.length === 0) {
|
|
@@ -58,12 +356,36 @@ async function main() {
|
|
|
58
356
|
await runServe();
|
|
59
357
|
return;
|
|
60
358
|
}
|
|
359
|
+
if (args[0] === "server" && args[1] === "start") {
|
|
360
|
+
await runServerStart();
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
if (args[0] === "server" && args[1] === "stop") {
|
|
364
|
+
await runServerStop();
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
if (args[0] === "server" && args[1] === "status") {
|
|
368
|
+
await runServerStatus();
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
61
371
|
if (args[0] === "auth" && args[1] === "login") {
|
|
62
|
-
await runAuthLogin();
|
|
372
|
+
await runAuthLogin(args.includes("--single"));
|
|
63
373
|
return;
|
|
64
374
|
}
|
|
65
375
|
if (args[0] === "auth" && args[1] === "logout") {
|
|
66
|
-
await runAuthLogout();
|
|
376
|
+
await runAuthLogout(args.includes("--all"));
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
if (args[0] === "auth" && args[1] === "accounts" && args[2] === "list") {
|
|
380
|
+
await runAuthAccountsList();
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
if (args[0] === "auth" && args[1] === "accounts" && args[2] === "use") {
|
|
384
|
+
await runAuthAccountsUse(args[3]);
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
if (args[0] === "auth" && args[1] === "accounts" && args[2] === "remove") {
|
|
388
|
+
await runAuthAccountsRemove(args[3]);
|
|
67
389
|
return;
|
|
68
390
|
}
|
|
69
391
|
if (args[0] === "models" && args[1] === "list") {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type LoginKey = "up" | "down" | "enter" | "cancel";
|
|
2
|
+
export type LoginTuiIO = {
|
|
3
|
+
isTTY: boolean;
|
|
4
|
+
write(message: string): void;
|
|
5
|
+
clear(): void;
|
|
6
|
+
readKey(): Promise<LoginKey>;
|
|
7
|
+
};
|
|
8
|
+
type LoginResult = {
|
|
9
|
+
email?: string;
|
|
10
|
+
};
|
|
11
|
+
export type RunAuthLoginFlowOptions = {
|
|
12
|
+
io: LoginTuiIO;
|
|
13
|
+
doLogin: () => Promise<LoginResult>;
|
|
14
|
+
};
|
|
15
|
+
export declare function runAuthLoginFlow(options: RunAuthLoginFlowOptions): Promise<string[]>;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
function moveIndex(current, delta, total) {
|
|
2
|
+
if (total <= 0) {
|
|
3
|
+
return 0;
|
|
4
|
+
}
|
|
5
|
+
const next = (current + delta) % total;
|
|
6
|
+
return next < 0 ? next + total : next;
|
|
7
|
+
}
|
|
8
|
+
function renderStartScreen(index) {
|
|
9
|
+
const options = ["Start OAuth login", "Cancel"];
|
|
10
|
+
const lines = [
|
|
11
|
+
"+------------------------------------------------------------+",
|
|
12
|
+
"| GeminiMock Login Selector |",
|
|
13
|
+
"+------------------------------------------------------------+",
|
|
14
|
+
"Use Up/Down to move, Enter to select, Q/Esc to cancel",
|
|
15
|
+
""
|
|
16
|
+
];
|
|
17
|
+
for (let i = 0; i < options.length; i += 1) {
|
|
18
|
+
const marker = i === index ? ">" : " ";
|
|
19
|
+
lines.push(`${marker} ${options[i]}`);
|
|
20
|
+
}
|
|
21
|
+
lines.push("");
|
|
22
|
+
return lines.join("\n");
|
|
23
|
+
}
|
|
24
|
+
function renderAfterLoginScreen(index, lastLoginAccount) {
|
|
25
|
+
const options = ["Login another account", "Finish"];
|
|
26
|
+
const lines = [
|
|
27
|
+
"+------------------------------------------------------------+",
|
|
28
|
+
"| Login Completed |",
|
|
29
|
+
"+------------------------------------------------------------+",
|
|
30
|
+
`Last login account: ${lastLoginAccount}`,
|
|
31
|
+
"Use Up/Down and Enter",
|
|
32
|
+
""
|
|
33
|
+
];
|
|
34
|
+
for (let i = 0; i < options.length; i += 1) {
|
|
35
|
+
const marker = i === index ? ">" : " ";
|
|
36
|
+
lines.push(`${marker} ${options[i]}`);
|
|
37
|
+
}
|
|
38
|
+
lines.push("");
|
|
39
|
+
return lines.join("\n");
|
|
40
|
+
}
|
|
41
|
+
function successLine(result) {
|
|
42
|
+
return `OAuth login succeeded${result.email ? `: ${result.email}` : ""}`;
|
|
43
|
+
}
|
|
44
|
+
function loginAccountLabel(result) {
|
|
45
|
+
return result.email ?? "(email unavailable)";
|
|
46
|
+
}
|
|
47
|
+
export async function runAuthLoginFlow(options) {
|
|
48
|
+
const { io, doLogin } = options;
|
|
49
|
+
if (!io.isTTY) {
|
|
50
|
+
const result = await doLogin();
|
|
51
|
+
return [successLine(result)];
|
|
52
|
+
}
|
|
53
|
+
const lines = [];
|
|
54
|
+
let state = { kind: "start", index: 0 };
|
|
55
|
+
while (true) {
|
|
56
|
+
io.clear();
|
|
57
|
+
if (state.kind === "start") {
|
|
58
|
+
io.write(`${renderStartScreen(state.index)}\n`);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
io.write(`${renderAfterLoginScreen(state.index, state.lastLoginAccount)}\n`);
|
|
62
|
+
}
|
|
63
|
+
const key = await io.readKey();
|
|
64
|
+
if (state.kind === "start") {
|
|
65
|
+
if (key === "up") {
|
|
66
|
+
state = { kind: "start", index: moveIndex(state.index, -1, 2) };
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (key === "down") {
|
|
70
|
+
state = { kind: "start", index: moveIndex(state.index, 1, 2) };
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (key === "cancel") {
|
|
74
|
+
return ["Login cancelled"];
|
|
75
|
+
}
|
|
76
|
+
if (state.index === 1) {
|
|
77
|
+
return ["Login cancelled"];
|
|
78
|
+
}
|
|
79
|
+
const result = await doLogin();
|
|
80
|
+
lines.push(successLine(result));
|
|
81
|
+
state = { kind: "after", index: 0, lastLoginAccount: loginAccountLabel(result) };
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (key === "up") {
|
|
85
|
+
state = {
|
|
86
|
+
kind: "after",
|
|
87
|
+
index: moveIndex(state.index, -1, 2),
|
|
88
|
+
lastLoginAccount: state.lastLoginAccount
|
|
89
|
+
};
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (key === "down") {
|
|
93
|
+
state = {
|
|
94
|
+
kind: "after",
|
|
95
|
+
index: moveIndex(state.index, 1, 2),
|
|
96
|
+
lastLoginAccount: state.lastLoginAccount
|
|
97
|
+
};
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (key === "cancel") {
|
|
101
|
+
lines.push("Login flow finished");
|
|
102
|
+
return lines;
|
|
103
|
+
}
|
|
104
|
+
if (state.index === 0) {
|
|
105
|
+
const result = await doLogin();
|
|
106
|
+
lines.push(successLine(result));
|
|
107
|
+
state = { kind: "after", index: 0, lastLoginAccount: loginAccountLabel(result) };
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
lines.push("Login flow finished");
|
|
111
|
+
return lines;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=auth-login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-login.js","sourceRoot":"","sources":["../../src/commands/auth-login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AccountStore } from "../auth/account-store.js";
|
|
2
|
+
import type { OAuthService } from "../auth/oauth-service.js";
|
|
3
|
+
export type LogoutKey = "up" | "down" | "enter" | "cancel";
|
|
4
|
+
export type LogoutTuiIO = {
|
|
5
|
+
isTTY: boolean;
|
|
6
|
+
write(message: string): void;
|
|
7
|
+
clear(): void;
|
|
8
|
+
readKey(): Promise<LogoutKey>;
|
|
9
|
+
};
|
|
10
|
+
type LogoutService = Pick<OAuthService, "listAccounts" | "logout" | "logoutAll" | "removeAccount">;
|
|
11
|
+
type LogoutStore = Pick<AccountStore, "getActiveAccount">;
|
|
12
|
+
export type RunAuthLogoutFlowOptions = {
|
|
13
|
+
oauthService: LogoutService;
|
|
14
|
+
store: LogoutStore;
|
|
15
|
+
io: LogoutTuiIO;
|
|
16
|
+
forceAll?: boolean;
|
|
17
|
+
};
|
|
18
|
+
export declare function runAuthLogoutFlow(options: RunAuthLogoutFlowOptions): Promise<string[]>;
|
|
19
|
+
export {};
|