@detergent-software/conductor 3.0.0-dev.18 → 3.0.0-dev.19

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.
@@ -1,12 +1,13 @@
1
- import { credentialSaved, readCredential as readWindowsCredential, } from "./credential.js";
2
1
  import { ConductorError } from "./errors.js";
2
+ import { secretStore } from "./host/secrets.js";
3
3
  import { adoBasic, adoOrgUrl, NotFound } from "./lib/providers/index.js";
4
4
  import { outputOf, run as runCommand } from "./run.js";
5
5
  // Each project's credentials (design note v2, section 8): every provider takes the first credential
6
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
7
+ // 1. project-token: a token scoped to the project, in the machine's secret store (host/secrets.ts)
8
+ // under the credential that machine config names (`projects.<name>.ado.token`, `github.token`,
9
+ // `linear.credential`);
10
+ // 2. machine-token: the machine's own token, from a conductor-only env var or the store
10
11
  // (MACHINE_TOKENS), so another tool's env never changes what the conductor signs in as;
11
12
  // 3. cli-login: `az` (the project's tenant, else the default account) or `gh` (the project's user,
12
13
  // else the active account), last because it usually carries the widest permissions. Linear has
@@ -21,8 +22,8 @@ const ADO_RESOURCE = '499b84ac-1321-427f-aa17-267ca6975798';
21
22
  // An az token lasts about an hour, a gh token until it is revoked; both are asked again well before,
22
23
  // and a token's credential is read again as often, so a replaced or removed one is seen.
23
24
  const TOKEN_MAX_AGE_MS = 20 * 60_000;
