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
package/README.md CHANGED
@@ -18,12 +18,36 @@ agyx install
18
18
  source ~/.zshrc
19
19
  ```
20
20
 
21
+ `agyx install` writes a shell function to your shell rc file. It does not modify
22
+ the already-open terminal automatically. Open a new terminal, or run the
23
+ displayed `source ...` command.
24
+
25
+ For the current terminal only, without reloading your shell rc file:
26
+
27
+ ```bash
28
+ eval "$(agyx shell-init)"
29
+ ```
30
+
31
+ If you run an interactive `agyx` command before installing the shell
32
+ integration, agyx asks once whether to configure `agy` as the transparent shell
33
+ function. If GitHub CLI (`gh`) is installed, agyx also asks once whether to star
34
+ the repository. Interactive prompts use Inquirer. Set `AGYX_NO_ONBOARDING=1` to
35
+ suppress these prompts.
36
+
21
37
  The shell integration makes `agy` transparently run as:
22
38
 
23
39
  ```text
24
40
  agyx session -- <all original agy arguments>
25
41
  ```
26
42
 
43
+ Verify the active terminal with:
44
+
45
+ ```bash
46
+ type agy
47
+ ```
48
+
49
+ Expected result: `agy` is a shell function that calls `agyx session`.
50
+
27
51
  All original options are forwarded, including:
28
52
 
29
53
  ```bash
@@ -47,10 +71,10 @@ agyx save
47
71
  agyx save personal
48
72
  ```
49
73
 
50
- When the name is omitted, `agyx save` reads the active Google account from
51
- `~/.gemini/google_accounts.json` and derives a profile name from the email
52
- local-part. Use `--email EMAIL` only when you want to override the detected
53
- metadata.
74
+ When the name is omitted, `agyx save` briefly probes `agy` authentication,
75
+ detects the actual keyring account email from the `agy` log, and derives a
76
+ profile name from the email local-part. Use `--email EMAIL` only when you want
77
+ to override the detected metadata.
54
78
 
55
79
  Add another account:
56
80
 
@@ -68,7 +92,7 @@ agyx login
68
92
  5. Restart every supervised session in its original terminal.
69
93
 
70
94
  When the name is omitted, `agyx login` derives it from the OAuth email detected
71
- in the `agy` log, falling back to `~/.gemini/google_accounts.json`.
95
+ in the `agy` log.
72
96
 
73
97
  Use `--no-resume` to leave sessions paused after login.
74
98
 
@@ -82,13 +106,14 @@ agyx next
82
106
  agyx status
83
107
  ```
84
108
 
85
- `agyx use` without a profile opens an interactive picker. The picker and
86
- `agyx list` show profile metadata:
109
+ `agyx use` without a profile opens an interactive picker. `agyx list` renders a
110
+ terminal table. Both show profile metadata:
87
111
 
88
112
  - `status`: `ready`, `quota`, `disabled`, or `unknown`
89
- - `reset`: relative quota reset time when it can be inferred from logs
90
- - `last-used`: when the profile was last activated through agyx
91
- - `picks`: how many times agyx selected the profile
113
+ - `quota-reset`: relative quota reset time when it can be inferred from logs
114
+ - `last-request`: when a supervised `agy` log last showed a model request
115
+ - `activated`: when agyx last made the profile active
116
+ - `switches`: how many times agyx selected the profile through login/use/next
92
117
 
93
118
  `agyx next` uses name-sorted round-robin order, starting after the currently
94
119
  active profile. It skips profiles marked `disabled` or currently quota
@@ -109,10 +134,10 @@ signals such as `RESOURCE_EXHAUSTED`, HTTP `429`, and `Individual quota
109
134
  reached`. When a reset hint such as `Resets in 73h16m27s` is present, agyx stores
110
135
  the inferred reset time in profile metadata.
111
136
 
