@detergent-software/conductor 1.3.0-dev.1 → 1.3.0-dev.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +34 -5
- package/build/brief.js +5 -6
- package/build/brief.js.map +1 -1
- package/build/claude.js +23 -2
- package/build/claude.js.map +1 -1
- package/build/cli.js +4 -2
- package/build/cli.js.map +1 -1
- package/build/conditions.js +28 -3
- package/build/conditions.js.map +1 -1
- package/build/config.js +23 -1
- package/build/config.js.map +1 -1
- package/build/credentials.js +240 -0
- package/build/credentials.js.map +1 -0
- package/build/daemon.js +21 -10
- package/build/daemon.js.map +1 -1
- package/build/errors.js +3 -0
- package/build/errors.js.map +1 -1
- package/build/help.js +5 -0
- package/build/help.js.map +1 -1
- package/build/inbox.js +47 -3
- package/build/inbox.js.map +1 -1
- package/build/logins.js +50 -0
- package/build/logins.js.map +1 -0
- package/build/manager.js +11 -2
- package/build/manager.js.map +1 -1
- package/build/notes.js +7 -6
- package/build/notes.js.map +1 -1
- package/build/rule-actions.js +4 -0
- package/build/rule-actions.js.map +1 -1
- package/build/rules.js +2 -0
- package/build/rules.js.map +1 -1
- package/build/store.js +3 -1
- package/build/store.js.map +1 -1
- package/build/train-cli.js +4 -2
- package/build/train-cli.js.map +1 -1
- package/build/train.js +2 -4
- package/build/train.js.map +1 -1
- package/build/wait.js +15 -6
- package/build/wait.js.map +1 -1
- package/build/watchers/ado-api.js +1 -27
- package/build/watchers/ado-api.js.map +1 -1
- package/build/watchers/ado.js +25 -12
- package/build/watchers/ado.js.map +1 -1
- package/build/watchers/boards-brief.js +5 -4
- package/build/watchers/boards-brief.js.map +1 -1
- package/build/watchers/boards-queue.js +1 -1
- package/build/watchers/boards-queue.js.map +1 -1
- package/build/watchers/boards-writes.js +2 -2
- package/build/watchers/boards-writes.js.map +1 -1
- package/build/watchers/boards.js +15 -9
- package/build/watchers/boards.js.map +1 -1
- package/build/watchers/github.js +9 -16
- package/build/watchers/github.js.map +1 -1
- package/build/watchers/index.js +13 -6
- package/build/watchers/index.js.map +1 -1
- package/build/watchers/linear-api.js +49 -36
- package/build/watchers/linear-api.js.map +1 -1
- package/build/watchers/linear-labels.js +4 -3
- package/build/watchers/linear-labels.js.map +1 -1
- package/build/watchers/linear-queue.js +5 -5
- package/build/watchers/linear-queue.js.map +1 -1
- package/build/watchers/linear.js +67 -47
- package/build/watchers/linear.js.map +1 -1
- package/build/watchers/login.js +32 -0
- package/build/watchers/login.js.map +1 -0
- package/build/watchers/source.js +6 -4
- package/build/watchers/source.js.map +1 -1
- package/package.json +1 -1
- package/build/watchers/linear-key.js +0 -17
- package/build/watchers/linear-key.js.map +0 -1
package/build/conditions.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { parseLocalTime } from "./clock.js";
|
|
2
|
+
import { PROVIDERS } from "./credentials.js";
|
|
2
3
|
import { ConductorError } from "./errors.js";
|
|
3
4
|
export const PR_EVENTS = ['merged', 'checks', 'comment'];
|
|
4
5
|
const ITEM_FIELDS = ['state', 'label', 'note'];
|
|
@@ -12,6 +13,8 @@ export function formatCondition(c) {
|
|
|
12
13
|
return `health:${c.env}:${c.field}=${c.value}`;
|
|
13
14
|
case 'item':
|
|
14
15
|
return `item:${c.tracker}:${c.item}:${c.field}=${c.value}`;
|
|
16
|
+
case 'login':
|
|
17
|
+
return `login:${c.provider}:${c.project}`;
|
|
15
18
|
case 'npm':
|
|
16
19
|
return `npm:${c.package}@${c.version}:${c.tag}`;
|
|
17
20
|
case 'pr':
|
|
@@ -26,7 +29,7 @@ export function formatCondition(c) {
|
|
|
26
29
|
// pr <n> merged|checks|comment [--repo owner/name] run <pipeline> <id> [done]
|
|
27
30
|
// npm <version> [--tag <t>] [--package <p>] health <env> --version <x> | --commit <sha>
|
|
28
31
|
// approval [<item>] item <item> <state> | state|label|note <value…>
|
|
29
|
-
// time <when>
|
|
32
|
+
// login ado|github|linear time <when>
|
|
30
33
|
export function fromVerbs(args, { item, now = new Date(), options, profile }) {
|
|
31
34
|
const [verb, ...rest] = args;
|
|
32
35
|
const usage = (line) => {
|
|
@@ -61,6 +64,16 @@ export function fromVerbs(args, { item, now = new Date(), options, profile }) {
|
|
|
61
64
|
const value = named && more.length > 0 ? more.join(' ') : [first, ...more].join(' ');
|
|
62
65
|
return parseCondition(`item:${trackerOf(profile)}:${target}:${field}=${value}`);
|
|
63
66
|
}
|
|
67
|
+
case 'login': {
|
|
68
|
+
const [provider] = rest;
|
|
69
|
+
if (!provider || rest.length > 1)
|
|
70
|
+
return usage(`login ${PROVIDERS.join('|')}`);
|
|
71
|
+
if (!profile)
|
|
72
|
+
throw new ConductorError("which project's login? run it in a worktree with .claude/conductor.json", [
|
|
73
|
+
`or give the full form, such as login:${provider}:atk`,
|
|
74
|
+
]);
|
|
75
|
+
return parseCondition(`login:${provider}:${profile.name}`);
|
|
76
|
+
}
|
|
64
77
|
case 'npm': {
|
|
65
78
|
const [version] = rest;
|
|
66
79
|
const pkg = options.package ?? profile?.npm?.package;
|
|
@@ -96,7 +109,7 @@ export function fromVerbs(args, { item, now = new Date(), options, profile }) {
|
|
|
96
109
|
if (verb !== undefined && rest.length === 0 && verb.includes(':'))
|
|
97
110
|
return parseCondition(verb);
|
|
98
111
|
throw new ConductorError(`unknown wait "${args.join(' ')}"`, [
|
|
99
|
-
'verbs: pr, run, npm, health, approval, item, time; or a full form such as pr:ado:<repo>#<n>:merged',
|
|
112
|
+
'verbs: pr, run, npm, health, approval, item, login, time; or a full form such as pr:ado:<repo>#<n>:merged',
|
|
100
113
|
]);
|
|
101
114
|
}
|
|
102
115
|
}
|
|
@@ -132,6 +145,13 @@ export function parseCondition(text) {
|
|
|
132
145
|
}
|
|
133
146
|
return { field, item: match[2].toUpperCase(), kind, tracker: trackerKind(match[1]), value: match[4].trim() };
|
|
134
147
|
}
|
|
148
|
+
case 'login': {
|
|
149
|
+
const match = /^([a-z]+):([a-z][a-z0-9-]*)$/.exec(rest);
|
|
150
|
+
const provider = PROVIDERS.find((p) => p === match?.[1]);
|
|
151
|
+
if (!provider || !match?.[2])
|
|
152
|
+
return fail(`login:<${PROVIDERS.join('|')}>:<project>, such as login:ado:atk`);
|
|
153
|
+
return { kind, project: match[2], provider };
|
|
154
|
+
}
|
|
135
155
|
case 'npm': {
|
|
136
156
|
// A scoped package starts with @, so the version is after the last @.
|
|
137
157
|
const match = /^(@?[^@:\s]+)@([^@:\s]+):([^:\s]+)$/.exec(rest);
|
|
@@ -160,7 +180,7 @@ export function parseCondition(text) {
|
|
|
160
180
|
return { at: at.toISOString(), kind };
|
|
161
181
|
}
|
|
162
182
|
default:
|
|
163
|
-
return fail('<kind>:<details>; kinds: pr, run, npm, health, approval, item, time');
|
|
183
|
+
return fail('<kind>:<details>; kinds: pr, run, npm, health, approval, item, login, time');
|
|
164
184
|
}
|
|
165
185
|
}
|
|
166
186
|
// A PR's link as a worker's PR (prRef), or null when it isn't one: an Azure DevOps
|
|
@@ -191,6 +211,8 @@ export function sourceOf(c) {
|
|
|
191
211
|
return c.tracker === 'linear' ? 'linear' : 'ado';
|
|
192
212
|
case 'health':
|
|
193
213
|
return 'health';
|
|
214
|
+
case 'login':
|
|
215
|
+
return 'login';
|
|
194
216
|
case 'npm':
|
|
195
217
|
return 'npm';
|
|
196
218
|
case 'pr':
|
|
@@ -210,6 +232,9 @@ export function uncheckable(c, profile) {
|
|
|
210
232
|
}
|
|
211
233
|
if (c.kind === 'health' && !profile?.health?.[c.env])
|
|
212
234
|
return `the project's profile has no health URL for "${c.env}"`;
|
|
235
|
+
if (c.kind === 'login' && profile && c.project !== profile.name) {
|
|
236
|
+
return `the wait is on ${c.project}'s login, and the worker's project is ${profile.name}`;
|
|
237
|
+
}
|
|
213
238
|
if ((c.kind === 'approval' || c.kind === 'item') &&
|
|
214
239
|
c.tracker === 'ado-boards' &&
|
|
215
240
|
profile?.tracker.kind !== 'ado-boards') {
|
package/build/conditions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditions.js","sourceRoot":"","sources":["../src/conditions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conditions.js","sourceRoot":"","sources":["../src/conditions.ts"],"names":[],"mappings":"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"}
|
package/build/config.js
CHANGED
|
@@ -36,8 +36,23 @@ export const notifyRuleSchema = z.strictObject({
|
|
|
36
36
|
export const BUILT_IN_PROFILES = {
|
|
37
37
|
away: [{ to: ['pushover'] }],
|
|
38
38
|
default: [{ to: ['remote-control', 'pushover'] }],
|
|
39
|
-
focus: [
|
|
39
|
+
focus: [
|
|
40
|
+
{ kinds: ['npm-otp', 'permission', 'failed', 'conflict', 'jason', 'login'], to: ['remote-control', 'pushover'] },
|
|
41
|
+
],
|
|
40
42
|
};
|
|
43
|
+
// The accounts one project's provider calls use (credentials.ts). Each is optional: without it,
|
|
44
|
+
// the machine's own login (az's default account, gh's active account, the machine's Linear key).
|
|
45
|
+
// The tenant reaches `az` through a shell on Windows, so it is a tenant id or domain and nothing else.
|
|
46
|
+
const projectAccountsSchema = z.strictObject({
|
|
47
|
+
ado: z
|
|
48
|
+
.strictObject({ tenant: z.string().regex(/^[\w-]+(\.[\w-]+)*$/, 'a tenant id or domain, such as contoso.com') })
|
|
49
|
+
.optional(),
|
|
50
|
+
github: z
|
|
51
|
+
.strictObject({ user: z.string().regex(/^[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?$/, 'a GitHub user name') })
|
|
52
|
+
.optional(),
|
|
53
|
+
// The generic credential (Credential Manager) whose password is the project's Linear key.
|
|
54
|
+
linear: z.strictObject({ credential: z.string().trim().min(1) }).optional(),
|
|
55
|
+
});
|
|
41
56
|
// ~/.conductor/config.json: machine settings. Strict, so a misspelt key fails startup instead of
|
|
42
57
|
// being ignored. Rules live beside it, in rules.json (rules-service.ts).
|
|
43
58
|
export const configSchema = z.strictObject({
|
|
@@ -101,6 +116,11 @@ export const configSchema = z.strictObject({
|
|
|
101
116
|
}),
|
|
102
117
|
// The API's port on 127.0.0.1. 0 lets the OS pick one; clients find it in the port file.
|
|
103
118
|
port: z.int().min(0).max(65535).default(0),
|
|
119
|
+
// Each project's accounts, by its profile's name (providers design note, section 6). They are
|
|
120
|
+
// the machine's, not the repo's, so they live here and not in .claude/conductor.json.
|
|
121
|
+
projects: z
|
|
122
|
+
.record(z.string().regex(/^[a-z][a-z0-9-]*$/, "a project's name, as its profile gives it"), projectAccountsSchema)
|
|
123
|
+
.default({}),
|
|
104
124
|
// Local quiet hours (design note, section 8): pushes are held and sent as one summary when they
|
|
105
125
|
// end. The scheduler (ATK-315) also starts no worker in them. Null: none.
|
|
106
126
|
quietHours: z
|
|
@@ -150,6 +170,8 @@ export const configSchema = z.strictObject({
|
|
|
150
170
|
health: watcher(30, 30),
|
|
151
171
|
// Linear allows a key 1500 requests an hour, and conduct-atk reads with the same key.
|
|
152
172
|
linear: watcher(30, 10),
|
|
173
|
+
// A lost login's re-probe, and `conduct wait login`: each probe asks its provider once or twice.
|
|
174
|
+
login: watcher(60, 30),
|
|
153
175
|
npm: watcher(20, 30),
|
|
154
176
|
// How often a `watcher.stats` event records each API's passes and requests.
|
|
155
177
|
statsMinutes: z.number().min(1).max(1440).default(10),
|
package/build/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,kGAAkG;AAClG,+DAA+D;AAC/D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,gBAAgB,EAAE,UAAU,CAAU,CAAC;AAGhE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAE/E,sCAAsC;AACtC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,2BAA2B,EAAE,sCAAsC,CAAC,CAAC;AAExG,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/C,gDAAgD;IAChD,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;CACzC,CAAC,CAAC;AAEH,kGAAkG;AAClG,sGAAsG;AACtG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,YAAY,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7C,qFAAqF;IACrF,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,KAAK,CAAC,mDAAmD,EAAE,iDAAiD,CAAC;SAC7G,QAAQ,EAAE;IACb,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtD,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC/B,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC9B,CAAC,CAAC;AAIH,uGAAuG;AACvG,gGAAgG;AAChG,kGAAkG;AAClG,sGAAsG;AACtG,4DAA4D;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAoD;IAChF,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5B,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAAE,CAAC;IACjD,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { readCredential as readWindowsCredential } from "./credential.js";
|
|
2
|
+
import { ConductorError } from "./errors.js";
|
|
3
|
+
import { NotFound } from "./lib/providers/index.js";
|
|
4
|
+
import { outputOf, run as runCommand } from "./run.js";
|
|
5
|
+
// Each project's accounts (providers design note, section 6): which az tenant, gh account and
|
|
6
|
+
// Linear key its provider calls use, from machine config (`projects.<name>`), else the machine's
|
|
7
|
+
// own logins. A login that stops working is a spell: one `lost` change when it starts, one
|
|
8
|
+
// `restored` when a call or a probe works again.
|
|
9
|
+
export const PROVIDERS = ['ado', 'github', 'linear'];
|
|
10
|
+
// Azure DevOps' resource id, for `az account get-access-token`.
|
|
11
|
+
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.
|
|
13
|
+
const TOKEN_MAX_AGE_MS = 20 * 60_000;
|
|
14
|
+
export const LINEAR_CREDENTIAL = 'atk-conductor-linear';
|
|
15
|
+
// The id of the machine's own login. No tenant, gh user or credential target in config can be it:
|
|
16
|
+
// the schema allows no parentheses in the first two, and a target that spelt it would be odd.
|
|
17
|
+
export const MACHINE = '(machine)';
|
|
18
|
+
const LINEAR_API = 'https://api.linear.app/graphql';
|
|
19
|
+
const TIMEOUT_MS = 20_000;
|
|
20
|
+
// A provider call that needs a login it doesn't have. It names the provider, the account and the
|
|
21
|
+
// command that signs in again. `conduct` reserves exit code 5 (LOGIN_NEEDED_EXIT) for worker verbs
|
|
22
|
+
// that hit it; protocol 1's verbs exit 1 for it, as for any ConductorError.
|
|
23
|
+
export class LoginNeeded extends ConductorError {
|
|
24
|
+
account;
|
|
25
|
+
// The message and the command in one line, for a wait's problem (`wait.check-failed`, a local
|
|
26
|
+
// wait's exit), which keeps no details.
|
|
27
|
+
get line() {
|
|
28
|
+
return `${this.message}; to sign in: ${this.account.command}`;
|
|
29
|
+
}
|
|
30
|
+
constructor(account, project, error) {
|
|
31
|
+
super(`${loginText(account, project)}: ${error}`, [`run ${account.command}`]);
|
|
32
|
+
this.name = 'LoginNeeded';
|
|
33
|
+
this.account = account;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// "github login lost for atk (gh account JasonPaff)".
|
|
37
|
+
export function loginText(account, project) {
|
|
38
|
+
return `${account.provider} login lost${project === null ? '' : ` for ${project}`} (${account.label})`;
|
|
39
|
+
}
|
|
40
|
+
export function providerCredentials(deps) {
|
|
41
|
+
const env = deps.env ?? process.env;
|
|
42
|
+
const fetcher = deps.fetch ?? globalThis.fetch;
|
|
43
|
+
const now = deps.now ?? Date.now;
|
|
44
|
+
const exec = deps.run ?? runCommand;
|
|
45
|
+
const read = deps.readCredential ?? readWindowsCredential;
|
|
46
|
+
const lostNow = new Map();
|
|
47
|
+
// Each account's token or key, shared by every project on it. The calls that read them name
|
|
48
|
+
// their own project, so a lost login is put on the project whose call found it.
|
|
49
|
+
const adoTokens = new Map();
|
|
50
|
+
const ghTokens = new Map();
|
|
51
|
+
const linearKeys = new Map();
|
|
52
|
+
const spell = (account) => `${account.provider}:${account.id}`;
|
|
53
|
+
const failed = (account, project, error) => {
|
|
54
|
+
if (!lostNow.has(spell(account))) {
|
|
55
|
+
lostNow.set(spell(account), { account, error, project });
|
|
56
|
+
deps.onChange?.({ account, error, kind: 'lost', project });
|
|
57
|
+
}
|
|
58
|
+
return new LoginNeeded(account, project, error);
|
|
59
|
+
};
|
|
60
|
+
const worked = (account, project) => {
|
|
61
|
+
if (!lostNow.delete(spell(account)))
|
|
62
|
+
return;
|
|
63
|
+
deps.onChange?.({ account, error: null, kind: 'restored', project });
|
|
64
|
+
};
|
|
65
|
+
// While an account's login is lost, only a probe asks the provider again (the daemon's re-probe,
|
|
66
|
+
// a login wait): every other call fails at once, so a pass with many waits on the account runs
|
|
67
|
+
// no `az`, `gh` or Linear request for it. The re-probe is the spell's back-off.
|
|
68
|
+
const refuseWhileLost = (account, project, probing) => {
|
|
69
|
+
const lost = probing ? undefined : lostNow.get(spell(account));
|
|
70
|
+
if (lost)
|
|
71
|
+
throw new LoginNeeded(account, project, lost.error);
|
|
72
|
+
};
|
|
73
|
+
const account = (provider, project) => {
|
|
74
|
+
const entry = project === null ? undefined : deps.projects[project];
|
|
75
|
+
switch (provider) {
|
|
76
|
+
case 'ado': {
|
|
77
|
+
const tenant = entry?.ado?.tenant ?? null;
|
|
78
|
+
return tenant === null
|
|
79
|
+
? { command: 'az login', id: MACHINE, label: "az's default account", provider }
|
|
80
|
+
: { command: `az login --tenant ${tenant}`, id: tenant, label: `az tenant ${tenant}`, provider };
|
|
81
|
+
}
|
|
82
|
+
case 'github': {
|
|
83
|
+
const user = entry?.github?.user ?? null;
|
|
84
|
+
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 };
|
|
87
|
+
}
|
|
88
|
+
case 'linear': {
|
|
89
|
+
const target = entry?.linear?.credential ?? null;
|
|
90
|
+
const shown = target ?? defaultLinearTarget(env);
|
|
91
|
+
return {
|
|
92
|
+
command: `cmdkey /generic:${shown} /user:linear /pass`,
|
|
93
|
+
id: target ?? MACHINE,
|
|
94
|
+
label: target === null ? `LINEAR_API_KEY or credential ${shown}` : `credential ${target}`,
|
|
95
|
+
provider,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
// The az token for the project's tenant, kept 20 minutes.
|
|
101
|
+
const adoToken = async (project, fresh, probing) => {
|
|
102
|
+
const which = account('ado', project);
|
|
103
|
+
refuseWhileLost(which, project, probing);
|
|
104
|
+
const cached = adoTokens.get(which.id);
|
|
105
|
+
if (!fresh && cached && now() - cached.at < TOKEN_MAX_AGE_MS)
|
|
106
|
+
return cached.value;
|
|
107
|
+
const tenant = which.id === MACHINE ? [] : ['--tenant', which.id];
|
|
108
|
+
// `az` is a .cmd on Windows, so it runs through a shell; its arguments are constants and
|
|
109
|
+
// the tenant id from machine config, which the config schema keeps to an id or a domain.
|
|
110
|
+
const result = await exec('az', ['account', 'get-access-token', '--resource', ADO_RESOURCE, ...tenant, '--query', 'accessToken', '-o', 'tsv'], { shell: process.platform === 'win32', timeoutMs: 60_000 });
|
|
111
|
+
const value = result.stdout.trim();
|
|
112
|
+
if (result.code !== 0 || !value) {
|
|
113
|
+
throw failed(which, project, `az account get-access-token failed: ${outputOf(result, 300)}`);
|
|
114
|
+
}
|
|
115
|
+
worked(which, project);
|
|
116
|
+
adoTokens.set(which.id, { at: now(), value });
|
|
117
|
+
return value;
|
|
118
|
+
};
|
|
119
|
+
const ado = (project) => (fresh) => adoToken(project, fresh, false);
|
|
120
|
+
const ghToken = async (which, project, fresh) => {
|
|
121
|
+
const cached = ghTokens.get(which.id);
|
|
122
|
+
if (!fresh && cached && now() - cached.at < TOKEN_MAX_AGE_MS)
|
|
123
|
+
return cached.value;
|
|
124
|
+
const user = which.id === MACHINE ? [] : ['--user', which.id];
|
|
125
|
+
const result = await exec('gh', ['auth', 'token', ...user], { env, timeoutMs: 30_000 });
|
|
126
|
+
const value = result.stdout.trim();
|
|
127
|
+
if (result.code !== 0 || !value)
|
|
128
|
+
throw failed(which, project, `gh auth token failed: ${outputOf(result, 300)}`);
|
|
129
|
+
ghTokens.set(which.id, { at: now(), value });
|
|
130
|
+
return value;
|
|
131
|
+
};
|
|
132
|
+
// Each call runs `gh api` with the account's token in GH_TOKEN, so a project's gh user needs no
|
|
133
|
+
// `gh auth switch`. A 401 asks gh for the token again once; a second is a lost login. Only an
|
|
134
|
+
// answer from GitHub (success, or an HTTP status other than 401) says the token works: a
|
|
135
|
+
// timeout or a network error says nothing about the login.
|
|
136
|
+
const ghApi = async (project, path, probing) => {
|
|
137
|
+
const which = account('github', project);
|
|
138
|
+
refuseWhileLost(which, project, probing);
|
|
139
|
+
for (let fresh = probing;; fresh = true) {
|
|
140
|
+
const result = await exec('gh', ['api', path], {
|
|
141
|
+
env: { ...env, GH_TOKEN: await ghToken(which, project, fresh) },
|
|
142
|
+
timeoutMs: 60_000,
|
|
143
|
+
});
|
|
144
|
+
const said = result.code === 0 ? '' : outputOf(result, 300);
|
|
145
|
+
if (/HTTP 401|Bad credentials/i.test(said)) {
|
|
146
|
+
if (!fresh)
|
|
147
|
+
continue;
|
|
148
|
+
throw failed(which, project, `GitHub refused the token: ${said}`);
|
|
149
|
+
}
|
|
150
|
+
if (result.code === 0 || /HTTP \d{3}/.test(said))
|
|
151
|
+
worked(which, project);
|
|
152
|
+
if (result.code === 0)
|
|
153
|
+
return JSON.parse(result.stdout);
|
|
154
|
+
if (/HTTP 404|Not Found/i.test(said))
|
|
155
|
+
throw new NotFound(`GitHub answered 404 for ${path}`);
|
|
156
|
+
throw new Error(`gh api ${path} failed: ${said}`);
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
const gh = (project) => (path) => ghApi(project, path, false);
|
|
160
|
+
// The project's Linear key, kept per credential target. The key is only returned: never logged,
|
|
161
|
+
// stored or put on a command line.
|
|
162
|
+
const linear = (project, probing = false) => {
|
|
163
|
+
const which = account('linear', project);
|
|
164
|
+
return {
|
|
165
|
+
account: which,
|
|
166
|
+
key: async (fresh = false) => {
|
|
167
|
+
refuseWhileLost(which, project, probing);
|
|
168
|
+
const cached = linearKeys.get(which.id);
|
|
169
|
+
if (!fresh && cached !== undefined)
|
|
170
|
+
return cached;
|
|
171
|
+
const found = await readLinearKey(which, env, read);
|
|
172
|
+
if (found.key === null)
|
|
173
|
+
throw failed(which, project, found.reason);
|
|
174
|
+
linearKeys.set(which.id, found.key);
|
|
175
|
+
return found.key;
|
|
176
|
+
},
|
|
177
|
+
refused: (detail) => {
|
|
178
|
+
linearKeys.delete(which.id);
|
|
179
|
+
return failed(which, project, detail);
|
|
180
|
+
},
|
|
181
|
+
worked: () => worked(which, project),
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
const probe = async (provider, project) => {
|
|
185
|
+
const which = account(provider, project);
|
|
186
|
+
try {
|
|
187
|
+
if (provider === 'ado')
|
|
188
|
+
await adoToken(project, true, true);
|
|
189
|
+
else if (provider === 'github')
|
|
190
|
+
await ghApi(project, 'user', true);
|
|
191
|
+
else
|
|
192
|
+
await probeLinear(linear(project, true));
|
|
193
|
+
return { account: which, error: null };
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
return { account: which, error: error instanceof Error ? error.message : String(error) };
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
const probeLinear = async (auth) => {
|
|
200
|
+
const secret = await auth.key(true);
|
|
201
|
+
const response = await fetcher(deps.linearUrl ?? LINEAR_API, {
|
|
202
|
+
body: JSON.stringify({ query: '{ viewer { id } }' }),
|
|
203
|
+
headers: { authorization: secret, 'content-type': 'application/json' },
|
|
204
|
+
method: 'POST',
|
|
205
|
+
signal: AbortSignal.timeout(TIMEOUT_MS),
|
|
206
|
+
});
|
|
207
|
+
if (response.status === 401)
|
|
208
|
+
throw auth.refused('Linear refused the key (HTTP 401)');
|
|
209
|
+
if (!response.ok)
|
|
210
|
+
throw new Error(`Linear answered ${response.status}`);
|
|
211
|
+
auth.worked();
|
|
212
|
+
};
|
|
213
|
+
return {
|
|
214
|
+
account,
|
|
215
|
+
ado,
|
|
216
|
+
gh,
|
|
217
|
+
linear: (project) => linear(project),
|
|
218
|
+
lost: () => [...lostNow.values()],
|
|
219
|
+
probe,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
// The target the machine's own Linear key is saved under: ATK_CONDUCT_LINEAR_CREDENTIAL names
|
|
223
|
+
// another, as in conduct-atk.
|
|
224
|
+
function defaultLinearTarget(env) {
|
|
225
|
+
return env.ATK_CONDUCT_LINEAR_CREDENTIAL?.trim() || LINEAR_CREDENTIAL;
|
|
226
|
+
}
|
|
227
|
+
// A project's own credential target, else LINEAR_API_KEY, then the machine's target (ATK-272).
|
|
228
|
+
async function readLinearKey(which, env, read) {
|
|
229
|
+
if (which.id === MACHINE) {
|
|
230
|
+
const fromEnv = env.LINEAR_API_KEY?.trim();
|
|
231
|
+
if (fromEnv)
|
|
232
|
+
return { key: fromEnv };
|
|
233
|
+
}
|
|
234
|
+
const target = which.id === MACHINE ? defaultLinearTarget(env) : which.id;
|
|
235
|
+
const found = await read(target, env);
|
|
236
|
+
if (found.found)
|
|
237
|
+
return { key: found.credential.secret };
|
|
238
|
+
return { key: null, reason: which.id === MACHINE ? `no LINEAR_API_KEY, and ${found.reason}` : found.reason };
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
|
package/build/daemon.js
CHANGED
|
@@ -6,10 +6,12 @@ import { claudeCli } from "./claude.js";
|
|
|
6
6
|
import { ping } from "./client.js";
|
|
7
7
|
import { loadConfig } from "./config.js";
|
|
8
8
|
import { consoleEscalations, unattendedEscalations } from "./console.js";
|
|
9
|
+
import { providerCredentials } from "./credentials.js";
|
|
9
10
|
import { ConductorError } from "./errors.js";
|
|
10
11
|
import { inboxService } from "./inbox.js";
|
|
11
12
|
import { acquirePidLock, processAlive } from "./lock.js";
|
|
12
13
|
import { rotatingLog } from "./log.js";
|
|
14
|
+
import { loginEvents, loginReprobe } from "./logins.js";
|
|
13
15
|
import { sessionManager } from "./manager.js";
|
|
14
16
|
import { linearNotes, noteService } from "./notes.js";
|
|
15
17
|
import { notifierService } from "./notify.js";
|
|
@@ -28,11 +30,10 @@ import { windowsTerminalTab } from "./tab.js";
|
|
|
28
30
|
import { ensureToken } from "./token.js";
|
|
29
31
|
import { routedBriefs, routedLabels, routedNotes, routedQueue } from "./trackers.js";
|
|
30
32
|
import { trainWatch } from "./train.js";
|
|
31
|
-
import { azToken } from "./watchers/ado-api.js";
|
|
32
33
|
import { boardsBriefs } from "./watchers/boards-brief.js";
|
|
33
34
|
import { boardsQueue } from "./watchers/boards-queue.js";
|
|
34
35
|
import { boardsLabels, boardsNotes } from "./watchers/boards-writes.js";
|
|
35
|
-
import { startWatchers } from "./watchers/index.js";
|
|
36
|
+
import { defaultSources, startWatchers } from "./watchers/index.js";
|
|
36
37
|
import { linearLabels } from "./watchers/linear-labels.js";
|
|
37
38
|
import { linearQueue } from "./watchers/linear-queue.js";
|
|
38
39
|
import { rateBudget } from "./watchers/source.js";
|
|
@@ -173,9 +174,17 @@ export async function startDaemon(paths, { consoleGraceMs, keepaliveMs, ports =
|
|
|
173
174
|
store: opened,
|
|
174
175
|
worktrees,
|
|
175
176
|
});
|
|
176
|
-
// One
|
|
177
|
-
|
|
178
|
-
const
|
|
177
|
+
// One set of accounts for every provider call: the watchers' and the tracker reads and writes
|
|
178
|
+
// outside them. Each lost login is an event, and a re-probe ends its spell.
|
|
179
|
+
const credentials = ports.credentials ??
|
|
180
|
+
providerCredentials({
|
|
181
|
+
onChange: loginEvents({ log, stopped: () => stopping !== undefined, store: opened }),
|
|
182
|
+
projects: config.projects,
|
|
183
|
+
});
|
|
184
|
+
const reprobe = loginReprobe({ credentials, intervalMs: config.watchers.login.intervalSeconds * 1000, log });
|
|
185
|
+
const boards = { credentials };
|
|
186
|
+
const linear = { credentials };
|
|
187
|
+
const tracker = ports.noteTracker ?? routedNotes({ 'ado-boards': boardsNotes(boards), linear: linearNotes(linear) });
|
|
179
188
|
const inbox = inboxService({ onWaitResolved: () => void manager.sweep(), store: opened, tracker });
|
|
180
189
|
const escalations = consoleEscalations({ inbox, store: opened });
|
|
181
190
|
const unattended = unattendedEscalations({ escalations, graceMs: consoleGraceMs, inbox });
|
|
@@ -193,7 +202,7 @@ export async function startDaemon(paths, { consoleGraceMs, keepaliveMs, ports =
|
|
|
193
202
|
ports: { checkSkills: (root, names) => plain.checkSkills(root, names), git: gitPort() },
|
|
194
203
|
store: opened,
|
|
195
204
|
});
|
|
196
|
-
const trains = trainWatch({ inbox, log, store: opened });
|
|
205
|
+
const trains = trainWatch({ credentials, inbox, log, store: opened });
|
|
197
206
|
const scheduler = schedulerService({
|
|
198
207
|
budget: (profile) => {
|
|
199
208
|
const api = profile.tracker.kind === 'linear' ? 'linear' : 'ado';
|
|
@@ -204,7 +213,7 @@ export async function startDaemon(paths, { consoleGraceMs, keepaliveMs, ports =
|
|
|
204
213
|
log,
|
|
205
214
|
manager,
|
|
206
215
|
overrides,
|
|
207
|
-
reader: ports.queueReader ?? routedQueue({ 'ado-boards': boardsQueue(boards), linear: linearQueue() }),
|
|
216
|
+
reader: ports.queueReader ?? routedQueue({ 'ado-boards': boardsQueue(boards), linear: linearQueue(linear) }),
|
|
208
217
|
rules: () => rules.rules(),
|
|
209
218
|
store: opened,
|
|
210
219
|
});
|
|
@@ -216,7 +225,7 @@ export async function startDaemon(paths, { consoleGraceMs, keepaliveMs, ports =
|
|
|
216
225
|
});
|
|
217
226
|
const actions = ruleActions({
|
|
218
227
|
inbox,
|
|
219
|
-
labels: ports.labels ?? routedLabels({ 'ado-boards': boardsLabels(boards), linear: linearLabels() }),
|
|
228
|
+
labels: ports.labels ?? routedLabels({ 'ado-boards': boardsLabels(boards), linear: linearLabels(linear) }),
|
|
220
229
|
log,
|
|
221
230
|
manager,
|
|
222
231
|
mode: config.scheduler.mode,
|
|
@@ -272,11 +281,11 @@ export async function startDaemon(paths, { consoleGraceMs, keepaliveMs, ports =
|
|
|
272
281
|
log,
|
|
273
282
|
// A resolved wait wakes its worker on the next sweep; run that sweep now.
|
|
274
283
|
onResolved: () => void manager.sweep(),
|
|
275
|
-
sources: ports.sources,
|
|
284
|
+
sources: ports.sources ?? defaultSources(credentials),
|
|
276
285
|
store: opened,
|
|
277
286
|
});
|
|
278
287
|
const briefs = briefService({
|
|
279
|
-
reader: ports.briefReader ?? routedBriefs({ 'ado-boards': boardsBriefs(boards), linear: linearBriefs() }),
|
|
288
|
+
reader: ports.briefReader ?? routedBriefs({ 'ado-boards': boardsBriefs(boards), linear: linearBriefs(linear) }),
|
|
280
289
|
store: opened,
|
|
281
290
|
});
|
|
282
291
|
const notes = noteService({ briefs, planApproval: (plan) => actions.planApproval(plan), store: opened, tracker });
|
|
@@ -311,6 +320,7 @@ export async function startDaemon(paths, { consoleGraceMs, keepaliveMs, ports =
|
|
|
311
320
|
await scheduler.stop();
|
|
312
321
|
await checkout.stop();
|
|
313
322
|
await trains.stop();
|
|
323
|
+
await reprobe.stop();
|
|
314
324
|
await watchers.stop();
|
|
315
325
|
await manager.stop();
|
|
316
326
|
stopObserving();
|
|
@@ -347,6 +357,7 @@ export async function startDaemon(paths, { consoleGraceMs, keepaliveMs, ports =
|
|
|
347
357
|
notifier.start();
|
|
348
358
|
manager.start();
|
|
349
359
|
watchers.start();
|
|
360
|
+
reprobe.start();
|
|
350
361
|
scheduler.start();
|
|
351
362
|
checkout.start();
|
|
352
363
|
trains.start();
|