@openagt/skill-github 0.1.10 → 0.1.11
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/dist/accounts.d.ts +69 -27
- package/dist/accounts.d.ts.map +1 -1
- package/dist/accounts.js +181 -70
- package/dist/accounts.js.map +1 -1
- package/dist/cli.d.ts +10 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +127 -57
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/profile.d.ts +27 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +29 -0
- package/dist/profile.js.map +1 -0
- package/dist/repos.d.ts +19 -0
- package/dist/repos.d.ts.map +1 -0
- package/dist/repos.js +28 -0
- package/dist/repos.js.map +1 -0
- package/package.json +4 -4
- package/dist/me.d.ts +0 -17
- package/dist/me.d.ts.map +0 -1
- package/dist/me.js +0 -18
- package/dist/me.js.map +0 -1
package/dist/accounts.d.ts
CHANGED
|
@@ -1,40 +1,71 @@
|
|
|
1
1
|
import { type GhRunner } from './gh.js';
|
|
2
2
|
/**
|
|
3
|
-
* The GitHub accounts
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
3
|
+
* The GitHub accounts OpenAgent has, and the one its runs use. They are OpenAgent's own, never the
|
|
4
|
+
* person's: each account is a folder of its own, the folder `gh` keeps that account's login in
|
|
5
|
+
* (`GH_CONFIG_DIR`), so nothing OpenAgent does reads or changes the person's own `gh`, git or
|
|
6
|
+
* keychain. An account is added by logging it in here, in the browser, or by handing its token
|
|
7
|
+
* over (a server of the person's gets theirs that way).
|
|
7
8
|
*
|
|
8
|
-
* The pick is kept in a file of its own, logins only
|
|
9
|
-
* is asked of it when the run starts (`gh auth token --user`).
|
|
9
|
+
* The runs' pick is kept in a file of its own, logins only.
|
|
10
10
|
*/
|
|
11
11
|
/** The host this package answers for. */
|
|
12
12
|
export declare const HOST = "github.com";
|
|
13
|
-
/** An account
|
|
13
|
+
/** An account OpenAgent has on the host. */
|
|
14
14
|
export interface GhAccount {
|
|
15
15
|
login: string;
|
|
16
|
-
/**
|
|
17
|
-
terminal: boolean;
|
|
18
|
-
/** Whether `gh` could use it when asked: false for a login GitHub no longer takes. */
|
|
16
|
+
/** Whether GitHub still takes its login: false for one that was revoked or expired. */
|
|
19
17
|
ok: boolean;
|
|
20
18
|
}
|
|
21
|
-
/**
|
|
19
|
+
/** Whether `gh` is on this computer at all, and OpenAgent's accounts. */
|
|
22
20
|
export type GhState = {
|
|
23
21
|
installed: false;
|
|
24
22
|
} | {
|
|
25
23
|
installed: true;
|
|
26
24
|
accounts: GhAccount[];
|
|
27
25
|
};
|
|
26
|
+
/** What OpenAgent keeps of an account beside its login: what its commits are signed with. */
|
|
27
|
+
export interface AccountFacts {
|
|
28
|
+
login: string;
|
|
29
|
+
id: number;
|
|
30
|
+
name?: string;
|
|
31
|
+
}
|
|
32
|
+
/** Where OpenAgent's accounts are: one folder each, beside OpenAgent's other files in the person's config folder. */
|
|
33
|
+
export declare function accountsRoot(env?: NodeJS.ProcessEnv): string;
|
|
34
|
+
/** The folder of one account: what `gh` is given as `GH_CONFIG_DIR` to work as it. */
|
|
35
|
+
export declare function accountDir(root: string, login: string): string;
|
|
36
|
+
/** Whether `dir` is one of OpenAgent's account folders: a run is given one, and works as it. */
|
|
37
|
+
export declare function isAccountDir(root: string, dir: string): boolean;
|
|
38
|
+
/** `gh` working as the account in `dir`: its folder, never the person's, and no token from the environment unless given. */
|
|
39
|
+
export declare function asAccount(gh: GhRunner, dir: string): GhRunner;
|
|
40
|
+
/** The logins OpenAgent has, by name. */
|
|
41
|
+
export declare function accountLogins(root: string): string[];
|
|
42
|
+
export declare function readFacts(dir: string): AccountFacts | undefined;
|
|
43
|
+
/** Who GitHub says the account `gh` works as is: its login, id and name. */
|
|
44
|
+
export declare function whoAmI(gh: GhRunner, cwd: string): Promise<AccountFacts>;
|
|
45
|
+
/**
|
|
46
|
+
* A browser login that GitHub said yes to becomes an account: its folder is named by its login,
|
|
47
|
+
* an account of that name before it replaced. Nothing while the login is still waiting, or when
|
|
48
|
+
* none was started. Answers the login added.
|
|
49
|
+
*/
|
|
50
|
+
export declare function settleAdded(root: string, gh: GhRunner, cwd: string, files?: JobFiles): Promise<string | undefined>;
|
|
28
51
|
/** Where the runs' pick is kept: beside OpenAgent's other files in the person's config folder. */
|
|
29
52
|
export declare function picksPath(env?: NodeJS.ProcessEnv): string;
|
|
30
|
-
/** What `gh` knows of the host. A `gh` that is not on this computer is "not installed"; one that cannot say is no account. */
|
|
31
|
-
export declare function ghState(cwd: string, gh: GhRunner): Promise<GhState>;
|
|
32
53
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
54
|
+
* Whether `gh` is on this computer, and OpenAgent's accounts with whether GitHub still takes each.
|
|
55
|
+
* A `gh` that is not on this computer is "not installed".
|
|
35
56
|
*/
|
|
57
|
+
export declare function ghState(root: string, cwd: string, gh: GhRunner): Promise<GhState>;
|
|
58
|
+
/** The account runs use: the one picked, while OpenAgent still has it; else the first, kept as the pick from now on. */
|
|
36
59
|
export declare function runsAccount(accounts: readonly GhAccount[], path?: string): string | undefined;
|
|
37
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* The account runs use and its folder, read off the files alone, asking GitHub nothing: for
|
|
62
|
+
* OpenAgent's own copy of its login to a server. None when OpenAgent has no account.
|
|
63
|
+
*/
|
|
64
|
+
export declare function runsAccountDir(env?: NodeJS.ProcessEnv): {
|
|
65
|
+
login: string;
|
|
66
|
+
dir: string;
|
|
67
|
+
} | undefined;
|
|
68
|
+
/** Runs use `login` from now on: an account OpenAgent has. */
|
|
38
69
|
export declare function useForRuns(login: string, accounts: readonly GhAccount[], path?: string): void;
|
|
39
70
|
/**
|
|
40
71
|
* How `gh` is put on this computer with no admin: with Homebrew where it is, else GitHub's own
|
|
@@ -77,19 +108,30 @@ export interface LoggingIn {
|
|
|
77
108
|
/** The login under way, while its `gh` is still waiting for the browser's yes. */
|
|
78
109
|
export declare function loginUnderWay(files?: JobFiles): LoggingIn | undefined;
|
|
79
110
|
/**
|
|
80
|
-
* Log an account in
|
|
81
|
-
* github.com/login/device, wherever they are.
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
* the yes.
|
|
111
|
+
* Log an account in, in the browser: GitHub's device login, whose code the person types at
|
|
112
|
+
* github.com/login/device, wherever they are. The login goes into a folder of its own, its token
|
|
113
|
+
* kept there and not in the keychain the person's `gh` uses, so the person's own logins stay as
|
|
114
|
+
* they are. Answers once `gh` showed the code; `gh` waits on, in a process of its own, for the
|
|
115
|
+
* yes; {@link settleAdded} then names the folder by the account.
|
|
86
116
|
*/
|
|
87
|
-
export declare function startLogin(
|
|
117
|
+
export declare function startLogin(root: string, files?: JobFiles, waitMs?: number): Promise<LoggingIn>;
|
|
118
|
+
/** Keep a login handed over as a token as one of OpenAgent's accounts: its folder, its facts. */
|
|
119
|
+
export declare function takeToken(root: string, token: string, facts: AccountFacts, gh: GhRunner, cwd: string): Promise<void>;
|
|
120
|
+
/** OpenAgent forgets an account: its folder goes, and a runs' pick that named it. The token is not ended. */
|
|
121
|
+
export declare function forgetAccount(root: string, login: string, path?: string): void;
|
|
88
122
|
/**
|
|
89
|
-
* The environment
|
|
123
|
+
* The environment to work as an account: its folder for `gh`, its token for `gh` and for git's
|
|
90
124
|
* pushes and fetches to GitHub, whatever the person's own git keeps for it (the keychain, a
|
|
91
|
-
* different helper, an ssh key). Set through git's environment, so
|
|
92
|
-
* settings changes. The settings already in the environment are kept.
|
|
125
|
+
* different helper, an ssh key), and its name on the commits. Set through git's environment, so
|
|
126
|
+
* nothing of the person's own settings changes. The settings already in the environment are kept.
|
|
127
|
+
*/
|
|
128
|
+
/**
|
|
129
|
+
* The git settings that make git use the account in `dir` at GitHub, with no secret in them: an
|
|
130
|
+
* empty helper drops every helper set before it (the person's keychain among them), then gh,
|
|
131
|
+
* working in the account's folder only, answers git's ask for the login; a remote written for
|
|
132
|
+
* ssh goes over https, where that login is the one asked. What a repository OpenAgent sends as
|
|
133
|
+
* an account keeps in its own config.
|
|
93
134
|
*/
|
|
94
|
-
export declare function
|
|
135
|
+
export declare function gitConfig(dir: string): [string, string][];
|
|
136
|
+
export declare function runEnv(token: string, dir: string, facts: AccountFacts | undefined, env?: NodeJS.ProcessEnv): Record<string, string>;
|
|
95
137
|
//# sourceMappingURL=accounts.d.ts.map
|
package/dist/accounts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAA;AAErD;;;;;;;;GAQG;AAEH,yCAAyC;AACzC,eAAO,MAAM,IAAI,eAAe,CAAA;AAEhC,
|
|
1
|
+
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"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"}
|
package/dist/accounts.js
CHANGED
|
@@ -1,19 +1,104 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
-
import { chmodSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { chmodSync, existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
|
|
3
3
|
import { homedir, tmpdir } from 'node:os';
|
|
4
|
-
import { dirname, join } from 'node:path';
|
|
4
|
+
import { dirname, join, relative, isAbsolute } from 'node:path';
|
|
5
5
|
import { errorMessage } from './gh.js';
|
|
6
6
|
/**
|
|
7
|
-
* The GitHub accounts
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* The GitHub accounts OpenAgent has, and the one its runs use. They are OpenAgent's own, never the
|
|
8
|
+
* person's: each account is a folder of its own, the folder `gh` keeps that account's login in
|
|
9
|
+
* (`GH_CONFIG_DIR`), so nothing OpenAgent does reads or changes the person's own `gh`, git or
|
|
10
|
+
* keychain. An account is added by logging it in here, in the browser, or by handing its token
|
|
11
|
+
* over (a server of the person's gets theirs that way).
|
|
11
12
|
*
|
|
12
|
-
* The pick is kept in a file of its own, logins only
|
|
13
|
-
* is asked of it when the run starts (`gh auth token --user`).
|
|
13
|
+
* The runs' pick is kept in a file of its own, logins only.
|
|
14
14
|
*/
|
|
15
15
|
/** The host this package answers for. */
|
|
16
16
|
export const HOST = 'github.com';
|
|
17
|
+
/** A GitHub login, as GitHub allows one: also what keeps a folder's name inside the accounts' folder. */
|
|
18
|
+
const LOGIN = /^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})$/;
|
|
19
|
+
/** Where OpenAgent's accounts are: one folder each, beside OpenAgent's other files in the person's config folder. */
|
|
20
|
+
export function accountsRoot(env = process.env) {
|
|
21
|
+
if (env['XDG_CONFIG_HOME'])
|
|
22
|
+
return join(env['XDG_CONFIG_HOME'], 'openagent-github');
|
|
23
|
+
return join(env['HOME'] ?? homedir(), '.openagent-github');
|
|
24
|
+
}
|
|
25
|
+
/** The folder of one account: what `gh` is given as `GH_CONFIG_DIR` to work as it. */
|
|
26
|
+
export function accountDir(root, login) {
|
|
27
|
+
if (!LOGIN.test(login))
|
|
28
|
+
throw new Error(`${login} is no GitHub login`);
|
|
29
|
+
return join(root, login);
|
|
30
|
+
}
|
|
31
|
+
/** Where a browser login waits until GitHub said yes; then it becomes the account's folder. */
|
|
32
|
+
const ADDING = '.adding';
|
|
33
|
+
/** Whether `dir` is one of OpenAgent's account folders: a run is given one, and works as it. */
|
|
34
|
+
export function isAccountDir(root, dir) {
|
|
35
|
+
const rel = relative(root, dir);
|
|
36
|
+
return rel !== '' && !rel.startsWith('..') && !isAbsolute(rel) && LOGIN.test(rel);
|
|
37
|
+
}
|
|
38
|
+
/** `gh` working as the account in `dir`: its folder, never the person's, and no token from the environment unless given. */
|
|
39
|
+
export function asAccount(gh, dir) {
|
|
40
|
+
return (args, cwd, env, input) => gh(args, cwd, { GH_TOKEN: '', GITHUB_TOKEN: '', ...env, GH_CONFIG_DIR: dir }, input);
|
|
41
|
+
}
|
|
42
|
+
/** The logins OpenAgent has, by name. */
|
|
43
|
+
export function accountLogins(root) {
|
|
44
|
+
let names;
|
|
45
|
+
try {
|
|
46
|
+
names = readdirSync(root);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
return names.filter(name => LOGIN.test(name) && existsSync(join(root, name, 'hosts.yml'))).sort((a, b) => a.localeCompare(b));
|
|
52
|
+
}
|
|
53
|
+
export function readFacts(dir) {
|
|
54
|
+
try {
|
|
55
|
+
const facts = JSON.parse(readFileSync(join(dir, 'account.json'), 'utf8'));
|
|
56
|
+
if (typeof facts.login === 'string' && typeof facts.id === 'number')
|
|
57
|
+
return { login: facts.login, id: facts.id, ...(typeof facts.name === 'string' && facts.name ? { name: facts.name } : {}) };
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// None kept: the account was added before its facts were.
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
function writeFile600(path, text) {
|
|
65
|
+
mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
|
|
66
|
+
const next = `${path}.${process.pid}.tmp`;
|
|
67
|
+
writeFileSync(next, text, { mode: 0o600 });
|
|
68
|
+
chmodSync(next, 0o600);
|
|
69
|
+
renameSync(next, path);
|
|
70
|
+
}
|
|
71
|
+
/** Who GitHub says the account `gh` works as is: its login, id and name. */
|
|
72
|
+
export async function whoAmI(gh, cwd) {
|
|
73
|
+
const said = (await gh(['api', '--hostname', HOST, 'user', '--jq', '[.login, (.id | tostring), (.name // "")] | @tsv'], cwd)).trim();
|
|
74
|
+
const [login = '', id = '', name = ''] = said.split('\t');
|
|
75
|
+
if (!LOGIN.test(login) || !/^\d+$/.test(id))
|
|
76
|
+
throw new Error(`GitHub said no account: ${said || 'nothing'}`);
|
|
77
|
+
return { login, id: Number(id), ...(name ? { name } : {}) };
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* A browser login that GitHub said yes to becomes an account: its folder is named by its login,
|
|
81
|
+
* an account of that name before it replaced. Nothing while the login is still waiting, or when
|
|
82
|
+
* none was started. Answers the login added.
|
|
83
|
+
*/
|
|
84
|
+
export async function settleAdded(root, gh, cwd, files = jobFiles('login')) {
|
|
85
|
+
const adding = join(root, ADDING);
|
|
86
|
+
if (!existsSync(join(adding, 'hosts.yml')))
|
|
87
|
+
return undefined;
|
|
88
|
+
const state = jobState(files);
|
|
89
|
+
if (state?.running)
|
|
90
|
+
return undefined;
|
|
91
|
+
if (state && 'failed' in state && state.failed !== undefined) {
|
|
92
|
+
rmSync(adding, { recursive: true, force: true });
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
const facts = await whoAmI(asAccount(gh, adding), cwd);
|
|
96
|
+
const dir = accountDir(root, facts.login);
|
|
97
|
+
rmSync(dir, { recursive: true, force: true });
|
|
98
|
+
renameSync(adding, dir);
|
|
99
|
+
writeFile600(join(dir, 'account.json'), `${JSON.stringify(facts, null, 2)}\n`);
|
|
100
|
+
return facts.login;
|
|
101
|
+
}
|
|
17
102
|
/** Where the runs' pick is kept: beside OpenAgent's other files in the person's config folder. */
|
|
18
103
|
export function picksPath(env = process.env) {
|
|
19
104
|
if (env['XDG_CONFIG_HOME'])
|
|
@@ -33,14 +118,13 @@ function readPicks(path) {
|
|
|
33
118
|
return { runs: {} };
|
|
34
119
|
}
|
|
35
120
|
function writePicks(path, file) {
|
|
36
|
-
|
|
37
|
-
const next = `${path}.${process.pid}.tmp`;
|
|
38
|
-
writeFileSync(next, `${JSON.stringify(file, null, 2)}\n`, { mode: 0o600 });
|
|
39
|
-
chmodSync(next, 0o600);
|
|
40
|
-
renameSync(next, path);
|
|
121
|
+
writeFile600(path, `${JSON.stringify(file, null, 2)}\n`);
|
|
41
122
|
}
|
|
42
|
-
/**
|
|
43
|
-
|
|
123
|
+
/**
|
|
124
|
+
* Whether `gh` is on this computer, and OpenAgent's accounts with whether GitHub still takes each.
|
|
125
|
+
* A `gh` that is not on this computer is "not installed".
|
|
126
|
+
*/
|
|
127
|
+
export async function ghState(root, cwd, gh) {
|
|
44
128
|
try {
|
|
45
129
|
await gh(['--version'], cwd);
|
|
46
130
|
}
|
|
@@ -48,41 +132,37 @@ export async function ghState(cwd, gh) {
|
|
|
48
132
|
if (/ENOENT|not found/i.test(errorMessage(err)))
|
|
49
133
|
return { installed: false };
|
|
50
134
|
}
|
|
51
|
-
let said;
|
|
52
|
-
try {
|
|
53
|
-
said = JSON.parse(await gh(['auth', 'status', '--json', 'hosts', '--hostname', HOST], cwd));
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
return { installed: true, accounts: [] };
|
|
57
|
-
}
|
|
58
|
-
const rows = said?.hosts?.[HOST];
|
|
59
135
|
const accounts = [];
|
|
60
|
-
for (const
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
continue;
|
|
64
|
-
accounts.push({ login: r['login'], terminal: r['active'] === true, ok: r['state'] === 'success' });
|
|
136
|
+
for (const login of accountLogins(root)) {
|
|
137
|
+
const ok = await asAccount(gh, join(root, login))(['auth', 'status', '--hostname', HOST], cwd).then(() => true, () => false);
|
|
138
|
+
accounts.push({ login, ok });
|
|
65
139
|
}
|
|
66
140
|
return { installed: true, accounts };
|
|
67
141
|
}
|
|
68
|
-
/**
|
|
69
|
-
* The account runs use: the one picked, while `gh` still knows it; else the terminal's, kept as
|
|
70
|
-
* the pick from now on, so a later switch in the terminal leaves the runs where they were.
|
|
71
|
-
*/
|
|
142
|
+
/** The account runs use: the one picked, while OpenAgent still has it; else the first, kept as the pick from now on. */
|
|
72
143
|
export function runsAccount(accounts, path = picksPath()) {
|
|
73
144
|
const picks = readPicks(path);
|
|
74
145
|
const picked = picks.runs[HOST];
|
|
75
146
|
if (picked !== undefined && accounts.some(a => a.login === picked))
|
|
76
147
|
return picked;
|
|
77
|
-
const
|
|
78
|
-
if (
|
|
79
|
-
writePicks(path, { runs: { ...picks.runs, [HOST]:
|
|
80
|
-
return
|
|
148
|
+
const first = accounts[0]?.login;
|
|
149
|
+
if (first !== undefined)
|
|
150
|
+
writePicks(path, { runs: { ...picks.runs, [HOST]: first } });
|
|
151
|
+
return first;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* The account runs use and its folder, read off the files alone, asking GitHub nothing: for
|
|
155
|
+
* OpenAgent's own copy of its login to a server. None when OpenAgent has no account.
|
|
156
|
+
*/
|
|
157
|
+
export function runsAccountDir(env = process.env) {
|
|
158
|
+
const root = accountsRoot(env);
|
|
159
|
+
const login = runsAccount(accountLogins(root).map(name => ({ login: name, ok: true })), picksPath(env));
|
|
160
|
+
return login === undefined ? undefined : { login, dir: accountDir(root, login) };
|
|
81
161
|
}
|
|
82
|
-
/** Runs use `login` from now on: an account
|
|
162
|
+
/** Runs use `login` from now on: an account OpenAgent has. */
|
|
83
163
|
export function useForRuns(login, accounts, path = picksPath()) {
|
|
84
164
|
if (!accounts.some(a => a.login === login))
|
|
85
|
-
throw new Error(`
|
|
165
|
+
throw new Error(`OpenAgent has no GitHub account ${login}: add it in Permissions first`);
|
|
86
166
|
const picks = readPicks(path);
|
|
87
167
|
writePicks(path, { runs: { ...picks.runs, [HOST]: login } });
|
|
88
168
|
}
|
|
@@ -183,37 +263,21 @@ export function loginUnderWay(files = jobFiles('login')) {
|
|
|
183
263
|
return state?.running ? codeIn(state.said) : undefined;
|
|
184
264
|
}
|
|
185
265
|
/**
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
266
|
+
* Log an account in, in the browser: GitHub's device login, whose code the person types at
|
|
267
|
+
* github.com/login/device, wherever they are. The login goes into a folder of its own, its token
|
|
268
|
+
* kept there and not in the keychain the person's `gh` uses, so the person's own logins stay as
|
|
269
|
+
* they are. Answers once `gh` showed the code; `gh` waits on, in a process of its own, for the
|
|
270
|
+
* yes; {@link settleAdded} then names the folder by the account.
|
|
190
271
|
*/
|
|
191
|
-
|
|
192
|
-
has() { [ -n "$(cd / && git config --get "$1")" ]; }
|
|
193
|
-
if ! has user.name || ! has user.email; then
|
|
194
|
-
facts=$(gh api --hostname ${HOST} user --jq '[.login, (.id | tostring), (.name // "")] | @tsv') &&
|
|
195
|
-
login=$(printf '%s' "$facts" | cut -f1) && id=$(printf '%s' "$facts" | cut -f2) && name=$(printf '%s' "$facts" | cut -f3) &&
|
|
196
|
-
[ -n "$login" ] && [ -n "$id" ] && {
|
|
197
|
-
has user.name || git config --global -- user.name "\${name:-$login}"
|
|
198
|
-
has user.email || git config --global -- user.email "$id+$login@users.noreply.github.com"
|
|
199
|
-
}
|
|
200
|
-
fi
|
|
201
|
-
true
|
|
202
|
-
}`;
|
|
203
|
-
/**
|
|
204
|
-
* Log an account in to `gh` in the browser: GitHub's device login, whose code the person types at
|
|
205
|
-
* github.com/login/device, wherever they are. `gh` makes the new account the terminal's, so once
|
|
206
|
-
* the browser said yes, the terminal's account before it is made the terminal's again: logging an
|
|
207
|
-
* account in for runs leaves the terminal as it was. Git is given a name then when it has none
|
|
208
|
-
* ({@link NAMED}). Answers once `gh` showed the code; `gh` waits on, in a process of its own, for
|
|
209
|
-
* the yes.
|
|
210
|
-
*/
|
|
211
|
-
export async function startLogin(terminal, files = jobFiles('login'), waitMs = 20_000) {
|
|
272
|
+
export async function startLogin(root, files = jobFiles('login'), waitMs = 20_000) {
|
|
212
273
|
const under = loginUnderWay(files);
|
|
213
274
|
if (under)
|
|
214
275
|
return under;
|
|
215
|
-
const
|
|
216
|
-
|
|
276
|
+
const adding = join(root, ADDING);
|
|
277
|
+
rmSync(adding, { recursive: true, force: true });
|
|
278
|
+
mkdirSync(adding, { recursive: true, mode: 0o700 });
|
|
279
|
+
chmodSync(root, 0o700);
|
|
280
|
+
await startJob(files, `env -u GH_TOKEN -u GITHUB_TOKEN GH_CONFIG_DIR="$1" gh auth login --hostname ${HOST} --web --insecure-storage --skip-ssh-key`, [adding]);
|
|
217
281
|
const until = Date.now() + waitMs;
|
|
218
282
|
for (;;) {
|
|
219
283
|
const state = jobState(files);
|
|
@@ -228,6 +292,31 @@ export async function startLogin(terminal, files = jobFiles('login'), waitMs = 2
|
|
|
228
292
|
await new Promise(resolve => setTimeout(resolve, 200));
|
|
229
293
|
}
|
|
230
294
|
}
|
|
295
|
+
/** Keep a login handed over as a token as one of OpenAgent's accounts: its folder, its facts. */
|
|
296
|
+
export async function takeToken(root, token, facts, gh, cwd) {
|
|
297
|
+
const dir = accountDir(root, facts.login);
|
|
298
|
+
const next = join(root, `.taking-${process.pid}`);
|
|
299
|
+
rmSync(next, { recursive: true, force: true });
|
|
300
|
+
mkdirSync(next, { recursive: true, mode: 0o700 });
|
|
301
|
+
try {
|
|
302
|
+
await asAccount(gh, next)(['auth', 'login', '--hostname', HOST, '--with-token', '--insecure-storage'], cwd, undefined, token);
|
|
303
|
+
writeFile600(join(next, 'account.json'), `${JSON.stringify(facts, null, 2)}\n`);
|
|
304
|
+
rmSync(dir, { recursive: true, force: true });
|
|
305
|
+
renameSync(next, dir);
|
|
306
|
+
}
|
|
307
|
+
finally {
|
|
308
|
+
rmSync(next, { recursive: true, force: true });
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
/** OpenAgent forgets an account: its folder goes, and a runs' pick that named it. The token is not ended. */
|
|
312
|
+
export function forgetAccount(root, login, path = picksPath()) {
|
|
313
|
+
rmSync(accountDir(root, login), { recursive: true, force: true });
|
|
314
|
+
const picks = readPicks(path);
|
|
315
|
+
if (picks.runs[HOST] === login) {
|
|
316
|
+
const { [HOST]: _gone, ...rest } = picks.runs;
|
|
317
|
+
writePicks(path, { runs: rest });
|
|
318
|
+
}
|
|
319
|
+
}
|
|
231
320
|
function stopJob(files) {
|
|
232
321
|
try {
|
|
233
322
|
process.kill(-Number(readFileSync(files.pid, 'utf8').trim()), 'SIGTERM');
|
|
@@ -237,12 +326,28 @@ function stopJob(files) {
|
|
|
237
326
|
}
|
|
238
327
|
}
|
|
239
328
|
/**
|
|
240
|
-
* The environment
|
|
329
|
+
* The environment to work as an account: its folder for `gh`, its token for `gh` and for git's
|
|
241
330
|
* pushes and fetches to GitHub, whatever the person's own git keeps for it (the keychain, a
|
|
242
|
-
* different helper, an ssh key). Set through git's environment, so
|
|
243
|
-
* settings changes. The settings already in the environment are kept.
|
|
331
|
+
* different helper, an ssh key), and its name on the commits. Set through git's environment, so
|
|
332
|
+
* nothing of the person's own settings changes. The settings already in the environment are kept.
|
|
333
|
+
*/
|
|
334
|
+
/**
|
|
335
|
+
* The git settings that make git use the account in `dir` at GitHub, with no secret in them: an
|
|
336
|
+
* empty helper drops every helper set before it (the person's keychain among them), then gh,
|
|
337
|
+
* working in the account's folder only, answers git's ask for the login; a remote written for
|
|
338
|
+
* ssh goes over https, where that login is the one asked. What a repository OpenAgent sends as
|
|
339
|
+
* an account keeps in its own config.
|
|
244
340
|
*/
|
|
245
|
-
export function
|
|
341
|
+
export function gitConfig(dir) {
|
|
342
|
+
const quoted = `'${dir.replace(/'/g, `'\\''`)}'`;
|
|
343
|
+
return [
|
|
344
|
+
[`credential.https://${HOST}.helper`, ''],
|
|
345
|
+
[`credential.https://${HOST}.helper`, `!f() { test "$1" = get || exit 0; GH_TOKEN= GITHUB_TOKEN= GH_CONFIG_DIR=${quoted} gh auth git-credential get; }; f`],
|
|
346
|
+
[`url.https://${HOST}/.insteadOf`, `git@${HOST}:`],
|
|
347
|
+
[`url.https://${HOST}/.insteadOf`, `ssh://git@${HOST}/`],
|
|
348
|
+
];
|
|
349
|
+
}
|
|
350
|
+
export function runEnv(token, dir, facts, env = process.env) {
|
|
246
351
|
const given = Number(env['GIT_CONFIG_COUNT'] ?? 0) || 0;
|
|
247
352
|
const lines = [
|
|
248
353
|
// An empty helper drops every helper set before it; then one that answers with the token.
|
|
@@ -252,11 +357,17 @@ export function runEnv(token, env = process.env) {
|
|
|
252
357
|
[`url.https://${HOST}/.insteadOf`, `git@${HOST}:`],
|
|
253
358
|
[`url.https://${HOST}/.insteadOf`, `ssh://git@${HOST}/`],
|
|
254
359
|
];
|
|
255
|
-
const out = { GH_TOKEN: token, GIT_CONFIG_COUNT: String(given + lines.length) };
|
|
360
|
+
const out = { GH_CONFIG_DIR: dir, GH_TOKEN: token, GIT_CONFIG_COUNT: String(given + lines.length) };
|
|
256
361
|
lines.forEach(([key, value], i) => {
|
|
257
362
|
out[`GIT_CONFIG_KEY_${given + i}`] = key;
|
|
258
363
|
out[`GIT_CONFIG_VALUE_${given + i}`] = value;
|
|
259
364
|
});
|
|
365
|
+
if (facts) {
|
|
366
|
+
// The commits are the account's: its name, and GitHub's own address for it, which hides the person's own.
|
|
367
|
+
const name = facts.name ?? facts.login;
|
|
368
|
+
const email = `${facts.id}+${facts.login}@users.noreply.github.com`;
|
|
369
|
+
Object.assign(out, { GIT_AUTHOR_NAME: name, GIT_AUTHOR_EMAIL: email, GIT_COMMITTER_NAME: name, GIT_COMMITTER_EMAIL: email });
|
|
370
|
+
}
|
|
260
371
|
return out;
|
|
261
372
|
}
|
|
262
373
|
//# sourceMappingURL=accounts.js.map
|
package/dist/accounts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type GitRunner } from '@openagt/agent-data';
|
|
2
2
|
import { type GhRunner } from './gh.js';
|
|
3
|
+
import { type ProfileFetch } from './profile.js';
|
|
3
4
|
import { type JobState, type LoggingIn } from './accounts.js';
|
|
4
5
|
/**
|
|
5
6
|
* The command line over the package (#1820): the same functions for an agent in a shell, and for
|
|
@@ -14,8 +15,12 @@ import { type JobState, type LoggingIn } from './accounts.js';
|
|
|
14
15
|
*
|
|
15
16
|
* Every command acts on the repository the working directory is in: `gh` finds the repository
|
|
16
17
|
* and its remote from there, as it does for a person.
|
|
18
|
+
*
|
|
19
|
+
* The commands that talk to GitHub work as one of OpenAgent's own accounts, never as the
|
|
20
|
+
* person's `gh`: inside a run, the account the run was given; elsewhere, the account runs use.
|
|
21
|
+
* With none, they are refused, and say where one is added.
|
|
17
22
|
*/
|
|
18
|
-
export declare const USAGE = "usage: github <command>\n\n requests [--branch <b>] [--state open|merged|all] [--since <iso>]\n the project's pull requests, newest first: number, url, state, title, draft, branch, head, createdAt, mergedAt, mergeCommit\n replies [--since <iso>] what came on the open issues and pull requests this machine's agents worked on, since each agent ended: maintainers' words\n that call the agent with /agent, and on an agent's own pull request checks that turned red and a conflict once the base branch moved;\n [{ run, text }], one per run, read from the project's run records; with --since, also [{ for, text, branch? }] for each open issue or\n pull request no run was on, where a maintainer called the agent since then: the check of a scheduler's row with each\n comment <number> --body <text>\n post a comment on issue or pull request <number>: its id and url. It opens with the coding agent's logo, the model and the effort, as the agent's\n run record says (found through AGENT_DIARY, which its runner sets), else the line \uD83E\uDD16 automated; a hidden mark after the text, so replies never counts it\n open [--branch <b>] --title <t> [--body <text>] [--base <b>] [--draft] [--merge]\n open the pull request of branch <b> (default: the current branch; it must be on the remote already); an open one is answered as it is; --base names the branch it\n goes into (default: the repository's default branch); --merge lands it on green.\n An account that cannot write to the project pushes to its fork: git remote set-url --push origin <fork>; open and replies then take that fork's\n pull requests as this machine's\n merge <number> land pull request <number>: a draft is marked ready, then the merge is armed as --merge arms it\n watch <number> wait for pull request <number>'s checks and merge it once they pass; what --merge starts where the repository has no auto-merge\n home the project's page on GitHub, from its origin remote\n
|
|
23
|
+
export declare const USAGE = "usage: github <command>\n\n requests [--branch <b>] [--state open|merged|all] [--since <iso>]\n the project's pull requests, newest first: number, url, state, title, draft, branch, head, createdAt, mergedAt, mergeCommit\n replies [--since <iso>] what came on the open issues and pull requests this machine's agents worked on, since each agent ended: maintainers' words\n that call the agent with /agent, and on an agent's own pull request checks that turned red and a conflict once the base branch moved;\n [{ run, text }], one per run, read from the project's run records; with --since, also [{ for, text, branch? }] for each open issue or\n pull request no run was on, where a maintainer called the agent since then: the check of a scheduler's row with each\n comment <number> --body <text>\n post a comment on issue or pull request <number>: its id and url. It opens with the coding agent's logo, the model and the effort, as the agent's\n run record says (found through AGENT_DIARY, which its runner sets), else the line \uD83E\uDD16 automated; a hidden mark after the text, so replies never counts it\n open [--branch <b>] --title <t> [--body <text>] [--base <b>] [--draft] [--merge]\n open the pull request of branch <b> (default: the current branch; it must be on the remote already); an open one is answered as it is; --base names the branch it\n goes into (default: the repository's default branch); --merge lands it on green.\n An account that cannot write to the project pushes to its fork: git remote set-url --push origin <fork>; open and replies then take that fork's\n pull requests as this machine's\n merge <number> land pull request <number>: a draft is marked ready, then the merge is armed as --merge arms it\n watch <number> wait for pull request <number>'s checks and merge it once they pass; what --merge starts where the repository has no auto-merge\n home the project's page on GitHub, from its origin remote\n profile <login> a GitHub user's public profile, read with no login: { login, name, avatar } (a picture's https address); what a person copies\n into OpenAgent as their own name and picture\n repos [--user <login>] [--owner <name>]\n the repositories of <name>, a GitHub user or organization (default: the account itself), as the account <login> (default:\n the account runs use) sees them, its private ones too: { login, owner, repos: [{ address, url, private, pushedAt, description }] },\n the newest pushed first, at most 300\n people <email>... the GitHub accounts behind the project's commit emails: [{ email, login, avatar }], one per email a commit of the\n repository's is signed with by an account, or that is GitHub's own address for one (at most 20 asked at once); any other email is left out\n accounts [--host <host>] OpenAgent's own GitHub accounts and the one its runs use: { host, name, requestWord, logo, tool, installed,\n install, accounts: [{ login, runs, ok }], loggingIn? }; a host other than github.com is refused (not-mine)\n use <login> OpenAgent's runs use <login> from now on, one of its accounts\n login add an account to OpenAgent, logged in in the browser: { code, url }, the code typed at url; gh waits on for the yes.\n The account is OpenAgent's own: the person's gh, git and keychain stay as they are\n install put gh on this computer with no admin: Homebrew where it is, else GitHub's build into ~/.local/bin; answers once it\n started, and accounts says installing until it ended, then installFailed if it did\n env [--user <login>] the environment a run gets to work as <login> (default: the account runs use): { env }, its gh folder, its token for gh and\n for git, its name on commits; refused (no-account) when OpenAgent has no account\n git-config [--user <login>] the git settings that make git push and fetch as <login> (default: the account runs use), asking gh for its login when git needs it:\n { login, host, config: [[key, value]] }; no secret in them, so they may be kept in a repository's own config\n token --user <login> <login>'s token as OpenAgent keeps it, checked with GitHub to be that account's: { login, token }; what OpenAgent copies to a\n server of the person's, which then uses the same login, never a new one\n take add the login whose token is on standard input as one of OpenAgent's accounts: { login }\n forget <login> OpenAgent forgets <login>; the token is not ended, and goes on working wherever else it is\n create [--check] create a private repository for a project with no origin, named <account>/<folder>, set it as origin and push;\n --check only says which repository that would be\n\nJSON on stdout. Exit code 1 for a refusal or a failure (the reason on stderr), 2 for a usage error.";
|
|
19
24
|
/** The streams and the working directory a run of the CLI sees. */
|
|
20
25
|
export interface CliIo {
|
|
21
26
|
cwd: string;
|
|
@@ -36,12 +41,14 @@ export interface CliDeps {
|
|
|
36
41
|
shell?: (command: string) => Promise<void>;
|
|
37
42
|
/** How the install started last went; the default reads it off its files. */
|
|
38
43
|
installing?: () => JobState | undefined;
|
|
39
|
-
/** Start a browser login
|
|
40
|
-
login?: (
|
|
44
|
+
/** Start a browser login into OpenAgent's accounts' folder; the default runs gh. */
|
|
45
|
+
login?: (root: string) => Promise<LoggingIn>;
|
|
41
46
|
/** The browser login under way; the default reads it off its files. */
|
|
42
47
|
underWay?: () => LoggingIn | undefined;
|
|
43
48
|
/** What the command was handed on standard input; the default reads the process's. */
|
|
44
49
|
stdin?: () => Promise<string>;
|
|
50
|
+
/** What reads a public profile from GitHub; the default is `fetch`. */
|
|
51
|
+
fetch?: ProfileFetch;
|
|
45
52
|
}
|
|
46
53
|
/** A refusal: a rule said no, and the caller learns which. */
|
|
47
54
|
export type CliRefusal = {
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAA;AAQrD,OAAO,EAAgC,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAO9E,OAAO,EAA0R,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;AAErV;;;;;;;;;;;;;;;;;GAiBG;AAEH,eAAO,MAAM,KAAK,y9KA6CkF,CAAA;AAEpG,mEAAmE;AACnE,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B;AAED,oFAAoF;AACpF,MAAM,WAAW,OAAO;IACtB,EAAE,CAAC,EAAE,QAAQ,CAAA;IACb,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,4FAA4F;IAC5F,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvD,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAChC,+GAA+G;IAC/G,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1C,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,QAAQ,GAAG,SAAS,CAAA;IACvC,oFAAoF;IACpF,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;IAC5C,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,SAAS,GAAG,SAAS,CAAA;IACtC,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7B,uEAAuE;IACvE,KAAK,CAAC,EAAE,YAAY,CAAA;CACrB;AAED,8DAA8D;AAC9D,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAA;AAY9E,2FAA2F;AAC3F,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,GAAE,OAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAyC3F"}
|