112
- This release records quota state and makes `agyx next` avoid exhausted profiles.
113
- It does not yet perform an automatic global account switch from inside a running
114
- session; use `agyx next` after a quota message so the switch still happens
115
- through the normal pause/switch/resume transaction.
137
+ This release records quota state, request attempts, and makes `agyx next` avoid
138
+ exhausted profiles. It does not yet perform an automatic global account switch
139
+ from inside a running session; use `agyx next` after a quota message so the
140
+ switch still happens through the normal pause/switch/resume transaction.
116
141
 
117
142
  ## Security
118
143
 
package/dist/src/cli.js CHANGED
@@ -1,32 +1,43 @@
1
1
  #!/usr/bin/env node
2
- import { createInterface } from "node:readline/promises";
3
- import { activateProfile, loginProfile, pauseAll, resumeAll, saveCurrent, sessionRecords, switchProfile, } from "./coordinator.js";
4
- import { installShellIntegration, shellInit } from "./install.js";
2
+ import { activateProfile, loginProfile, pauseAll, resumeAll, saveCurrent, sessionRecords, switchProfile, switchToNextProfile, verifyAllProfiles, } from "./coordinator.js";
3
+ import { installShellIntegration, shellInit, shellIntegrationInstalled, shellIntegrationPath, } from "./install.js";
5
4
  import { keychain } from "./keychain.js";
5
+ import { maybeRunOnboarding } from "./onboarding.js";
6
6
  import { findRealAgy } from "./processes.js";
7
7
  import { loadState, saveState, validateProfileName } from "./config.js";
8
- import { effectiveProfileStatus, selectNextProfile } from "./selection.js";
9
8
  import { supervise } from "./session.js";
9
+ import { confirmAction, pickProfileAction, printProfileTable, promptText } from "./ui.js";
10
10
  const help = `agyx — multi-account session supervisor for Antigravity CLI
11
11
 
12
12
  Usage:
13
- agyx install Install transparent agy shell shim
13
+ agyx install Install agy shell function
14
14
  agyx session -- [agy options] Run agy under a restartable supervisor
15
15
  agyx save [name] [--email EMAIL] Save the current Keychain account
16
16
  agyx login [name] [--email EMAIL] [--no-resume]
17
17
  Pause all sessions and add an account
18
18
  agyx use [name] Switch account and resume every session
19
19
  agyx next Rotate to the next selectable account
20
- agyx list List profiles
20
+ agyx list [--verify] List profiles; optionally verify saved credentials
21
21
  agyx current Print the active profile
22
22
  agyx status List supervised terminal sessions
23
23
  agyx pause | resume Pause or resume all supervised sessions
24
+ agyx rename <old> <new> Rename a saved profile
24
25
  agyx remove <name> Delete a saved profile
25
26
  agyx shell-init Print the shell integration function
26
27
  agyx doctor Diagnose the installation
27
28
 
28
29
  All arguments passed through "agy" are forwarded to the real agy executable.
29
30
  Non-interactive --print/--prompt commands are not automatically restarted.`;
