@detergent-software/conductor 1.2.1-dev.3 → 1.3.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 +22 -0
- package/README.md +47 -5
- package/build/brief.js +5 -6
- package/build/brief.js.map +1 -1
- package/build/cli.js +4 -0
- 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 +24 -9
- package/build/daemon.js.map +1 -1
- package/build/errors.js +3 -0
- package/build/errors.js.map +1 -1
- package/build/help.js +16 -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/notes.js +7 -6
- package/build/notes.js.map +1 -1
- package/build/profile.js +10 -0
- package/build/profile.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 +66 -0
- package/build/train-cli.js.map +1 -0
- package/build/train.js +340 -0
- package/build/train.js.map +1 -0
- 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":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAoB7C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;AAClE,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AACxD,MAAM,IAAI,GAAG,4BAA4B,CAAC;AAC1C,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAoBzC,MAAM,UAAU,eAAe,CAAC,CAAY;IAC1C,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,UAAU;YACb,OAAO,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,KAAK,QAAQ;YACX,OAAO,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACjD,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7D,KAAK,KAAK;YACR,OAAO,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QAClD,KAAK,IAAI;YACP,OAAO,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;QACtD,KAAK,KAAK;YACR,OAAO,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;QACvD,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,iGAAiG;AACjG,kFAAkF;AAClF,mGAAmG;AACnG,uGAAuG;AACvG,gBAAgB;AAChB,MAAM,UAAU,SAAS,CACvB,IAAuB,EACvB,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAe;IAEzD,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7B,MAAM,KAAK,GAAG,CAAC,IAAY,EAAS,EAAE;QACpC,MAAM,IAAI,cAAc,CAAC,uBAAuB,IAAI,EAAE,EAAE,CAAC,6CAA6C,CAAC,CAAC,CAAC;IAC3G,CAAC,CAAC;IACF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;YAC/B,IAAI,CAAC,MAAM;gBACT,MAAM,IAAI,cAAc,CACtB,sFAAsF,CACvF,CAAC;YACJ,OAAO,cAAc,CAAC,YAAY,SAAS,CAAC,OAAO,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;gBAC/E,OAAO,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,cAAc,CAAC,sCAAsC,GAAG,GAAG,EAAE;oBACrE,UAAU,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,2CAA2C;iBAC5G,CAAC,CAAC;YACL,CAAC;YACD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YACnE,OAAO,cAAc,CAAC,UAAU,GAAG,IAAI,KAAK,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YACtC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAClG,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;YACzD,MAAM,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrF,OAAO,cAAc,CAAC,QAAQ,SAAS,CAAC,OAAO,CAAC,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;YACvB,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC;YACrD,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC,qDAAqD,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,cAAc,CAAC,6EAA6E,CAAC,CAAC;YAClH,OAAO,cAAc,CAAC,OAAO,GAAG,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;gBAAE,OAAO,KAAK,CAAC,sDAAsD,CAAC,CAAC;YACzF,IAAI,OAAO,CAAC,IAAI;gBAAE,OAAO,cAAc,CAAC,aAAa,OAAO,CAAC,IAAI,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;YACrF,IAAI,OAAO,EAAE,QAAQ,CAAC,IAAI,KAAK,KAAK;gBAClC,MAAM,IAAI,cAAc,CAAC,gFAAgF,CAAC,CAAC;YAC7G,OAAO,cAAc,CAAC,UAAU,OAAO,CAAC,QAAQ,CAAC,UAAU,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;YACzC,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE;gBAAE,OAAO,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACrE,OAAO,cAAc,CAAC,WAAW,QAAQ,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/C,IAAI,CAAC,EAAE;gBAAE,OAAO,KAAK,CAAC,oFAAoF,CAAC,CAAC;YAC5G,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAChD,CAAC;QACD;YACE,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;YAC/F,MAAM,IAAI,cAAc,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;gBAC3D,oGAAoG;aACrG,CAAC,CAAC;IACP,CAAC;AACH,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,CAAC,OAAe,EAAS,EAAE;QACtC,MAAM,IAAI,cAAc,CAAC,IAAI,IAAI,sBAAsB,EAAE,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC;IACF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,KAAK,GAAG,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrC,OAAO,IAAI,CAAC,sEAAsE,CAAC,CAAC;YACtF,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClE,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7D,gFAAgF;YAChF,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5F,OAAO,IAAI,CAAC,6EAA6E,CAAC,CAAC;YAC7F,CAAC;YACD,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,KAAK,GAAG,uDAAuD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjF,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;gBACvE,OAAO,IAAI,CAAC,8EAA8E,CAAC,CAAC;YAC9F,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/G,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,sEAAsE;YACtE,MAAM,KAAK,GAAG,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvC,OAAO,IAAI,CAAC,yFAAyF,CAAC,CAAC;YACzG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,CAAC;QACD,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,KAAK,GAAG,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjF,OAAO,IAAI,CAAC,+EAA+E,CAAC,CAAC;YAC/F,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAChH,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,KAAK,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACjE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,IAAI,KAAK,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;gBAAE,OAAO,IAAI,CAAC,oDAAoD,CAAC,CAAC;YACjH,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC;QACxC,CAAC;QACD;YACE,OAAO,IAAI,CAAC,qEAAqE,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,kFAAkF;AAClF,wCAAwC;AACxC,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,MAAM,GAAG,GAAG,qDAAqD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5E,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,OAAO,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,gFAAgF,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1G,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9E,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,KAAK,CAAC,CAAqC;IACzD,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAY;IACnC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM;YACT,qEAAqE;YACrE,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;QACnD,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf,KAAK,IAAI;YACP,OAAO,CAAC,CAAC,IAAI,CAAC;QAChB,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf,KAAK,MAAM;YACT,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC;AAED,8FAA8F;AAC9F,8FAA8F;AAC9F,6CAA6C;AAC7C,MAAM,UAAU,WAAW,CAAC,CAAY,EAAE,OAAuB;IAC/D,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC9D,OAAO,OAAO,EAAE,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qDAAqD,CAAC;IACzG,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAAE,OAAO,gDAAgD,CAAC,CAAC,GAAG,GAAG,CAAC;IACtH,IACE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;QAC5C,CAAC,CAAC,OAAO,KAAK,YAAY;QAC1B,OAAO,EAAE,OAAO,CAAC,IAAI,KAAK,YAAY,EACtC,CAAC;QACD,OAAO,iDAAiD,CAAC;IAC3D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,IAAwB;IAC3C,OAAO,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;AACzD,CAAC;AAED,SAAS,SAAS,CAAC,OAAuB;IACxC,OAAO,OAAO,EAAE,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC;AAC3C,CAAC"}
|
|
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";
|
|
@@ -27,11 +29,11 @@ import {} from "./supervise.js";
|
|
|
27
29
|
import { windowsTerminalTab } from "./tab.js";
|
|
28
30
|
import { ensureToken } from "./token.js";
|
|
29
31
|
import { routedBriefs, routedLabels, routedNotes, routedQueue } from "./trackers.js";
|
|
30
|
-
import {
|
|
32
|
+
import { trainWatch } from "./train.js";
|
|
31
33
|
import { boardsBriefs } from "./watchers/boards-brief.js";
|
|
32
34
|
import { boardsQueue } from "./watchers/boards-queue.js";
|
|
33
35
|
import { boardsLabels, boardsNotes } from "./watchers/boards-writes.js";
|
|
34
|
-
import { startWatchers } from "./watchers/index.js";
|
|
36
|
+
import { defaultSources, startWatchers } from "./watchers/index.js";
|
|
35
37
|
import { linearLabels } from "./watchers/linear-labels.js";
|
|
36
38
|
import { linearQueue } from "./watchers/linear-queue.js";
|
|
37
39
|
import { rateBudget } from "./watchers/source.js";
|
|
@@ -172,9 +174,17 @@ export async function startDaemon(paths, { consoleGraceMs, keepaliveMs, ports =
|
|
|
172
174
|
store: opened,
|
|
173
175
|
worktrees,
|
|
174
176
|
});
|
|
175
|
-
// One
|
|
176
|
-
|
|
177
|
-
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) });
|
|
178
188
|
const inbox = inboxService({ onWaitResolved: () => void manager.sweep(), store: opened, tracker });
|
|
179
189
|
const escalations = consoleEscalations({ inbox, store: opened });
|
|
180
190
|
const unattended = unattendedEscalations({ escalations, graceMs: consoleGraceMs, inbox });
|
|
@@ -192,6 +202,7 @@ export async function startDaemon(paths, { consoleGraceMs, keepaliveMs, ports =
|
|
|
192
202
|
ports: { checkSkills: (root, names) => plain.checkSkills(root, names), git: gitPort() },
|
|
193
203
|
store: opened,
|
|
194
204
|
});
|
|
205
|
+
const trains = trainWatch({ credentials, inbox, log, store: opened });
|
|
195
206
|
const scheduler = schedulerService({
|
|
196
207
|
budget: (profile) => {
|
|
197
208
|
const api = profile.tracker.kind === 'linear' ? 'linear' : 'ado';
|
|
@@ -202,7 +213,7 @@ export async function startDaemon(paths, { consoleGraceMs, keepaliveMs, ports =
|
|
|
202
213
|
log,
|
|
203
214
|
manager,
|
|
204
215
|
overrides,
|
|
205
|
-
reader: ports.queueReader ?? routedQueue({ 'ado-boards': boardsQueue(boards), linear: linearQueue() }),
|
|
216
|
+
reader: ports.queueReader ?? routedQueue({ 'ado-boards': boardsQueue(boards), linear: linearQueue(linear) }),
|
|
206
217
|
rules: () => rules.rules(),
|
|
207
218
|
store: opened,
|
|
208
219
|
});
|
|
@@ -214,7 +225,7 @@ export async function startDaemon(paths, { consoleGraceMs, keepaliveMs, ports =
|
|
|
214
225
|
});
|
|
215
226
|
const actions = ruleActions({
|
|
216
227
|
inbox,
|
|
217
|
-
labels: ports.labels ?? routedLabels({ 'ado-boards': boardsLabels(boards), linear: linearLabels() }),
|
|
228
|
+
labels: ports.labels ?? routedLabels({ 'ado-boards': boardsLabels(boards), linear: linearLabels(linear) }),
|
|
218
229
|
log,
|
|
219
230
|
manager,
|
|
220
231
|
mode: config.scheduler.mode,
|
|
@@ -270,11 +281,11 @@ export async function startDaemon(paths, { consoleGraceMs, keepaliveMs, ports =
|
|
|
270
281
|
log,
|
|
271
282
|
// A resolved wait wakes its worker on the next sweep; run that sweep now.
|
|
272
283
|
onResolved: () => void manager.sweep(),
|
|
273
|
-
sources: ports.sources,
|
|
284
|
+
sources: ports.sources ?? defaultSources(credentials),
|
|
274
285
|
store: opened,
|
|
275
286
|
});
|
|
276
287
|
const briefs = briefService({
|
|
277
|
-
reader: ports.briefReader ?? routedBriefs({ 'ado-boards': boardsBriefs(boards), linear: linearBriefs() }),
|
|
288
|
+
reader: ports.briefReader ?? routedBriefs({ 'ado-boards': boardsBriefs(boards), linear: linearBriefs(linear) }),
|
|
278
289
|
store: opened,
|
|
279
290
|
});
|
|
280
291
|
const notes = noteService({ briefs, planApproval: (plan) => actions.planApproval(plan), store: opened, tracker });
|
|
@@ -308,6 +319,8 @@ export async function startDaemon(paths, { consoleGraceMs, keepaliveMs, ports =
|
|
|
308
319
|
await actions.stop();
|
|
309
320
|
await scheduler.stop();
|
|
310
321
|
await checkout.stop();
|
|
322
|
+
await trains.stop();
|
|
323
|
+
await reprobe.stop();
|
|
311
324
|
await watchers.stop();
|
|
312
325
|
await manager.stop();
|
|
313
326
|
stopObserving();
|
|
@@ -344,8 +357,10 @@ export async function startDaemon(paths, { consoleGraceMs, keepaliveMs, ports =
|
|
|
344
357
|
notifier.start();
|
|
345
358
|
manager.start();
|
|
346
359
|
watchers.start();
|
|
360
|
+
reprobe.start();
|
|
347
361
|
scheduler.start();
|
|
348
362
|
checkout.start();
|
|
363
|
+
trains.start();
|
|
349
364
|
actions.start();
|
|
350
365
|
revisions.start();
|
|
351
366
|
log.log('info', 'started', { home: paths.home, pid: process.pid, port, version });
|