@detergent-software/conductor 2.0.0-dev.1 → 2.0.0-dev.2
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/CHANGELOG.md +16 -0
- package/README.md +46 -13
- package/build/brief-cli.js +24 -11
- package/build/brief-cli.js.map +1 -1
- package/build/brief.js +2 -0
- package/build/brief.js.map +1 -1
- package/build/broker-cli.js +41 -2
- package/build/broker-cli.js.map +1 -1
- package/build/cli.js +40 -1
- package/build/cli.js.map +1 -1
- package/build/code-host-cli.js +32 -15
- package/build/code-host-cli.js.map +1 -1
- package/build/config.js +20 -6
- package/build/config.js.map +1 -1
- package/build/credential.js +13 -2
- package/build/credential.js.map +1 -1
- package/build/credentials.js +240 -104
- package/build/credentials.js.map +1 -1
- package/build/daemon.js +2 -0
- package/build/daemon.js.map +1 -1
- package/build/file-lock.js +106 -0
- package/build/file-lock.js.map +1 -0
- package/build/help.js +78 -1
- package/build/help.js.map +1 -1
- package/build/in-process.js +15 -4
- package/build/in-process.js.map +1 -1
- package/build/lib/providers/ado/http.js +6 -2
- package/build/lib/providers/ado/http.js.map +1 -1
- package/build/lib/providers/index.js +1 -1
- package/build/lib/providers/index.js.map +1 -1
- package/build/profile.js +7 -0
- package/build/profile.js.map +1 -1
- package/build/project-check-cli.js +1 -1
- package/build/project-check-cli.js.map +1 -1
- package/build/project-check.js +75 -2
- package/build/project-check.js.map +1 -1
- package/build/search.js +130 -0
- package/build/search.js.map +1 -0
- package/build/tracker-reads-cli.js +89 -0
- package/build/tracker-reads-cli.js.map +1 -0
- package/build/wait.js +7 -2
- package/build/wait.js.map +1 -1
- package/build/watchers/boards.js +8 -0
- package/build/watchers/boards.js.map +1 -1
- package/package.json +1 -1
package/build/credential.js
CHANGED
|
@@ -29,10 +29,20 @@ try {
|
|
|
29
29
|
} finally { [AtkConduct.Cred]::CredFree($p) }
|
|
30
30
|
} catch { [Console]::Error.WriteLine($_.Exception.Message); exit 4 }
|
|
31
31
|
`;
|
|
32
|
+
export async function credentialSaved(target, env = process.env) {
|
|
33
|
+
if (process.platform !== 'win32')
|
|
34
|
+
return 'missing';
|
|
35
|
+
const result = await run('cmdkey', [`/list:${target}`], { env, timeoutMs: 15_000 });
|
|
36
|
+
if (result.code !== 0)
|
|
37
|
+
return 'unknown';
|
|
38
|
+
if (/\*\s*NONE\s*\*/.test(result.stdout))
|
|
39
|
+
return 'missing';
|
|
40
|
+
return /^\s*Target:/m.test(result.stdout) ? 'saved' : 'unknown';
|
|
41
|
+
}
|
|
32
42
|
// Reads the generic credential `target`. Windows only.
|
|
33
43
|
export async function readCredential(target, env = process.env) {
|
|
34
44
|
if (process.platform !== 'win32')
|
|
35
|
-
return { found: false, reason: `the ${target} credential is Windows-only` };
|
|
45
|
+
return { found: false, missing: true, reason: `the ${target} credential is Windows-only` };
|
|
36
46
|
const result = await run('powershell.exe', ['-NoProfile', '-NonInteractive', '-EncodedCommand', Buffer.from(CRED_READ, 'utf16le').toString('base64')], { env: { ...env, ATK_CONDUCT_CRED_TARGET: target }, timeoutMs: 30_000 });
|
|
37
47
|
if (result.code === 0) {
|
|
38
48
|
const newline = result.stdout.indexOf('\n');
|
|
@@ -41,7 +51,7 @@ export async function readCredential(target, env = process.env) {
|
|
|
41
51
|
return { credential: { secret, user: result.stdout.slice(0, newline).trim() }, found: true };
|
|
42
52
|
}
|
|
43
53
|
if (result.code === NOT_FOUND)
|
|
44
|
-
return { found: false, reason: `no credential ${target}` };
|
|
54
|
+
return { found: false, missing: true, reason: `no credential ${target}` };
|
|
45
55
|
// Never echo stdout here: on a partial failure it could hold the secret.
|
|
46
56
|
const line = result.stderr
|
|
47
57
|
.split(/\r?\n/)
|
|
@@ -49,6 +59,7 @@ export async function readCredential(target, env = process.env) {
|
|
|
49
59
|
.find((l) => l && !l.startsWith('#< CLIXML') && !l.startsWith('<Objs'));
|
|
50
60
|
return {
|
|
51
61
|
found: false,
|
|
62
|
+
missing: false,
|
|
52
63
|
reason: `the credential ${target} couldn't be read (${result.error ?? line ?? `exit ${result.code}`})`,
|
|
53
64
|
};
|
|
54
65
|
}
|
package/build/credential.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential.js","sourceRoot":"","sources":["../src/credential.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"credential.js","sourceRoot":"","sources":["../src/credential.ts"],"names":[],"mappings":"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"}
|
package/build/credentials.js
CHANGED
|
@@ -1,19 +1,35 @@
|
|
|
1
|
-
import { readCredential as readWindowsCredential } from "./credential.js";
|
|
1
|
+
import { credentialSaved, readCredential as readWindowsCredential, } from "./credential.js";
|
|
2
2
|
import { ConductorError } from "./errors.js";
|
|
3
|
-
import { NotFound } from "./lib/providers/index.js";
|
|
3
|
+
import { adoBasic, adoOrgUrl, NotFound } from "./lib/providers/index.js";
|
|
4
4
|
import { outputOf, run as runCommand } from "./run.js";
|
|
5
|
-
// Each project's
|
|
6
|
-
//
|
|
7
|
-
//
|
|
5
|
+
// Each project's credentials (design note v2, section 8): every provider takes the first credential
|
|
6
|
+
// it finds, least privilege first.
|
|
7
|
+
// 1. project-token: a token scoped to the project, in the generic credential that machine config
|
|
8
|
+
// names (`projects.<name>.ado.token`, `github.token`, `linear.credential`);
|
|
9
|
+
// 2. machine-token: the machine's own token, from a conductor-only env var or generic credential
|
|
10
|
+
// (MACHINE_TOKENS), so another tool's env never changes what the conductor signs in as;
|
|
11
|
+
// 3. cli-login: `az` (the project's tenant, else the default account) or `gh` (the project's user,
|
|
12
|
+
// else the active account), last because it usually carries the widest permissions. Linear has
|
|
13
|
+
// none.
|
|
14
|
+
// Found means there: a token that is there but refused is a lost login, never a quiet fall back to a
|
|
15
|
+
// wider credential. A login that stops working is a spell: one `lost` change when it starts, one
|
|
8
16
|
// `restored` when a call or a probe works again.
|
|
9
17
|
export const PROVIDERS = ['ado', 'github', 'linear'];
|
|
18
|
+
export const SOURCES = ['project-token', 'machine-token', 'cli-login'];
|
|
10
19
|
// Azure DevOps' resource id, for `az account get-access-token`.
|
|
11
20
|
const ADO_RESOURCE = '499b84ac-1321-427f-aa17-267ca6975798';
|
|
12
|
-
// An az token lasts about an hour, a gh token until it is revoked; both are asked again well before
|
|
21
|
+
// An az token lasts about an hour, a gh token until it is revoked; both are asked again well before,
|
|
22
|
+
// and a token's credential is read again as often, so a replaced or removed one is seen.
|
|
13
23
|
const TOKEN_MAX_AGE_MS = 20 * 60_000;
|
|
14
24
|
export const LINEAR_CREDENTIAL = 'atk-conductor-linear';
|
|
15
|
-
// The
|
|
16
|
-
|
|
25
|
+
// The machine's own token for each provider: the env vars in order, then the generic credential.
|
|
26
|
+
export const MACHINE_TOKENS = {
|
|
27
|
+
ado: { credential: 'conductor-ado', env: ['CONDUCTOR_ADO_TOKEN'] },
|
|
28
|
+
github: { credential: 'conductor-github', env: ['CONDUCTOR_GITHUB_TOKEN'] },
|
|
29
|
+
linear: { credential: LINEAR_CREDENTIAL, env: ['CONDUCTOR_LINEAR_KEY', 'LINEAR_API_KEY'] },
|
|
30
|
+
};
|
|
31
|
+
// The id of the machine's own credentials. No tenant, gh user or credential target in config can be
|
|
32
|
+
// it: the schema allows no parentheses in the first two, and a target that spelt it would be odd.
|
|
17
33
|
export const MACHINE = '(machine)';
|
|
18
34
|
const LINEAR_API = 'https://api.linear.app/graphql';
|
|
19
35
|
const TIMEOUT_MS = 20_000;
|
|
@@ -37,28 +53,39 @@ export class LoginNeeded extends ConductorError {
|
|
|
37
53
|
export function loginText(account, project) {
|
|
38
54
|
return `${account.provider} login lost${project === null ? '' : ` for ${project}`} (${account.label})`;
|
|
39
55
|
}
|
|
56
|
+
// The generic credential the machine's own token is saved under. For Linear,
|
|
57
|
+
// ATK_CONDUCT_LINEAR_CREDENTIAL names another, as in conduct-atk.
|
|
58
|
+
export function machineTarget(provider, env) {
|
|
59
|
+
if (provider === 'linear')
|
|
60
|
+
return env.ATK_CONDUCT_LINEAR_CREDENTIAL?.trim() || LINEAR_CREDENTIAL;
|
|
61
|
+
return MACHINE_TOKENS[provider].credential;
|
|
62
|
+
}
|
|
40
63
|
export function providerCredentials(deps) {
|
|
41
64
|
const env = deps.env ?? process.env;
|
|
42
65
|
const fetcher = deps.fetch ?? globalThis.fetch;
|
|
43
66
|
const now = deps.now ?? Date.now;
|
|
44
67
|
const exec = deps.run ?? runCommand;
|
|
45
68
|
const read = deps.readCredential ?? readWindowsCredential;
|
|
69
|
+
// A seam that reads credentials but checks none is asked for every target.
|
|
70
|
+
const isSaved = deps.credentialSaved ?? (deps.readCredential ? async () => 'unknown' : credentialSaved);
|
|
46
71
|
const lostNow = new Map();
|
|
47
|
-
// Each
|
|
48
|
-
//
|
|
72
|
+
// Each identity's authorization (ADO's header value, gh's token, Linear's key) and the source it
|
|
73
|
+
// came from, shared by every project with that identity. The calls that read them name their own
|
|
74
|
+
// project, so a lost login is put on the project whose call found it.
|
|
49
75
|
const adoTokens = new Map();
|
|
50
76
|
const ghTokens = new Map();
|
|
51
77
|
const linearKeys = new Map();
|
|
52
|
-
const
|
|
78
|
+
const foundAs = new Map();
|
|
79
|
+
const key = (account) => `${account.provider}:${account.id}`;
|
|
53
80
|
const failed = (account, project, error) => {
|
|
54
|
-
if (!lostNow.has(
|
|
55
|
-
lostNow.set(
|
|
81
|
+
if (!lostNow.has(key(account))) {
|
|
82
|
+
lostNow.set(key(account), { account, error, project });
|
|
56
83
|
deps.onChange?.({ account, error, kind: 'lost', project });
|
|
57
84
|
}
|
|
58
85
|
return new LoginNeeded(account, project, error);
|
|
59
86
|
};
|
|
60
87
|
const worked = (account, project) => {
|
|
61
|
-
if (!lostNow.delete(
|
|
88
|
+
if (!lostNow.delete(key(account)))
|
|
62
89
|
return;
|
|
63
90
|
deps.onChange?.({ account, error: null, kind: 'restored', project });
|
|
64
91
|
};
|
|
@@ -66,82 +93,167 @@ export function providerCredentials(deps) {
|
|
|
66
93
|
// a login wait): every other call fails at once, so a pass with many waits on the account runs
|
|
67
94
|
// no `az`, `gh` or Linear request for it. The re-probe is the spell's back-off.
|
|
68
95
|
const refuseWhileLost = (account, project, probing) => {
|
|
69
|
-
const lost = probing ? undefined : lostNow.get(
|
|
96
|
+
const lost = probing ? undefined : lostNow.get(key(account));
|
|
70
97
|
if (lost)
|
|
71
|
-
throw new LoginNeeded(account, project, lost.error);
|
|
98
|
+
throw new LoginNeeded(lost.account, project, lost.error);
|
|
72
99
|
};
|
|
73
|
-
|
|
100
|
+
// The project's credentials as machine config names them, before any is read: its token when it
|
|
101
|
+
// names one, else its CLI login (Linear: the machine's key), with no source yet.
|
|
102
|
+
const configured = (provider, project) => {
|
|
74
103
|
const entry = project === null ? undefined : deps.projects[project];
|
|
104
|
+
const target = provider === 'linear' ? entry?.linear?.credential : entry?.[provider]?.token;
|
|
105
|
+
if (target !== undefined)
|
|
106
|
+
return tokenAccount(provider, target, target, 'project-token');
|
|
75
107
|
switch (provider) {
|
|
76
108
|
case 'ado': {
|
|
77
109
|
const tenant = entry?.ado?.tenant ?? null;
|
|
78
110
|
return tenant === null
|
|
79
|
-
? { command: 'az login', id: MACHINE, label: "az's default account", provider }
|
|
80
|
-
: {
|
|
111
|
+
? { command: 'az login', id: MACHINE, label: "az's default account", provider, source: null }
|
|
112
|
+
: {
|
|
113
|
+
command: `az login --tenant ${tenant}`,
|
|
114
|
+
id: tenant,
|
|
115
|
+
label: `az tenant ${tenant}`,
|
|
116
|
+
provider,
|
|
117
|
+
source: null,
|
|
118
|
+
};
|
|
81
119
|
}
|
|
82
120
|
case 'github': {
|
|
83
121
|
const user = entry?.github?.user ?? null;
|
|
84
122
|
return user === null
|
|
85
|
-
? { command: 'gh auth login', id: MACHINE, label: "gh's active account", provider }
|
|
86
|
-
: { command: 'gh auth login', id: user, label: `gh account ${user}`, provider };
|
|
123
|
+
? { command: 'gh auth login', id: MACHINE, label: "gh's active account", provider, source: null }
|
|
124
|
+
: { command: 'gh auth login', id: user, label: `gh account ${user}`, provider, source: null };
|
|
87
125
|
}
|
|
88
126
|
case 'linear': {
|
|
89
|
-
const
|
|
90
|
-
const shown = target ?? defaultLinearTarget(env);
|
|
127
|
+
const shown = machineTarget('linear', env);
|
|
91
128
|
return {
|
|
92
129
|
command: `cmdkey /generic:${shown} /user:linear /pass`,
|
|
93
|
-
id:
|
|
94
|
-
label:
|
|
130
|
+
id: MACHINE,
|
|
131
|
+
label: `${MACHINE_TOKENS.linear.env.join(', ')} or credential ${shown}`,
|
|
95
132
|
provider,
|
|
133
|
+
source: null,
|
|
96
134
|
};
|
|
97
135
|
}
|
|
98
136
|
}
|
|
99
137
|
};
|
|
100
|
-
// The
|
|
138
|
+
// The account as last found: the configured identity with its source's words.
|
|
139
|
+
const account = (provider, project) => {
|
|
140
|
+
const base = configured(provider, project);
|
|
141
|
+
return foundAs.get(key(base)) ?? base;
|
|
142
|
+
};
|
|
143
|
+
// The first credential the project has, in the order above. Throws LoginNeeded for a project
|
|
144
|
+
// token or a machine credential that is named but can't be read, and for Linear with no key.
|
|
145
|
+
const find = async (provider, project) => {
|
|
146
|
+
const base = configured(provider, project);
|
|
147
|
+
const as = (found) => ({ ...found, id: base.id });
|
|
148
|
+
if (base.source === 'project-token') {
|
|
149
|
+
const got = await read(base.id, env);
|
|
150
|
+
if (!got.found)
|
|
151
|
+
throw failed(base, project, got.reason);
|
|
152
|
+
return { account: base, token: got.credential.secret };
|
|
153
|
+
}
|
|
154
|
+
// A project that names its own CLI account (an az tenant, a gh user) keeps it: the machine's
|
|
155
|
+
// token is another identity, which may not even reach the project's organization.
|
|
156
|
+
const cli = { account: { ...base, source: 'cli-login' }, token: null };
|
|
157
|
+
if (base.id !== MACHINE && provider !== 'linear')
|
|
158
|
+
return cli;
|
|
159
|
+
const machine = MACHINE_TOKENS[provider];
|
|
160
|
+
for (const name of machine.env) {
|
|
161
|
+
const value = env[name]?.trim();
|
|
162
|
+
if (value) {
|
|
163
|
+
const command = `set ${name} to a working token, or unset it`;
|
|
164
|
+
return { account: as({ command, id: MACHINE, label: name, provider, source: 'machine-token' }), token: value };
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// The machine's credential is optional: one that isn't saved, or can't be read, is passed over
|
|
168
|
+
// (the cheap cmdkey check first, so the usual case starts no PowerShell). Linear has nothing
|
|
169
|
+
// after it.
|
|
170
|
+
const target = machineTarget(provider, env);
|
|
171
|
+
const stored = as(tokenAccount(provider, target, MACHINE, 'machine-token'));
|
|
172
|
+
const saved = await isSaved(target, env);
|
|
173
|
+
const got = saved === 'missing' ? null : await read(target, env);
|
|
174
|
+
if (got?.found)
|
|
175
|
+
return { account: stored, token: got.credential.secret };
|
|
176
|
+
if (provider === 'linear') {
|
|
177
|
+
throw failed(base, project, `no ${machine.env.join(' or ')}, and ${got?.reason ?? `no credential ${target}`}`);
|
|
178
|
+
}
|
|
179
|
+
return cli;
|
|
180
|
+
};
|
|
181
|
+
const remember = (found) => {
|
|
182
|
+
foundAs.set(key(found.account), found.account);
|
|
183
|
+
return found.account;
|
|
184
|
+
};
|
|
185
|
+
// The ADO authorization for the project, kept 20 minutes: a token as Basic, else az's as Bearer.
|
|
101
186
|
const adoToken = async (project, fresh, probing) => {
|
|
102
|
-
const
|
|
103
|
-
refuseWhileLost(
|
|
104
|
-
const cached = adoTokens.get(
|
|
187
|
+
const known = account('ado', project);
|
|
188
|
+
refuseWhileLost(known, project, probing);
|
|
189
|
+
const cached = adoTokens.get(known.id);
|
|
105
190
|
if (!fresh && cached && now() - cached.at < TOKEN_MAX_AGE_MS)
|
|
106
191
|
return cached.value;
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
192
|
+
const found = await find('ado', project);
|
|
193
|
+
const which = remember(found);
|
|
194
|
+
let value;
|
|
195
|
+
if (found.token !== null)
|
|
196
|
+
value = adoBasic(found.token);
|
|
197
|
+
else {
|
|
198
|
+
const tenant = which.id === MACHINE ? [] : ['--tenant', which.id];
|
|
199
|
+
// `az` is a .cmd on Windows, so it runs through a shell; its arguments are constants and
|
|
200
|
+
// the tenant id from machine config, which the config schema keeps to an id or a domain.
|
|
201
|
+
const result = await exec('az', ['account', 'get-access-token', '--resource', ADO_RESOURCE, ...tenant, '--query', 'accessToken', '-o', 'tsv'], { shell: process.platform === 'win32', timeoutMs: 60_000 });
|
|
202
|
+
const token = result.stdout.trim();
|
|
203
|
+
if (result.code !== 0 || !token) {
|
|
204
|
+
throw failed(which, project, `az account get-access-token failed: ${outputOf(result, 300)}`);
|
|
205
|
+
}
|
|
206
|
+
// A token from az works: az said so. A PAT's spell ends only when a probe sees ADO take it.
|
|
207
|
+
worked(which, project);
|
|
208
|
+
value = `Bearer ${token}`;
|
|
114
209
|
}
|
|
115
|
-
worked(which, project);
|
|
116
210
|
adoTokens.set(which.id, { at: now(), value });
|
|
117
211
|
return value;
|
|
118
212
|
};
|
|
119
|
-
const ado = (project) => (fresh) =>
|
|
120
|
-
|
|
121
|
-
const
|
|
213
|
+
const ado = (project) => async (fresh) => {
|
|
214
|
+
const known = account('ado', project);
|
|
215
|
+
const sent = adoTokens.get(known.id)?.value;
|
|
216
|
+
// ADO refused the PAT it was sent (401, or 203: its sign-in page). The credential is read
|
|
217
|
+
// again, so a replaced PAT is tried; the same one is refused again, so that is a lost login
|
|
218
|
+
// on it. az's token is renewed instead.
|
|
219
|
+
if (fresh && sent !== undefined && known.source !== null && known.source !== 'cli-login') {
|
|
220
|
+
const value = await adoToken(project, true, false);
|
|
221
|
+
if (value !== sent)
|
|
222
|
+
return value;
|
|
223
|
+
adoTokens.delete(known.id);
|
|
224
|
+
throw failed(account('ado', project), project, 'Azure DevOps refused the token (HTTP 401 or 203)');
|
|
225
|
+
}
|
|
226
|
+
return adoToken(project, fresh, false);
|
|
227
|
+
};
|
|
228
|
+
const ghToken = async (project, fresh) => {
|
|
229
|
+
const known = account('github', project);
|
|
230
|
+
const cached = ghTokens.get(known.id);
|
|
122
231
|
if (!fresh && cached && now() - cached.at < TOKEN_MAX_AGE_MS)
|
|
123
|
-
return cached.value;
|
|
124
|
-
const
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
if (
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
232
|
+
return { account: known, token: cached.value };
|
|
233
|
+
const found = await find('github', project);
|
|
234
|
+
const which = remember(found);
|
|
235
|
+
let token = found.token;
|
|
236
|
+
if (token === null) {
|
|
237
|
+
const user = which.id === MACHINE ? [] : ['--user', which.id];
|
|
238
|
+
const result = await exec('gh', ['auth', 'token', ...user], { env, timeoutMs: 30_000 });
|
|
239
|
+
token = result.stdout.trim();
|
|
240
|
+
if (result.code !== 0 || !token)
|
|
241
|
+
throw failed(which, project, `gh auth token failed: ${outputOf(result, 300)}`);
|
|
242
|
+
}
|
|
243
|
+
ghTokens.set(which.id, { at: now(), value: token });
|
|
244
|
+
return { account: which, token };
|
|
131
245
|
};
|
|
132
|
-
//
|
|
133
|
-
// `gh auth switch`. A 401 asks
|
|
134
|
-
// answer from GitHub (success, or an HTTP
|
|
135
|
-
// timeout or a network error says nothing about
|
|
136
|
-
//
|
|
137
|
-
// nothing, so a write is safe to send again), and a second is a lost login. The result, with what
|
|
138
|
-
// gh said when it failed.
|
|
246
|
+
// One gh command as the project's credential, its token in GH_TOKEN, so a project's gh user needs
|
|
247
|
+
// no `gh auth switch`. A 401 asks for the token again once (GitHub did nothing, so a write is safe
|
|
248
|
+
// to send again), and a second is a lost login. Only an answer from GitHub (success, or an HTTP
|
|
249
|
+
// status other than 401) says the token works: a timeout or a network error says nothing about
|
|
250
|
+
// the login. The result, with what gh said when it failed.
|
|
139
251
|
const ghExec = async (project, args, { input, probing = false, timeoutMs = 60_000 } = {}) => {
|
|
140
|
-
|
|
141
|
-
refuseWhileLost(which, project, probing);
|
|
252
|
+
refuseWhileLost(account('github', project), project, probing);
|
|
142
253
|
for (let fresh = probing;; fresh = true) {
|
|
254
|
+
const { account: which, token } = await ghToken(project, fresh);
|
|
143
255
|
const result = await exec('gh', args, {
|
|
144
|
-
env: { ...env, GH_TOKEN:
|
|
256
|
+
env: { ...env, GH_TOKEN: token },
|
|
145
257
|
...(input === undefined ? {} : { input }),
|
|
146
258
|
timeoutMs,
|
|
147
259
|
});
|
|
@@ -172,52 +284,82 @@ export function providerCredentials(deps) {
|
|
|
172
284
|
};
|
|
173
285
|
const gh = (project) => (path) => ghApi(project, path);
|
|
174
286
|
const ghWrite = (project) => (method, path, body) => ghApi(project, path, { body, method });
|
|
175
|
-
// Another gh command as the project's
|
|
287
|
+
// Another gh command as the project's credential, such as `run view --log-failed`; its output.
|
|
176
288
|
const ghRun = (project) => async (args) => {
|
|
177
289
|
const { result, said } = await ghExec(project, args, { timeoutMs: 120_000 });
|
|
178
290
|
if (result.code !== 0)
|
|
179
291
|
throw new Error(`gh ${args.join(' ')} failed: ${said}`);
|
|
180
292
|
return result.stdout;
|
|
181
293
|
};
|
|
182
|
-
// The project's Linear key, kept per
|
|
183
|
-
//
|
|
184
|
-
const linear = (project, probing = false) => {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
294
|
+
// The project's Linear key, kept per identity. The key is only returned: never logged, stored or
|
|
295
|
+
// put on a command line.
|
|
296
|
+
const linear = (project, probing = false) => ({
|
|
297
|
+
get account() {
|
|
298
|
+
return account('linear', project);
|
|
299
|
+
},
|
|
300
|
+
key: async (fresh = false) => {
|
|
301
|
+
const known = account('linear', project);
|
|
302
|
+
refuseWhileLost(known, project, probing);
|
|
303
|
+
const cached = linearKeys.get(known.id);
|
|
304
|
+
if (!fresh && cached !== undefined)
|
|
305
|
+
return cached;
|
|
306
|
+
const found = await find('linear', project);
|
|
307
|
+
const which = remember(found);
|
|
308
|
+
// find gives Linear a key or throws: it has no CLI login.
|
|
309
|
+
if (found.token === null)
|
|
310
|
+
throw failed(which, project, 'no Linear key');
|
|
311
|
+
linearKeys.set(which.id, found.token);
|
|
312
|
+
return found.token;
|
|
313
|
+
},
|
|
314
|
+
refused: (detail) => {
|
|
315
|
+
const known = account('linear', project);
|
|
316
|
+
linearKeys.delete(known.id);
|
|
317
|
+
return failed(known, project, detail);
|
|
318
|
+
},
|
|
319
|
+
worked: () => worked(account('linear', project), project),
|
|
320
|
+
});
|
|
206
321
|
const probe = async (provider, project) => {
|
|
207
|
-
const which = account(provider, project);
|
|
208
322
|
try {
|
|
209
323
|
if (provider === 'ado')
|
|
210
|
-
await
|
|
324
|
+
await probeAdo(project);
|
|
211
325
|
else if (provider === 'github')
|
|
212
326
|
await ghApi(project, 'user', { probing: true });
|
|
213
327
|
else
|
|
214
328
|
await probeLinear(linear(project, true));
|
|
215
|
-
return { account:
|
|
329
|
+
return { account: account(provider, project), error: null };
|
|
216
330
|
}
|
|
217
331
|
catch (error) {
|
|
218
|
-
return {
|
|
332
|
+
return {
|
|
333
|
+
account: error instanceof LoginNeeded ? error.account : account(provider, project),
|
|
334
|
+
error: error instanceof Error ? error.message : String(error),
|
|
335
|
+
};
|
|
219
336
|
}
|
|
220
337
|
};
|
|
338
|
+
// A fresh ADO credential. az vouches for its own token; a token is asked who it is on the project's
|
|
339
|
+
// organization, which is the only way to learn ADO takes it (it answers 401, or 203 with its
|
|
340
|
+
// sign-in page, when it doesn't).
|
|
341
|
+
const probeAdo = async (project) => {
|
|
342
|
+
adoTokens.delete(account('ado', project).id);
|
|
343
|
+
const value = await adoToken(project, true, true);
|
|
344
|
+
const which = account('ado', project);
|
|
345
|
+
if (which.source === 'cli-login')
|
|
346
|
+
return;
|
|
347
|
+
const organization = deps.adoOrganization?.(project) ?? null;
|
|
348
|
+
if (organization === null)
|
|
349
|
+
throw new Error('no Azure DevOps organization to ask whether it takes the token');
|
|
350
|
+
const response = await fetcher(adoOrgUrl({ organization }, 'connectionData', '7.1-preview'), {
|
|
351
|
+
headers: { authorization: value },
|
|
352
|
+
signal: AbortSignal.timeout(TIMEOUT_MS),
|
|
353
|
+
});
|
|
354
|
+
await response.body?.cancel();
|
|
355
|
+
if (response.status === 401 || response.status === 203) {
|
|
356
|
+
adoTokens.delete(which.id);
|
|
357
|
+
throw failed(which, project, `Azure DevOps refused the token (HTTP ${response.status})`);
|
|
358
|
+
}
|
|
359
|
+
if (!response.ok)
|
|
360
|
+
throw new Error(`Azure DevOps answered ${response.status}`);
|
|
361
|
+
worked(which, project);
|
|
362
|
+
};
|
|
221
363
|
const probeLinear = async (auth) => {
|
|
222
364
|
const secret = await auth.key(true);
|
|
223
365
|
const response = await fetcher(deps.linearUrl ?? LINEAR_API, {
|
|
@@ -243,22 +385,16 @@ export function providerCredentials(deps) {
|
|
|
243
385
|
probe,
|
|
244
386
|
};
|
|
245
387
|
}
|
|
246
|
-
// The
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
}
|
|
258
|
-
const target = which.id === MACHINE ? defaultLinearTarget(env) : which.id;
|
|
259
|
-
const found = await read(target, env);
|
|
260
|
-
if (found.found)
|
|
261
|
-
return { key: found.credential.secret };
|
|
262
|
-
return { key: null, reason: which.id === MACHINE ? `no LINEAR_API_KEY, and ${found.reason}` : found.reason };
|
|
388
|
+
// The account of a token in the generic credential `target`.
|
|
389
|
+
function tokenAccount(provider, target, id, source) {
|
|
390
|
+
const user = provider === 'linear' ? 'linear' : 'pat';
|
|
391
|
+
const whose = source === 'project-token' ? 'project token' : 'machine token';
|
|
392
|
+
return {
|
|
393
|
+
command: `cmdkey /generic:${target} /user:${user} /pass`,
|
|
394
|
+
id,
|
|
395
|
+
label: `${whose} in credential ${target}`,
|
|
396
|
+
provider,
|
|
397
|
+
source,
|
|
398
|
+
};
|
|
263
399
|
}
|
|
264
400
|
//# sourceMappingURL=credentials.js.map
|
package/build/credentials.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
|
package/build/daemon.js
CHANGED
|
@@ -12,6 +12,7 @@ import { consoleEscalations, unattendedEscalations } from "./console.js";
|
|
|
12
12
|
import { providerCredentials } from "./credentials.js";
|
|
13
13
|
import { ConductorError } from "./errors.js";
|
|
14
14
|
import { followUpService } from "./follow-ups.js";
|
|
15
|
+
import { storeOrganizations } from "./in-process.js";
|
|
15
16
|
import { inboxService } from "./inbox.js";
|
|
16
17
|
import { acquirePidLock, processAlive } from "./lock.js";
|
|
17
18
|
import { rotatingLog } from "./log.js";
|
|
@@ -196,6 +197,7 @@ export async function startDaemon(paths, { consoleGraceMs, keepaliveMs, ports =
|
|
|
196
197
|
// outside them. Each lost login is an event, and a re-probe ends its spell.
|
|
197
198
|
const credentials = ports.credentials ??
|
|
198
199
|
providerCredentials({
|
|
200
|
+
adoOrganization: storeOrganizations(opened),
|
|
199
201
|
onChange: loginEvents({ log, stopped: () => stopping !== undefined, store: opened }),
|
|
200
202
|
projects: config.projects,
|
|
201
203
|
});
|