24
- export const LINEAR_CREDENTIAL = 'atk-conductor-linear';
25
- // The machine's own token for each provider: the env vars in order, then the generic credential.
25
+ export const LINEAR_CREDENTIAL = 'conductor-linear';
26
+ // The machine's own token for each provider: the env vars in order, then the store's credential.
26
27
  export const MACHINE_TOKENS = {
27
28
  ado: { credential: 'conductor-ado', env: ['CONDUCTOR_ADO_TOKEN'] },
28
29
  github: { credential: 'conductor-github', env: ['CONDUCTOR_GITHUB_TOKEN'] },
@@ -53,11 +54,11 @@ export class LoginNeeded extends ConductorError {
53
54
  export function loginText(account, project) {
54
55
  return `${account.provider} login lost${project === null ? '' : ` for ${project}`} (${account.label})`;
55
56
  }
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.
57
+ // The credential the machine's own token is saved under. For Linear, CONDUCTOR_LINEAR_CREDENTIAL
58
+ // names another.
58
59
  export function machineTarget(provider, env) {
59
60
  if (provider === 'linear')
60
- return env.ATK_CONDUCT_LINEAR_CREDENTIAL?.trim() || LINEAR_CREDENTIAL;
61
+ return env.CONDUCTOR_LINEAR_CREDENTIAL?.trim() || LINEAR_CREDENTIAL;
61
62
  return MACHINE_TOKENS[provider].credential;
62
63
  }
63
64
  export function providerCredentials(deps) {
@@ -65,9 +66,7 @@ export function providerCredentials(deps) {
65
66
  const fetcher = deps.fetch ?? globalThis.fetch;
66
67
  const now = deps.now ?? Date.now;
67
68
  const exec = deps.run ?? runCommand;
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);
69
+ const secrets = deps.secrets ?? secretStore();
71
70
  const lostNow = new Map();
72
71
  // Each identity's authorization (ADO's header value, gh's token, Linear's key) and the source it
73
72
  // came from, shared by every project with that identity. The calls that read them name their own
@@ -103,7 +102,7 @@ export function providerCredentials(deps) {
103
102
  const entry = project === null ? undefined : deps.projects[project];
104
103
  const target = provider === 'linear' ? entry?.linear?.credential : entry?.[provider]?.token;
105
104
  if (target !== undefined)
106
- return tokenAccount(provider, target, target, 'project-token');
105
+ return tokenAccount(secrets, provider, target, target, 'project-token');
107
106
  switch (provider) {
108
107
  case 'ado': {
109
108
  const tenant = entry?.ado?.tenant ?? null;
@@ -126,7 +125,7 @@ export function providerCredentials(deps) {
126
125
  case 'linear': {
127
126
  const shown = machineTarget('linear', env);
128
127
  return {
129
- command: `cmdkey /generic:${shown} /user:linear /pass`,
128
+ command: secrets.saveCommand(shown, 'linear'),
130
129
  id: MACHINE,
131
130
  label: `${MACHINE_TOKENS.linear.env.join(', ')} or credential ${shown}`,
132
131
  provider,
@@ -146,7 +145,7 @@ export function providerCredentials(deps) {
146
145
  const base = configured(provider, project);
147
146
  const as = (found) => ({ ...found, id: base.id });
148
147
  if (base.source === 'project-token') {
149
- const got = await read(base.id, env);
148
+ const got = await secrets.read(base.id, env);
150
149
  if (!got.found)
151
150
  throw failed(base, project, got.reason);
152
151
  return { account: base, token: got.credential.secret };
@@ -165,12 +164,11 @@ export function providerCredentials(deps) {
165
164
  }
166
165
  }
167
166
  // 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.
167
+ // (the cheap check first: on Windows it starts no PowerShell). Linear has nothing after it.
170
168
  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);
169
+ const stored = as(tokenAccount(secrets, provider, target, MACHINE, 'machine-token'));
170
+ const saved = await secrets.saved(target, env);
171
+ const got = saved === 'missing' ? null : await secrets.read(target, env);
174
172
  if (got?.found)
175
173
  return { account: stored, token: got.credential.secret };
176
174
  if (provider === 'linear') {
@@ -383,18 +381,22 @@ export function providerCredentials(deps) {
383
381
  linear: (project) => linear(project),
384
382
  lost: () => [...lostNow.values()],
385
383
  probe,
384
+ saveCommand: (provider, target) => secrets.saveCommand(target, tokenUser(provider)),
386
385
  };
387
386
  }
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';
387
+ // The account of a token in the store's credential `target`.
388
+ function tokenAccount(secrets, provider, target, id, source) {
391
389
  const whose = source === 'project-token' ? 'project token' : 'machine token';
392
390
  return {
393
- command: `cmdkey /generic:${target} /user:${user} /pass`,
391
+ command: secrets.saveCommand(target, tokenUser(provider)),
394
392
  id,
395
393
  label: `${whose} in credential ${target}`,
396
394
  provider,
397
395
  source,
398
396
  };
399
397
  }
398
+ // The user name a token's credential is saved with.
399
+ function tokenUser(provider) {
400
+ return provider === 'linear' ? 'linear' : 'pat';
401
+ }
400
402
  //# sourceMappingURL=credentials.js.map
@@ -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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"}
@@ -0,0 +1,109 @@
1
+ // Windows generic credentials (Credential Manager). Node can't read Credential Manager and `cmdkey`
2
+ // can't print a secret, so PowerShell calls advapi32's CredRead. The secret is only returned: never
3
+ // logged, stored or put on a command line.
4
+ // The machine credentials the conductor named with an ATK prefix before ATK-529. A read of the new
5
+ // name that finds none copies the old one to it, once, with its user name, secret and persistence,
6
+ // and leaves the old one where it is. After that the new one is found, so nothing reads the old name.
7
+ export const RENAMED_TARGETS = {
8
+ 'conductor-linear': 'atk-conductor-linear',
9
+ 'conductor-pushover': 'atk-conductor-pushover',
10
+ };
11
+ const NOT_FOUND = 3;
12
+ // Win32 ERROR_NOT_FOUND: CredRead's "no such credential". Any other failure is a broken read.
13
+ const ERROR_NOT_FOUND = 1168;
14
+ // Writes the user name, a newline, then the password. With CONDUCTOR_CRED_FROM set, a missing target
15
+ // is copied from that credential first; a copy that fails still returns the secret, and the next read
16
+ // tries the copy again.
17
+ const CRED_READ = `
18
+ $ErrorActionPreference = 'Stop'
19
+ try {
20
+ Add-Type -Namespace Conductor -Name Cred -MemberDefinition @'
21
+ [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
22
+ public static extern bool CredRead(string target, int type, int flags, out System.IntPtr cred);
23
+ [DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
24
+ public static extern bool CredWrite(ref CREDENTIAL cred, int flags);
25
+ [DllImport("advapi32.dll")]
26
+ public static extern void CredFree(System.IntPtr cred);
27
+ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
28
+ public struct CREDENTIAL { public int Flags; public int Type; public string TargetName; public string Comment;
29
+ public long LastWritten; public int CredentialBlobSize; public System.IntPtr CredentialBlob; public int Persist;
30
+ public int AttributeCount; public System.IntPtr Attributes; public string TargetAlias; public string UserName; }
31
+ '@
32
+ $p = [IntPtr]::Zero
33
+ $copy = $false
34
+ if (-not [Conductor.Cred]::CredRead($env:CONDUCTOR_CRED_TARGET, 1, 0, [ref]$p)) {
35
+ $code = [Runtime.InteropServices.Marshal]::GetLastWin32Error()
36
+ if ($code -ne ${ERROR_NOT_FOUND}) { [Console]::Error.WriteLine("CredRead failed with Win32 error $code"); exit 4 }
37
+ if (-not $env:CONDUCTOR_CRED_FROM) { exit ${NOT_FOUND} }
38
+ if (-not [Conductor.Cred]::CredRead($env:CONDUCTOR_CRED_FROM, 1, 0, [ref]$p)) {
39
+ $code = [Runtime.InteropServices.Marshal]::GetLastWin32Error()
40
+ if ($code -eq ${ERROR_NOT_FOUND}) { exit ${NOT_FOUND} }
41
+ [Console]::Error.WriteLine("CredRead failed with Win32 error $code"); exit 4
42
+ }
43
+ $copy = $true
44
+ }
45
+ try {
46
+ $c = [Runtime.InteropServices.Marshal]::PtrToStructure($p, [type][Conductor.Cred+CREDENTIAL])
47
+ if ($copy) {
48
+ $n = $c
49
+ $n.Flags = 0; $n.TargetName = $env:CONDUCTOR_CRED_TARGET; $n.TargetAlias = $null; $n.LastWritten = 0
50
+ $n.AttributeCount = 0; $n.Attributes = [IntPtr]::Zero
51
+ if (-not [Conductor.Cred]::CredWrite([ref]$n, 0)) {
52
+ [Console]::Error.WriteLine("CredWrite failed with Win32 error " + [Runtime.InteropServices.Marshal]::GetLastWin32Error())
53
+ }
54
+ }
55
+ [Console]::Out.Write([string]$c.UserName + [char]10)
56
+ [Console]::Out.Write([Runtime.InteropServices.Marshal]::PtrToStringUni($c.CredentialBlob, $c.CredentialBlobSize / 2))
57
+ } finally { [Conductor.Cred]::CredFree($p) }
58
+ } catch { [Console]::Error.WriteLine($_.Exception.Message); exit 4 }
59
+ `;
60
+ export function credentialManager(run, renamed = RENAMED_TARGETS) {
61
+ // Whether `target` is saved, from `cmdkey /list:<target>`, which prints no secret and starts no
62
+ // PowerShell.
63
+ const listed = async (target, env) => {
64
+ const result = await run('cmdkey', [`/list:${target}`], { env, timeoutMs: 15_000 });
65
+ if (result.code !== 0)
66
+ return 'unknown';
67
+ if (/\*\s*NONE\s*\*/.test(result.stdout))
68
+ return 'missing';
69
+ return /^\s*Target:/m.test(result.stdout) ? 'saved' : 'unknown';
70
+ };
71
+ return {
72
+ name: 'Credential Manager',
73
+ read: async (target, env) => {
74
+ const from = renamed[target];
75
+ const result = await run('powershell.exe', ['-NoProfile', '-NonInteractive', '-EncodedCommand', Buffer.from(CRED_READ, 'utf16le').toString('base64')], {
76
+ // Always set, so a CONDUCTOR_CRED_FROM in the daemon's own env can never start a copy.
77
+ env: { ...env, CONDUCTOR_CRED_FROM: from ?? '', CONDUCTOR_CRED_TARGET: target },
78
+ timeoutMs: 30_000,
79
+ });
80
+ if (result.code === 0) {
81
+ const newline = result.stdout.indexOf('\n');
82
+ const secret = result.stdout.slice(newline + 1).trim();
83
+ if (newline >= 0 && secret)
84
+ return { credential: { secret, user: result.stdout.slice(0, newline).trim() }, found: true };
85
+ }
86
+ if (result.code === NOT_FOUND)
87
+ return { found: false, missing: true, reason: `no credential ${target}` };
88
+ // Never echo stdout here: on a partial failure it could hold the secret.
89
+ const line = result.stderr
90
+ .split(/\r?\n/)
91
+ .map((l) => l.trim())
92
+ .find((l) => l && !l.startsWith('#< CLIXML') && !l.startsWith('<Objs'));
93
+ return {
94
+ found: false,
95
+ missing: false,
96
+ reason: `the credential ${target} couldn't be read (${result.error ?? line ?? `exit ${result.code}`})`,
97
+ };
98
+ },
99
+ saveCommand: (target, user) => `cmdkey /generic:${target} /user:${user} /pass`,
100
+ // A new name that isn't saved yet counts as saved while its old name is, so the read that
101
+ // copies it runs.
102
+ saved: async (target, env) => {
103
+ const saved = await listed(target, env);
104
+ const from = renamed[target];
105
+ return saved === 'missing' && from !== undefined ? listed(from, env) : saved;
106
+ },
107
+ };
108
+ }
109
+ //# sourceMappingURL=credential-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-manager.js","sourceRoot":"","sources":["../../src/host/credential-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ // macOS generic passwords in the login keychain, through `security`: the target is the item's
2
+ // service, its user name the account. `security` answers 44 for an item that isn't there.
3
+ const NOT_FOUND = 44;
4
+ // The item's account from `security find-generic-password`'s attributes: `"acct"<blob>="linear"`.
5
+ // An account saved as hex (not printable) reads as none.
6
+ export function account(attributes) {
7
+ return /"acct"<blob>="((?:[^"\\]|\\.)*)"/.exec(attributes)?.[1] ?? '';
8
+ }
9
+ export function keychain(run, keychainFile) {
10
+ // A keychain file of its own, for the real-OS tests; else the user's search list.
11
+ const where = keychainFile === undefined ? [] : [keychainFile];
12
+ const find = (args, env) => run('security', ['find-generic-password', ...args, ...where], { env, timeoutMs: 30_000 });
13
+ // Never echo stdout in a reason: on a partial failure it could hold the secret.
14
+ const failed = (target, result) => {
15
+ const why = result.error ?? (result.stderr.trim() || `exit ${result.code}`);
16
+ if (/ENOENT/.test(why))
17
+ return { found: false, missing: true, reason: 'no `security` command to ask' };
18
+ return { found: false, missing: false, reason: `the keychain item ${target} couldn't be read (${why})` };
19
+ };
20
+ return {
21
+ name: 'the login keychain',
22
+ // The attributes first (no secret is printed without -w), then the secret of the item with that
23
+ // account, so the two come from one item even when another has the same service.
24
+ read: async (target, env) => {
25
+ const attributes = await find(['-s', target], env);
26
+ if (attributes.code === NOT_FOUND)
27
+ return { found: false, missing: true, reason: `no keychain item ${target}` };
28
+ if (attributes.code !== 0)
29
+ return failed(target, attributes);
30
+ const user = account(attributes.stdout);
31
+ const result = await find(['-s', target, ...(user ? ['-a', user] : []), '-w'], env);
32
+ const secret = result.stdout.replace(/\r?\n$/, '');
33
+ if (result.code !== 0 || !secret)
34
+ return failed(target, result);
35
+ return { credential: { secret, user }, found: true };
36
+ },
37
+ // Delete first: an item is one per service and account, so saving under another user name would
38
+ // leave the old item beside it. -w last with no value: security asks for the password.
39
+ saveCommand: (target, user) => `security delete-generic-password -s ${target}; security add-generic-password -s ${target} -a ${user} -w`,
40
+ // A missing item costs read one call, the same as asking first.
41
+ saved: async () => 'unknown',
42
+ };
43
+ }
44
+ //# sourceMappingURL=keychain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../src/host/keychain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ // Linux secrets in the Secret Service (GNOME Keyring, KeePassXC and others), through libsecret's
2
+ // `secret-tool`: an item with the attributes service=conductor and target=<target>, its user name in
3
+ // a `user` attribute. secret-tool needs a D-Bus session with a Secret Service on it; a headless box
4
+ // without one can't read, and the env fallback (secrets.ts) stands in.
5
+ const SERVICE = 'conductor';
6
+ export function libsecret(run) {
7
+ const tool = (args, env) => run('secret-tool', args, { env, timeoutMs: 30_000 });
8
+ const lookup = (target, env) => tool(['lookup', 'service', SERVICE, 'target', target], env);
9
+ return {
10
+ name: 'libsecret',
11
+ read: async (target, env) => {
12
+ const result = await lookup(target, env);
13
+ const secret = result.stdout.replace(/\r?\n$/, '');
14
+ if (result.code === 0 && secret) {
15
+ // search prints the item's attributes, and its secret, which only the user line is read from.
16
+ const found = await tool(['search', 'service', SERVICE, 'target', target], env);
17
+ return { credential: { secret, user: userOf(`${found.stdout}\n${found.stderr}`) }, found: true };
18
+ }
19
+ if (result.error !== null && /ENOENT/.test(result.error))
20
+ return { found: false, missing: true, reason: 'no secret-tool (libsecret-tools) to ask' };
21
+ // lookup exits 1 and says nothing for an item that isn't there.
22
+ if (result.code === 1 && !result.stderr.trim())
23
+ return { found: false, missing: true, reason: `no libsecret item ${target}` };
24
+ // Never echo stdout here: on a partial failure it could hold the secret.
25
+ const why = result.error ?? (result.stderr.trim().split(/\r?\n/)[0] || `exit ${result.code}`);
26
+ return { found: false, missing: false, reason: `the libsecret item ${target} couldn't be read (${why})` };
27
+ },
28
+ // Clear first: store replaces only an item whose attributes are all the same, so saving under
29
+ // another user name would leave the old item beside it, and lookup and search could each pick
30
+ // another one. secret-tool store asks for the secret.
31
+ saveCommand: (target, user) => `secret-tool clear service ${SERVICE} target ${target}; secret-tool store --label=${target} service ${SERVICE} target ${target} user ${user}`,
32
+ // Asking would be a lookup, which reads the secret: read decides instead.
33
+ saved: async () => 'unknown',
34
+ };
35
+ }
36
+ // The `user` attribute from `secret-tool search`: `attribute.user = linear`.
37
+ export function userOf(search) {
38
+ return /^attribute\.user = (.*)$/m.exec(search)?.[1]?.trim() ?? '';
39
+ }
40
+ //# sourceMappingURL=libsecret.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"libsecret.js","sourceRoot":"","sources":["../../src/host/libsecret.ts"],"names":[],"mappings":"AAEA,iGAAiG;AACjG,qGAAqG;AACrG,oGAAoG;AACpG,uEAAuE;AACvE,MAAM,OAAO,GAAG,WAAW,CAAC;AAE5B,MAAM,UAAU,SAAS,CAAC,GAAQ;IAChC,MAAM,IAAI,GAAG,CAAC,IAAuB,EAAE,GAAsB,EAAE,EAAE,CAC/D,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,GAAsB,EAAE,EAAE,CACxD,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;IAE9D,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAA2B,EAAE;YACnD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;gBAChC,8FAA8F;gBAC9F,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;gBAChF,OAAO,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACnG,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBACtD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,yCAAyC,EAAE,CAAC;YAC5F,gEAAgE;YAChE,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;gBAC5C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,MAAM,EAAE,EAAE,CAAC;YAChF,yEAAyE;YACzE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9F,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC;QAC5G,CAAC;QACD,8FAA8F;QAC9F,8FAA8F;QAC9F,sDAAsD;QACtD,WAAW,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAC5B,6BAA6B,OAAO,WAAW,MAAM,+BAA+B,MAAM,YAAY,OAAO,WAAW,MAAM,SAAS,IAAI,EAAE;QAC/I,0EAA0E;QAC1E,KAAK,EAAE,KAAK,IAA8B,EAAE,CAAC,SAAS;KACvD,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,MAAM,CAAC,MAAc;IACnC,OAAO,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrE,CAAC"}
@@ -0,0 +1,4 @@
1
+ export function hostPlatform(platform = process.platform) {
2
+ return platform === 'win32' || platform === 'darwin' ? platform : 'linux';
3
+ }
4
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/host/platform.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,YAAY,CAAC,WAA4B,OAAO,CAAC,QAAQ;IACvE,OAAO,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { run as runCommand } from "../run.js";
2
+ import { credentialManager } from "./credential-manager.js";
3
+ import { keychain } from "./keychain.js";
4
+ import { libsecret } from "./libsecret.js";
5
+ import { hostPlatform } from "./platform.js";
6
+ // The env var that stands in for the credential `target` where the store has none, or can't be
7
+ // read (a headless Linux box with no keyring): CONDUCTOR_SECRET_ and the target in upper snake
8
+ // case, with its user name, when one is needed, in the same name plus _USER.
9
+ export function secretEnvName(target) {
10
+ return `CONDUCTOR_SECRET_${target
11
+ .toUpperCase()
12
+ .replace(/[^A-Z0-9]+/g, '_')
13
+ .replace(/^_+|_+$/g, '')}`;
14
+ }
15
+ // This platform's store, with the env fallback.
16
+ export function secretStore({ platform = hostPlatform(), run = runCommand, } = {}) {
17
+ const stores = {
18
+ darwin: () => keychain(run),
19
+ linux: () => libsecret(run),
20
+ win32: () => credentialManager(run),
21
+ };
22
+ return withEnvFallback(stores[platform]());
23
+ }
24
+ // The store, else secretEnvName(target) from the environment.
25
+ export function withEnvFallback(store) {
26
+ const fromEnv = (target, env) => {
27
+ const name = secretEnvName(target);
28
+ const secret = env[name]?.trim();
29
+ return secret ? { secret, user: env[`${name}_USER`]?.trim() ?? '' } : null;
30
+ };
31
+ return {
32
+ name: store.name,
33
+ read: async (target, env) => {
34
+ const got = await store.read(target, env);
35
+ if (got.found)
36
+ return got;
37
+ const credential = fromEnv(target, env);
38
+ return credential
39
+ ? { credential, found: true }
40
+ : { ...got, reason: `${got.reason}, and no ${secretEnvName(target)}` };
41
+ },
42
+ saveCommand: (target, user) => store.saveCommand(target, user),
43
+ saved: async (target, env) => (fromEnv(target, env) ? 'saved' : store.saved(target, env)),
44
+ };
45
+ }
46
+ //# sourceMappingURL=secrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/host/secrets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,UAAU,EAAmC,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAqB,YAAY,EAAE,MAAM,eAAe,CAAC;AA8BhE,+FAA+F;AAC/F,+FAA+F;AAC/F,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,oBAAoB,MAAM;SAC9B,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC;AAC/B,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,GAAG,YAAY,EAAE,EACzB,GAAG,GAAG,UAAU,MAC0B,EAAE;IAC5C,MAAM,MAAM,GAA4C;QACtD,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC3B,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;QAC3B,KAAK,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC;KACpC,CAAC;IACF,OAAO,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,eAAe,CAAC,KAAkB;IAChD,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,GAAsB,EAAqB,EAAE;QAC5E,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7E,CAAC,CAAC;IACF,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;YAC1B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC1C,IAAI,GAAG,CAAC,KAAK;gBAAE,OAAO,GAAG,CAAC;YAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACxC,OAAO,UAAU;gBACf,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;gBAC7B,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,YAAY,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAC3E,CAAC;QACD,WAAW,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;QAC9D,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC1F,CAAC;AACJ,CAAC"}
@@ -106,6 +106,7 @@ export async function checkProject(given, project, options) {
106
106
  const deps = {
107
107
  ...given,
108
108
  credentials: {
109
+ ...given.credentials,
109
110
  probe: (provider, name) => {
110
111
  const key = `${provider}:${name}`;
111
112
  const known = probes.get(key) ?? given.credentials.probe(provider, name);
@@ -236,8 +237,7 @@ async function authCheck(deps, profile) {
236
237
  const scoped = wide.map((provider) => {
237
238
  const target = `conductor-${profile.name}-${provider}`;
238
239
  const key = provider === 'linear' ? 'linear.credential' : `${provider}.token`;
239
- const user = provider === 'linear' ? 'linear' : 'pat';
240
- return `for ${provider}, ${SCOPES[provider]}: cmdkey /generic:${target} /user:${user} /pass, then set projects.${profile.name}.${key} to "${target}" in config.json`;
240
+ return `for ${provider}, ${SCOPES[provider]}: ${deps.credentials.saveCommand(provider, target)}, then set projects.${profile.name}.${key} to "${target}" in config.json`;
241
241
  });
242
242
  return {
243
243
  details: [...details, ...scoped],