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.
Files changed (36) hide show
  1. package/README.md +77 -8
  2. package/dist/auth/account-store.d.ts +36 -0
  3. package/dist/auth/account-store.js +366 -0
  4. package/dist/auth/account-store.js.map +1 -0
  5. package/dist/auth/credential-store.d.ts +2 -0
  6. package/dist/auth/credential-store.js +33 -1
  7. package/dist/auth/credential-store.js.map +1 -1
  8. package/dist/auth/oauth-flow.d.ts +0 -2
  9. package/dist/auth/oauth-flow.js +122 -15
  10. package/dist/auth/oauth-flow.js.map +1 -1
  11. package/dist/auth/oauth-service.d.ts +12 -3
  12. package/dist/auth/oauth-service.js +90 -29
  13. package/dist/auth/oauth-service.js.map +1 -1
  14. package/dist/cli.js +336 -14
  15. package/dist/cli.js.map +1 -1
  16. package/dist/commands/auth-login.d.ts +16 -0
  17. package/dist/commands/auth-login.js +114 -0
  18. package/dist/commands/auth-login.js.map +1 -0
  19. package/dist/commands/auth-logout.d.ts +19 -0
  20. package/dist/commands/auth-logout.js +178 -0
  21. package/dist/commands/auth-logout.js.map +1 -0
  22. package/dist/config/env.d.ts +1 -0
  23. package/dist/config/env.js +3 -1
  24. package/dist/config/env.js.map +1 -1
  25. package/dist/gemini/code-assist-client.d.ts +15 -1
  26. package/dist/gemini/code-assist-client.js +101 -37
  27. package/dist/gemini/code-assist-client.js.map +1 -1
  28. package/dist/gemini/errors.d.ts +8 -0
  29. package/dist/gemini/errors.js +29 -0
  30. package/dist/gemini/errors.js.map +1 -0
  31. package/dist/server/app.js +8 -3
  32. package/dist/server/app.js.map +1 -1
  33. package/dist/server/background-service.d.ts +46 -0
  34. package/dist/server/background-service.js +332 -0
  35. package/dist/server/background-service.js.map +1 -0
  36. package/package.json +6 -1
package/dist/cli.js CHANGED
@@ -1,34 +1,283 @@
1
1
  #!/usr/bin/env node
2
- import { createCredentialStore } from "./auth/credential-store.js";
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 = createCredentialStore(env.oauthPath, env.oauthFallbackPath);
33
+ const store = createAccountStore(env.accountsPath, env.oauthPath, env.oauthFallbackPath);
22
34
  const oauthService = new OAuthService(store);
23
- const result = await oauthService.login();
24
- process.stdout.write(`OAuth login succeeded${result.email ? `: ${result.email}` : ""}\n`);
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 runAuthLogout() {
241
+ async function runAuthAccountsList() {
27
242
  const env = loadEnv();
28
- const store = createCredentialStore(env.oauthPath, env.oauthFallbackPath);
243
+ const store = createAccountStore(env.accountsPath, env.oauthPath, env.oauthFallbackPath);
29
244
  const oauthService = new OAuthService(store);
30
- await oauthService.logout();
31
- process.stdout.write("OAuth credentials cleared\n");
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 = createCredentialStore(env.oauthPath, env.oauthFallbackPath);
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 {};