agyx 0.1.1 → 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 +45 -10
- package/dist/src/cli.js +170 -114
- 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 +30 -2
- package/dist/src/config.js +109 -6
- package/dist/src/config.js.map +1 -1
- package/dist/src/coordinator.d.ts +18 -4
- package/dist/src/coordinator.js +286 -13
- 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/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
|
|
@@ -43,13 +67,20 @@ prevents duplicate requests.
|
|
|
43
67
|
Save the account currently stored by `agy`:
|
|
44
68
|
|
|
45
69
|
```bash
|
|
46
|
-
agyx save
|
|
70
|
+
agyx save
|
|
71
|
+
agyx save personal
|
|
47
72
|
```
|
|
48
73
|
|
|
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.
|
|
78
|
+
|
|
49
79
|
Add another account:
|
|
50
80
|
|
|
51
81
|
```bash
|
|
52
82
|
agyx login work
|
|
83
|
+
agyx login
|
|
53
84
|
```
|
|
54
85
|
|
|
55
86
|
`agyx login` performs this transaction:
|
|
@@ -60,6 +91,9 @@ agyx login work
|
|
|
60
91
|
4. Save and activate the new credential.
|
|
61
92
|
5. Restart every supervised session in its original terminal.
|
|
62
93
|
|
|
94
|
+
When the name is omitted, `agyx login` derives it from the OAuth email detected
|
|
95
|
+
in the `agy` log.
|
|
96
|
+
|
|
63
97
|
Use `--no-resume` to leave sessions paused after login.
|
|
64
98
|
|
|
65
99
|
## Switching
|
|
@@ -72,13 +106,14 @@ agyx next
|
|
|
72
106
|
agyx status
|
|
73
107
|
```
|
|
74
108
|
|
|
75
|
-
`agyx use` without a profile opens an interactive picker.
|
|
76
|
-
|
|
109
|
+
`agyx use` without a profile opens an interactive picker. `agyx list` renders a
|
|
110
|
+
terminal table. Both show profile metadata:
|
|
77
111
|
|
|
78
112
|
- `status`: `ready`, `quota`, `disabled`, or `unknown`
|
|
79
|
-
- `reset`: relative quota reset time when it can be inferred from logs
|
|
80
|
-
- `last-
|
|
81
|
-
- `
|
|
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
|
|
82
117
|
|
|
83
118
|
`agyx next` uses name-sorted round-robin order, starting after the currently
|
|
84
119
|
active profile. It skips profiles marked `disabled` or currently quota
|
|
@@ -99,10 +134,10 @@ signals such as `RESOURCE_EXHAUSTED`, HTTP `429`, and `Individual quota
|
|
|
99
134
|
reached`. When a reset hint such as `Resets in 73h16m27s` is present, agyx stores
|
|
100
135
|
the inferred reset time in profile metadata.
|
|
101
136
|
|
|
102
|
-
This release records quota state and makes `agyx next` avoid
|
|
103
|
-
It does not yet perform an automatic global account switch
|
|
104
|
-
session; use `agyx next` after a quota message so the
|
|
105
|
-
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.
|
|
106
141
|
|
|
107
142
|
## Security
|
|
108
143
|
|
package/dist/src/cli.js
CHANGED
|
@@ -1,31 +1,43 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
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
|
|
13
|
+
agyx install Install agy shell function
|
|
14
14
|
agyx session -- [agy options] Run agy under a restartable supervisor
|
|
15
|
-
agyx save
|
|
16
|
-
agyx login
|
|
15
|
+
agyx save [name] [--email EMAIL] Save the current Keychain account
|
|
16
|
+
agyx login [name] [--email EMAIL] [--no-resume]
|
|
17
|
+
Pause all sessions and add an account
|
|
17
18
|
agyx use [name] Switch account and resume every session
|
|
18
19
|
agyx next Rotate to the next selectable account
|
|
19
|
-
agyx list
|
|
20
|
+
agyx list [--verify] List profiles; optionally verify saved credentials
|
|
20
21
|
agyx current Print the active profile
|
|
21
22
|
agyx status List supervised terminal sessions
|
|
22
23
|
agyx pause | resume Pause or resume all supervised sessions
|
|
24
|
+
agyx rename <old> <new> Rename a saved profile
|
|
23
25
|
agyx remove <name> Delete a saved profile
|
|
24
26
|
agyx shell-init Print the shell integration function
|
|
25
27
|
agyx doctor Diagnose the installation
|
|
26
28
|
|
|
27
29
|
All arguments passed through "agy" are forwarded to the real agy executable.
|
|
28
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
|
+
}
|
|
29
41
|
function takeOption(args, name) {
|
|
30
42
|
const index = args.indexOf(name);
|
|
31
43
|
if (index < 0)
|
|
@@ -34,91 +46,103 @@ function takeOption(args, name) {
|
|
|
34
46
|
throw new Error(`${name} requires a value`);
|
|
35
47
|
return args.splice(index, 2)[1];
|
|
36
48
|
}
|
|
37
|
-
function
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const delta = timestamp - now.getTime();
|
|
44
|
-
const absolute = Math.abs(delta);
|
|
45
|
-
const units = [
|
|
46
|
-
[24 * 60 * 60 * 1000, "d"],
|
|
47
|
-
[60 * 60 * 1000, "h"],
|
|
48
|
-
[60 * 1000, "m"],
|
|
49
|
-
[1000, "s"],
|
|
50
|
-
];
|
|
51
|
-
const [unitMs, suffix] = units.find(([ms]) => absolute >= ms) ?? units.at(-1);
|
|
52
|
-
const amount = Math.max(1, Math.round(absolute / unitMs));
|
|
53
|
-
return delta >= 0 ? `in ${amount}${suffix}` : `${amount}${suffix} ago`;
|
|
49
|
+
function takeFlag(args, name) {
|
|
50
|
+
const index = args.indexOf(name);
|
|
51
|
+
if (index < 0)
|
|
52
|
+
return false;
|
|
53
|
+
args.splice(index, 1);
|
|
54
|
+
return true;
|
|
54
55
|
}
|
|
55
|
-
function
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
if (status === "exhausted")
|
|
60
|
-
return "quota";
|
|
61
|
-
return profile.quotaStatus === "available" ? "ready" : "unknown";
|
|
56
|
+
function takeOptionalName(args, usage) {
|
|
57
|
+
if (args.length > 1)
|
|
58
|
+
throw new Error(`Usage: ${usage}`);
|
|
59
|
+
return args.shift();
|
|
62
60
|
}
|
|
63
|
-
function
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
const picks = String(profile.selectionCount ?? 0).padStart(5);
|
|
72
|
-
return `${marker} ${number} ${name} ${email} ${status} ${reset} ${lastUsed} ${picks}`;
|
|
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);
|
|
73
69
|
}
|
|
74
|
-
function
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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}`);
|
|
78
82
|
}
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
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;
|
|
97
|
+
}
|
|
98
|
+
async function confirmAndRemoveProfile(name) {
|
|
99
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
100
|
+
throw new Error("Refusing to delete without an interactive confirmation.");
|
|
83
101
|
}
|
|
102
|
+
const confirmed = await confirmAction(`Delete profile '${name}'?`, false);
|
|
103
|
+
if (!confirmed)
|
|
104
|
+
return false;
|
|
105
|
+
await removeProfile(name);
|
|
106
|
+
return true;
|
|
84
107
|
}
|
|
85
|
-
async function
|
|
108
|
+
async function promptAndRenameProfile(name) {
|
|
86
109
|
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
87
|
-
throw new Error("
|
|
110
|
+
throw new Error("Refusing to rename without an interactive terminal.");
|
|
88
111
|
}
|
|
89
|
-
const
|
|
90
|
-
if (!
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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;
|
|
117
|
+
}
|
|
118
|
+
async function browseProfiles(mode) {
|
|
119
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
120
|
+
if (mode === "list") {
|
|
121
|
+
printProfileTable(await loadState());
|
|
122
|
+
return undefined;
|
|
96
123
|
}
|
|
97
|
-
|
|
124
|
+
throw new Error("Usage: agyx use <name> or run 'agyx use' in an interactive terminal.");
|
|
125
|
+
}
|
|
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")
|
|
98
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
|
+
}
|
|
99
139
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
try {
|
|
106
|
-
const answer = (await interface_.question(prompt)).trim();
|
|
107
|
-
if (!answer && suggested)
|
|
108
|
-
return suggested;
|
|
109
|
-
if (!answer)
|
|
110
|
-
throw new Error("No profile selected.");
|
|
111
|
-
const index = Number(answer);
|
|
112
|
-
if (Number.isInteger(index) && index >= 1 && index <= state.profiles.length) {
|
|
113
|
-
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
|
+
}
|
|
114
145
|
}
|
|
115
|
-
const profile = state.profiles.find(({ name }) => name === answer);
|
|
116
|
-
if (!profile)
|
|
117
|
-
throw new Error(`Profile not found: ${answer}`);
|
|
118
|
-
return profile.name;
|
|
119
|
-
}
|
|
120
|
-
finally {
|
|
121
|
-
interface_.close();
|
|
122
146
|
}
|
|
123
147
|
}
|
|
124
148
|
async function main() {
|
|
@@ -128,11 +152,18 @@ async function main() {
|
|
|
128
152
|
console.log(help);
|
|
129
153
|
return 0;
|
|
130
154
|
}
|
|
155
|
+
await maybeRunOnboarding(command);
|
|
131
156
|
switch (command) {
|
|
132
157
|
case "install": {
|
|
133
158
|
const path = await installShellIntegration();
|
|
134
|
-
console.log(`Installed
|
|
135
|
-
console.log("
|
|
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");
|
|
136
167
|
return 0;
|
|
137
168
|
}
|
|
138
169
|
case "shell-init":
|
|
@@ -143,25 +174,17 @@ async function main() {
|
|
|
143
174
|
args.shift();
|
|
144
175
|
return await supervise(args);
|
|
145
176
|
case "save": {
|
|
146
|
-
const name = args.shift();
|
|
147
|
-
if (!name)
|
|
148
|
-
throw new Error("Usage: agyx save <name> [--email EMAIL]");
|
|
149
177
|
const email = takeOption(args, "--email");
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
178
|
+
const name = takeOptionalName(args, "agyx save [name] [--email EMAIL]");
|
|
179
|
+
const result = await saveCurrent(name, email);
|
|
180
|
+
console.log(`Saved and activated profile '${result.name}'.`
|
|
181
|
+
+ (result.email ? ` (${result.email})` : ""));
|
|
154
182
|
return 0;
|
|
155
183
|
}
|
|
156
184
|
case "login": {
|
|
157
|
-
const name = args.shift();
|
|
158
|
-
if (!name)
|
|
159
|
-
throw new Error("Usage: agyx login <name> [--email EMAIL] [--no-resume]");
|
|
160
185
|
const email = takeOption(args, "--email");
|
|
161
|
-
const noResume = args
|
|
162
|
-
|
|
163
|
-
if (args.length)
|
|
164
|
-
throw new Error(`Unknown arguments: ${args.join(" ")}`);
|
|
186
|
+
const noResume = takeFlag(args, "--no-resume");
|
|
187
|
+
const name = takeOptionalName(args, "agyx login [name] [--email EMAIL] [--no-resume]");
|
|
165
188
|
await loginProfile(name, email, !noResume);
|
|
166
189
|
return 0;
|
|
167
190
|
}
|
|
@@ -169,21 +192,46 @@ async function main() {
|
|
|
169
192
|
const name = args.shift();
|
|
170
193
|
if (args.length)
|
|
171
194
|
throw new Error("Usage: agyx use [name]");
|
|
172
|
-
const selected = name ?? await
|
|
173
|
-
|
|
174
|
-
|
|
195
|
+
const selected = name ?? await browseProfiles("use");
|
|
196
|
+
if (!selected)
|
|
197
|
+
return 0;
|
|
198
|
+
const result = await switchProfile(selected);
|
|
199
|
+
printSwitchResult(result);
|
|
175
200
|
return 0;
|
|
176
201
|
}
|
|
177
202
|
case "next": {
|
|
178
|
-
const
|
|
179
|
-
|
|
180
|
-
await switchProfile(name);
|
|
181
|
-
console.log(`Activated profile '${name}' and resumed all sessions.`);
|
|
203
|
+
const result = await switchToNextProfile();
|
|
204
|
+
printSwitchResult(result);
|
|
182
205
|
return 0;
|
|
183
206
|
}
|
|
184
207
|
case "list": {
|
|
185
|
-
const
|
|
186
|
-
|
|
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
|
+
}
|
|
187
235
|
return 0;
|
|
188
236
|
}
|
|
189
237
|
case "current":
|
|
@@ -211,18 +259,23 @@ async function main() {
|
|
|
211
259
|
console.log(`Resumed ${records.length} supervised session(s).`);
|
|
212
260
|
return 0;
|
|
213
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
|
+
}
|
|
214
274
|
case "remove": {
|
|
215
275
|
const name = args.shift();
|
|
216
276
|
if (!name || args.length)
|
|
217
277
|
throw new Error("Usage: agyx remove <name>");
|
|
218
|
-
|
|
219
|
-
await keychain.deleteProfile(name);
|
|
220
|
-
const state = await loadState();
|
|
221
|
-
state.profiles = state.profiles.filter((profile) => profile.name !== name);
|
|
222
|
-
if (state.activeProfile === name)
|
|
223
|
-
state.activeProfile = undefined;
|
|
224
|
-
await saveState(state);
|
|
225
|
-
console.log(`Removed profile '${name}'.`);
|
|
278
|
+
await confirmAndRemoveProfile(name);
|
|
226
279
|
return 0;
|
|
227
280
|
}
|
|
228
281
|
case "doctor": {
|
|
@@ -230,6 +283,9 @@ async function main() {
|
|
|
230
283
|
const sessions = await sessionRecords();
|
|
231
284
|
console.log(`agy: ${await findRealAgy()}`);
|
|
232
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");
|
|
233
289
|
console.log(`profiles: ${state.profiles.length}`);
|
|
234
290
|
console.log(`active profile: ${state.activeProfile ?? "unmanaged"}`);
|
|
235
291
|
console.log(`supervised sessions: ${sessions.length}`);
|
package/dist/src/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,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"}
|
package/dist/src/config.d.ts
CHANGED
|
@@ -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,6 +28,12 @@ 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;
|
|
@@ -27,16 +43,28 @@ export declare const statePath: string;
|
|
|
27
43
|
export declare function ensureDirectories(): Promise<void>;
|
|
28
44
|
export declare function loadState(): Promise<State>;
|
|
29
45
|
export declare function saveState(state: State): Promise<void>;
|
|
30
|
-
export declare function upsertProfile(name: string, email: string | undefined, makeActive: boolean): Promise<void>;
|
|
31
|
-
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;
|
|
32
49
|
export declare function markProfileQuotaExhausted(state: State, name: string, event: {
|
|
33
50
|
reason: string;
|
|
34
51
|
resetAt?: string;
|
|
35
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;
|
|
36
58
|
export declare function recordProfileQuotaExhausted(name: string, event: {
|
|
37
59
|
reason: string;
|
|
38
60
|
resetAt?: string;
|
|
39
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>;
|
|
40
66
|
export declare function cleanupRuntimeFile(path: string): Promise<void>;
|
|
41
67
|
export declare function validateProfileName(name: string): string;
|
|
68
|
+
export declare function profileNameFromEmail(email: string): string;
|
|
69
|
+
export declare function uniqueProfileName(baseName: string, state: State): string;
|
|
42
70
|
export declare function ensureParent(path: string): Promise<void>;
|