31
+ function printSwitchResult(result) {
32
+ if (result.alreadyActive) {
33
+ console.log(`Profile '${result.name}' is already active.`
34
+ + (result.email ? ` (${result.email})` : ""));
35
+ return;
36
+ }
37
+ console.log(`Activated profile '${result.name}'`
38
+ + (result.email ? ` (${result.email})` : "")
39
+ + " and resumed all sessions.");
40
+ }
30
41
  function takeOption(args, name) {
31
42
  const index = args.indexOf(name);
32
43
  if (index < 0)
@@ -47,91 +58,91 @@ function takeOptionalName(args, usage) {
47
58
  throw new Error(`Usage: ${usage}`);
48
59
  return args.shift();
49
60
  }
50
- function relativeTime(value, now = new Date()) {
51
- if (!value)
52
- return "-";
53
- const timestamp = Date.parse(value);
54
- if (Number.isNaN(timestamp))
55
- return "-";
56
- const delta = timestamp - now.getTime();
57
- const absolute = Math.abs(delta);
58
- const units = [
59
- [24 * 60 * 60 * 1000, "d"],
60
- [60 * 60 * 1000, "h"],
61
- [60 * 1000, "m"],
62
- [1000, "s"],
63
- ];
64
- const [unitMs, suffix] = units.find(([ms]) => absolute >= ms) ?? units.at(-1);
65
- const amount = Math.max(1, Math.round(absolute / unitMs));
66
- return delta >= 0 ? `in ${amount}${suffix}` : `${amount}${suffix} ago`;
67
- }
68
- function profileStatusText(profile, now = new Date()) {
69
- const status = effectiveProfileStatus(profile, now);
70
- if (status === "disabled")
71
- return "disabled";
72
- if (status === "exhausted")
73
- return "quota";
74
- return profile.quotaStatus === "available" ? "ready" : "unknown";
61
+ async function removeProfile(name) {
62
+ validateProfileName(name);
63
+ await keychain.deleteProfile(name);
64
+ const state = await loadState();
65
+ state.profiles = state.profiles.filter((profile) => profile.name !== name);
66
+ if (state.activeProfile === name)
67
+ state.activeProfile = undefined;
68
+ await saveState(state);
75
69
  }
76
- function profileRow(index, profile, activeProfile, now = new Date()) {
77
- const marker = profile.name === activeProfile ? "*" : " ";
78
- const number = String(index + 1).padStart(2);
79
- const name = profile.name.padEnd(18);
80
- const email = (profile.email ?? "-").padEnd(28);
81
- const status = profileStatusText(profile, now).padEnd(8);
82
- const reset = relativeTime(profile.quotaResetAt, now).padEnd(8);
83
- const lastUsed = relativeTime(profile.lastActivatedAt, now).padEnd(9);
84
- const picks = String(profile.selectionCount ?? 0).padStart(5);
85
- return `${marker} ${number} ${name} ${email} ${status} ${reset} ${lastUsed} ${picks}`;
70
+ async function renameProfile(oldNameInput, newNameInput) {
71
+ const oldName = validateProfileName(oldNameInput);
72
+ const newName = validateProfileName(newNameInput.trim());
73
+ if (oldName === newName)
74
+ return false;
75
+ const state = await loadState();
76
+ const profile = state.profiles.find((entry) => entry.name === oldName);
77
+ if (!profile)
78
+ throw new Error(`Profile not found: ${oldName}`);
79
+ if (state.profiles.some((entry) => entry !== profile
80
+ && (entry.name === newName || entry.previousNames?.includes(newName)))) {
81
+ throw new Error(`Profile already exists: ${newName}`);
82
+ }
83
+ const credential = await keychain.readProfile(oldName);
84
+ await keychain.writeProfile(newName, credential);
85
+ const previousNames = new Set(profile.previousNames ?? []);
86
+ previousNames.delete(newName);
87
+ previousNames.add(oldName);
88
+ profile.previousNames = [...previousNames].sort();
89
+ profile.name = newName;
90
+ profile.updatedAt = new Date().toISOString();
91
+ if (state.activeProfile === oldName)
92
+ state.activeProfile = newName;
93
+ state.profiles.sort((left, right) => left.name.localeCompare(right.name));
94
+ await saveState(state);
95
+ await keychain.deleteProfile(oldName);
96
+ return true;
86
97
  }
87
- function printProfiles(profiles, activeProfile) {
88
- if (!profiles.length) {
89
- console.log("No saved profiles.");
90
- return;
98
+ async function confirmAndRemoveProfile(name) {
99
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
100
+ throw new Error("Refusing to delete without an interactive confirmation.");
91
101
  }
92
- const now = new Date();
93
- console.log(" # name email status reset last-used picks");
94
- for (const [index, profile] of profiles.entries()) {
95
- console.log(profileRow(index, profile, activeProfile, now));
102
+ const confirmed = await confirmAction(`Delete profile '${name}'?`, false);
103
+ if (!confirmed)
104
+ return false;
105
+ await removeProfile(name);
106
+ return true;
107
+ }
108
+ async function promptAndRenameProfile(name) {
109
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
110
+ throw new Error("Refusing to rename without an interactive terminal.");
96
111
  }
112
+ const nextName = (await promptText(`Rename profile '${name}' to`, name))?.trim();
113
+ if (!nextName || nextName === name)
114
+ return undefined;
115
+ const renamed = await renameProfile(name, nextName);
116
+ return renamed ? nextName : undefined;
97
117
  }
98
- async function pickProfile() {
118
+ async function browseProfiles(mode) {
99
119
  if (!process.stdin.isTTY || !process.stdout.isTTY) {
120
+ if (mode === "list") {
121
+ printProfileTable(await loadState());
122
+ return undefined;
123
+ }
100
124
  throw new Error("Usage: agyx use <name> or run 'agyx use' in an interactive terminal.");
101
125
  }
102
- const state = await loadState();
103
- if (!state.profiles.length)
104
- throw new Error("No saved profiles.");
105
- printProfiles(state.profiles, state.activeProfile);
106
- const suggested = (() => {
107
- try {
108
- return selectNextProfile(state).name;
109
- }
110
- catch {
126
+ let notice;
127
+ while (true) {
128
+ const state = await loadState();
129
+ const action = await pickProfileAction(state, mode, notice);
130
+ notice = undefined;
131
+ if (action.type === "exit")
111
132
  return undefined;
133
+ if (action.type === "select")
134
+ return action.name;
135
+ if (action.type === "delete") {
136
+ if (await confirmAndRemoveProfile(action.name)) {
137
+ notice = `Removed profile '${action.name}'.`;
138
+ }
112
139
  }
113
- })();
114
- const prompt = suggested
115
- ? `Select profile number/name [next: ${suggested}]: `
116
- : "Select profile number/name: ";
117
- const interface_ = createInterface({ input: process.stdin, output: process.stdout });
118
- try {
119
- const answer = (await interface_.question(prompt)).trim();
120
- if (!answer && suggested)
121
- return suggested;
122
- if (!answer)
123
- throw new Error("No profile selected.");
124
- const index = Number(answer);
125
- if (Number.isInteger(index) && index >= 1 && index <= state.profiles.length) {
126
- return state.profiles[index - 1].name;
140
+ else if (action.type === "rename") {
141
+ const nextName = await promptAndRenameProfile(action.name);
142
+ if (nextName) {
143
+ notice = `Renamed profile '${action.name}' to '${nextName}'.`;
144
+ }
127
145
  }
128
- const profile = state.profiles.find(({ name }) => name === answer);
129
- if (!profile)
130
- throw new Error(`Profile not found: ${answer}`);
131
- return profile.name;
132
- }
133
- finally {
134
- interface_.close();
135
146
  }
136
147
  }
137
148
  async function main() {
@@ -141,11 +152,18 @@ async function main() {
141
152
  console.log(help);
142
153
  return 0;
143
154
  }
155
+ await maybeRunOnboarding(command);
144
156
  switch (command) {
145
157
  case "install": {
146
158
  const path = await installShellIntegration();
147
- console.log(`Installed agyx shell integration in ${path}`);
148
- console.log("Open a new terminal or run: source " + path);
159
+ console.log(`Installed agy shell function in ${path}`);
160
+ console.log("This does not change the current terminal automatically.");
161
+ console.log("Open a new terminal, or run:");
162
+ console.log(` source ${path}`);
163
+ console.log("For this terminal only, you can also run:");
164
+ console.log(' eval "$(agyx shell-init)"');
165
+ console.log("Verify with:");
166
+ console.log(" type agy");
149
167
  return 0;
150
168
  }
151
169
  case "shell-init":
@@ -174,21 +192,46 @@ async function main() {
174
192
  const name = args.shift();
175
193
  if (args.length)
176
194
  throw new Error("Usage: agyx use [name]");
177
- const selected = name ?? await pickProfile();
178
- await switchProfile(selected);
179
- console.log(`Activated profile '${selected}' and resumed all sessions.`);
195
+ const selected = name ?? await browseProfiles("use");
196
+ if (!selected)
197
+ return 0;
198
+ const result = await switchProfile(selected);
199
+ printSwitchResult(result);
180
200
  return 0;
181
201
  }
182
202
  case "next": {
183
- const state = await loadState();
184
- const name = selectNextProfile(state).name;
185
- await switchProfile(name);
186
- console.log(`Activated profile '${name}' and resumed all sessions.`);
203
+ const result = await switchToNextProfile();
204
+ printSwitchResult(result);
187
205
  return 0;
188
206
  }
189
207
  case "list": {
190
- const state = await loadState();
191
- printProfiles(state.profiles, state.activeProfile);
208
+ const verify = takeFlag(args, "--verify");
209
+ if (args.length)
210
+ throw new Error("Usage: agyx list [--verify]");
211
+ const state = verify ? await verifyAllProfiles() : await loadState();
212
+ if (process.stdin.isTTY && process.stdout.isTTY) {
213
+ let notice;
214
+ while (true) {
215
+ const action = await pickProfileAction(await loadState(), "list", notice);
216
+ notice = undefined;
217
+ if (action.type === "exit")
218
+ break;
219
+ if (action.type === "delete") {
220
+ if (await confirmAndRemoveProfile(action.name)) {
221
+ notice = `Removed profile '${action.name}'.`;
222
+ }
223
+ }
224
+ else if (action.type === "rename") {
225
+ const nextName = await promptAndRenameProfile(action.name);
226
+ if (nextName) {
227
+ notice = `Renamed profile '${action.name}' to '${nextName}'.`;
228
+ }
229
+ }
230
+ }
231
+ }
232
+ else {
233
+ printProfileTable(state);
234
+ }
192
235
  return 0;
193
236
  }
194
237
  case "current":
@@ -216,18 +259,23 @@ async function main() {
216
259
  console.log(`Resumed ${records.length} supervised session(s).`);
217
260
  return 0;
218
261
  }
262
+ case "rename": {
263
+ const oldName = args.shift();
264
+ const newName = args.shift();
265
+ if (!oldName || !newName || args.length) {
266
+ throw new Error("Usage: agyx rename <old> <new>");
267
+ }
268
+ const renamed = await renameProfile(oldName, newName);
269
+ console.log(renamed
270
+ ? `Renamed profile '${oldName}' to '${newName}'.`
271
+ : `Profile '${oldName}' is already named '${newName}'.`);
272
+ return 0;
273
+ }
219
274
  case "remove": {
220
275
  const name = args.shift();
221
276
  if (!name || args.length)
222
277
  throw new Error("Usage: agyx remove <name>");
223
- validateProfileName(name);
224
- await keychain.deleteProfile(name);
225
- const state = await loadState();
226
- state.profiles = state.profiles.filter((profile) => profile.name !== name);
227
- if (state.activeProfile === name)
228
- state.activeProfile = undefined;
229
- await saveState(state);
230
- console.log(`Removed profile '${name}'.`);
278
+ await confirmAndRemoveProfile(name);
231
279
  return 0;
232
280
  }
233
281
  case "doctor": {
@@ -235,6 +283,9 @@ async function main() {
235
283
  const sessions = await sessionRecords();
236
284
  console.log(`agy: ${await findRealAgy()}`);
237
285
  console.log(`platform: ${process.platform}`);
286
+ console.log(`shell integration file: ${shellIntegrationPath()}`);
287
+ console.log(`shell integration installed: ${await shellIntegrationInstalled() ? "yes" : "no"}`);
288
+ console.log("current shell check: run `type agy` in your terminal; it should report a shell function");
238
289
  console.log(`profiles: ${state.profiles.length}`);
239
290
  console.log(`active profile: ${state.activeProfile ?? "unmanaged"}`);
240
291
  console.log(`supervised sessions: ${sessions.length}`);
@@ -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":";AACA,OAAO,EACL,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1F,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;2EAoB8D,CAAC;AAE5E,SAAS,iBAAiB,CAAC,MAAiE;IAC1F,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CACT,YAAY,MAAM,CAAC,IAAI,sBAAsB;cAC3C,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAC7C,CAAC;QACF,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CACT,sBAAsB,MAAM,CAAC,IAAI,GAAG;UAClC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;UAC1C,4BAA4B,CAC/B,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAc,EAAE,IAAY;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,mBAAmB,CAAC,CAAC;IAClE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,QAAQ,CAAC,IAAc,EAAE,IAAY;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAc,EAAE,KAAa;IACrD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAY;IACvC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC3E,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI;QAAE,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;IAClE,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,YAAoB,EAAE,YAAoB;IACrE,MAAM,OAAO,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,mBAAmB,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IACzD,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAEtC,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IACvE,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;IAC/D,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAChC,KAAK,KAAK,OAAO;WACd,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CACtE,EAAE,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IAC3D,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,CAAC,aAAa,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;IACvB,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,IAAI,KAAK,CAAC,aAAa,KAAK,OAAO;QAAE,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC;IACnE,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,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IACvB,MAAM,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,IAAY;IACjD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,mBAAmB,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1E,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,IAAY;IAChD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,MAAM,UAAU,CAAC,mBAAmB,IAAI,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACjF,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACrD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpD,OAAO,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAoB;IAChD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,iBAAiB,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC;YACrC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IAED,IAAI,MAA0B,CAAC;IAC/B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,GAAG,SAAS,CAAC;QACnB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,SAAS,CAAC;QAC7C,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC;QACjD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,MAAM,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,MAAM,GAAG,oBAAoB,MAAM,CAAC,IAAI,IAAI,CAAC;YAC/C,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3D,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,GAAG,oBAAoB,MAAM,CAAC,IAAI,SAAS,QAAQ,IAAI,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAElC,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,IAAI,GAAG,MAAM,uBAAuB,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,YAAY;YACf,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;YACzB,OAAO,CAAC,CAAC;QACX,KAAK,SAAS;YACZ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;gBAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YACnC,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,kCAAkC,CAAC,CAAC;YACxE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CACT,gCAAgC,MAAM,CAAC,IAAI,IAAI;kBAC7C,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAC7C,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,iDAAiD,CAAC,CAAC;YACvF,MAAM,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC3C,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC3D,MAAM,QAAQ,GAAG,IAAI,IAAI,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC7C,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1B,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;YAC3C,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1B,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAChE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC;YACrE,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChD,IAAI,MAA0B,CAAC;gBAC/B,OAAO,IAAI,EAAE,CAAC;oBACZ,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;oBAC1E,MAAM,GAAG,SAAS,CAAC;oBACnB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;wBAAE,MAAM;oBAClC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC7B,IAAI,MAAM,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC/C,MAAM,GAAG,oBAAoB,MAAM,CAAC,IAAI,IAAI,CAAC;wBAC/C,CAAC;oBACH,CAAC;yBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACpC,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC3D,IAAI,QAAQ,EAAE,CAAC;4BACb,MAAM,GAAG,oBAAoB,MAAM,CAAC,IAAI,SAAS,QAAQ,IAAI,CAAC;wBAChE,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,SAAS;YACZ,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,aAAa,IAAI,WAAW,CAAC,CAAC;YAC9D,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,MAAM,cAAc,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,MAAM;gBAAE,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAChE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CACT,GAAG,MAAM,CAAC,EAAE,SAAS,MAAM,CAAC,GAAG,UAAU,MAAM,CAAC,QAAQ,IAAI,GAAG,EAAE;sBAC/D,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,SAAS,MAAM,CAAC,GAAG,EAAE;sBAC9D,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC3E,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,OAAO,GAAG,MAAM,QAAQ,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,MAAM,yBAAyB,CAAC,CAAC;YAC/D,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,MAAM,cAAc,EAAE,CAAC;YACvC,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,MAAM,yBAAyB,CAAC,CAAC;YAChE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACpD,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,OAAO;gBACjB,CAAC,CAAC,oBAAoB,OAAO,SAAS,OAAO,IAAI;gBACjD,CAAC,CAAC,YAAY,OAAO,uBAAuB,OAAO,IAAI,CAAC,CAAC;YAC3D,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YACvE,MAAM,uBAAuB,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAM,WAAW,EAAE,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,2BAA2B,oBAAoB,EAAE,EAAE,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,gCAAgC,MAAM,yBAAyB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAChG,OAAO,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC;YACvG,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,aAAa,IAAI,WAAW,EAAE,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,wBAAwB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,WAAW;YACd,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,CAAC;QACX;YACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,OAAO,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,IAAI,EAAE;KACH,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;KAC5C,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACf,OAAO,CAAC,KAAK,CAAC,SAAU,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare const color: {
2
+ dim: (value: string) => string;
3
+ red: (value: string) => string;
4
+ green: (value: string) => string;
5
+ yellow: (value: string) => string;
6
+ cyan: (value: string) => string;
7
+ gray: (value: string) => string;
8
+ inverse: (value: string) => string;
9
+ };
@@ -0,0 +1,28 @@
1
+ const codes = {
2
+ reset: "\u001b[0m",
3
+ dim: "\u001b[2m",
4
+ red: "\u001b[31m",
5
+ green: "\u001b[32m",
6
+ yellow: "\u001b[33m",
7
+ cyan: "\u001b[36m",
8
+ gray: "\u001b[90m",
9
+ inverse: "\u001b[7m",
10
+ };
11
+ function enabled() {
12
+ return process.env.AGYX_NO_COLOR === undefined
13
+ && process.env.TERM !== "dumb"
14
+ && process.stdout.isTTY;
15
+ }
16
+ function wrap(code, value) {
17
+ return enabled() ? `${code}${value}${codes.reset}` : value;
18
+ }
19
+ export const color = {
20
+ dim: (value) => wrap(codes.dim, value),
21
+ red: (value) => wrap(codes.red, value),
22
+ green: (value) => wrap(codes.green, value),
23
+ yellow: (value) => wrap(codes.yellow, value),
24
+ cyan: (value) => wrap(codes.cyan, value),
25
+ gray: (value) => wrap(codes.gray, value),
26
+ inverse: (value) => wrap(codes.inverse, value),
27
+ };
28
+ //# sourceMappingURL=color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.js","sourceRoot":"","sources":["../../src/color.ts"],"names":[],"mappings":"AAAA,MAAM,KAAK,GAAG;IACZ,KAAK,EAAE,WAAW;IAClB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,WAAW;CACZ,CAAC;AAEX,SAAS,OAAO;IACd,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,SAAS;WACzC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM;WAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AAC5B,CAAC;AAED,SAAS,IAAI,CAAC,IAAY,EAAE,KAAa;IACvC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,GAAG,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;IAC9C,GAAG,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;IAC9C,KAAK,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC;IAClD,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;IACpD,IAAI,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;IAChD,IAAI,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;IAChD,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;CACvD,CAAC"}
@@ -1,15 +1,25 @@
1
1
  export interface ProfileRecord {
2
2
  name: string;
3
+ previousNames?: string[];
3
4
  email?: string;
4
5
  createdAt: string;
5
6
  updatedAt: string;
6
7
  authenticatedAt?: string;
7
8
  lastActivatedAt?: string;
9
+ lastRequestAt?: string;
8
10
  lastSuccessfulRequestAt?: string;
9
11
  lastQuotaErrorAt?: string;
10
12
  quotaResetAt?: string;
11
13
  quotaStatus?: "unknown" | "available" | "exhausted";
12
14
  lastQuotaReason?: string;
15
+ credentialStatus?: "unknown" | "verified" | "mismatch" | "error";
16
+ verifiedEmail?: string;
17
+ credentialVerifiedAt?: string;
18
+ credentialMismatchAt?: string;
19
+ credentialError?: string;
20
+ eligibilityStatus?: "unknown" | "eligible" | "ineligible";
21
+ lastEligibilityErrorAt?: string;
22
+ eligibilityReason?: string;
13
23
  selectionCount?: number;
14
24
  disabled?: boolean;
15
25
  priority?: number;
@@ -18,29 +28,43 @@ export interface State {
18
28
  version: 1;
19
29
  activeProfile?: string;
20
30
  realAgyPath?: string;
31
+ onboarding?: {
32
+ shellIntegrationPromptedAt?: string;
33
+ shellIntegrationInstalledAt?: string;
34
+ githubStarPromptedAt?: string;
35
+ githubStarredAt?: string;
36
+ };
21
37
  profiles: ProfileRecord[];
22
38
  }
23
39
  export declare const configDir: string;
24
40
  export declare const runtimeDir: string;
25
41
  export declare const logDir: string;
26
42
  export declare const statePath: string;
27
- export declare const googleAccountsPath: string;
28
43
  export declare function ensureDirectories(): Promise<void>;
29
44
  export declare function loadState(): Promise<State>;
30
45
  export declare function saveState(state: State): Promise<void>;
31
- export declare function upsertProfile(name: string, email: string | undefined, makeActive: boolean): Promise<void>;
32
- export declare function markProfileActivated(state: State, name: string, now?: Date): void;
46
+ export declare function upsertProfile(name: string, email: string | undefined, makeActive: boolean, countActivation?: boolean): Promise<void>;
47
+ export declare function markProfileActivated(state: State, name: string, now?: Date, incrementSelection?: boolean): void;
48
+ export declare function markProfileRequest(state: State, name: string, now?: Date): void;
33
49
  export declare function markProfileQuotaExhausted(state: State, name: string, event: {
34
50
  reason: string;
35
51
  resetAt?: string;
36
52
  }, now?: Date): void;
53
+ export declare function markProfileCredentialVerified(state: State, name: string, actualEmail: string, now?: Date): void;
54
+ export declare function markProfileCredentialMismatch(state: State, name: string, actualEmail: string | undefined, expectedEmail: string | undefined, now?: Date): void;
55
+ export declare function markProfileIneligible(state: State, name: string, event: {
56
+ reason: string;
57
+ }, now?: Date): void;
37
58
  export declare function recordProfileQuotaExhausted(name: string, event: {
38
59
  reason: string;
39
60
  resetAt?: string;
40
61
  }): Promise<void>;
62
+ export declare function recordProfileRequest(name: string, now?: Date): Promise<void>;
63
+ export declare function recordProfileIneligible(name: string, event: {
64
+ reason: string;
65
+ }): Promise<void>;
41
66
  export declare function cleanupRuntimeFile(path: string): Promise<void>;
42
67
  export declare function validateProfileName(name: string): string;
43
68
  export declare function profileNameFromEmail(email: string): string;
44
69
  export declare function uniqueProfileName(baseName: string, state: State): string;
45
- export declare function readActiveGoogleAccountEmail(): Promise<string | undefined>;
46
70
  export declare function ensureParent(path: string): Promise<void>;