@detergent-software/conductor 3.0.0-dev.3 → 3.0.0-dev.31
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 +251 -0
- package/README.md +203 -64
- package/build/brief-cli.js +1 -1
- package/build/brief-cli.js.map +1 -1
- package/build/broker-cli.js +24 -25
- package/build/broker-cli.js.map +1 -1
- package/build/broker.js +66 -92
- package/build/broker.js.map +1 -1
- package/build/claude.js +50 -7
- package/build/claude.js.map +1 -1
- package/build/cli.js +143 -63
- package/build/cli.js.map +1 -1
- package/build/clones.js +92 -0
- package/build/clones.js.map +1 -0
- package/build/code-host-cli.js +126 -37
- package/build/code-host-cli.js.map +1 -1
- package/build/code-host-service.js +13 -1
- package/build/code-host-service.js.map +1 -1
- package/build/code-host.js +82 -16
- package/build/code-host.js.map +1 -1
- package/build/conditions.js +27 -10
- package/build/conditions.js.map +1 -1
- package/build/config.js +58 -14
- package/build/config.js.map +1 -1
- package/build/console.js +40 -24
- package/build/console.js.map +1 -1
- package/build/credentials.js +47 -34
- package/build/credentials.js.map +1 -1
- package/build/daemon.js +45 -25
- package/build/daemon.js.map +1 -1
- package/build/help.js +179 -42
- package/build/help.js.map +1 -1
- package/build/history.js +4 -2
- package/build/history.js.map +1 -1
- package/build/host/credential-manager.js +109 -0
- package/build/host/credential-manager.js.map +1 -0
- package/build/host/keychain.js +44 -0
- package/build/host/keychain.js.map +1 -0
- package/build/host/launchd.js +118 -0
- package/build/host/launchd.js.map +1 -0
- package/build/host/libsecret.js +40 -0
- package/build/host/libsecret.js.map +1 -0
- package/build/host/macos-terminal.js +63 -0
- package/build/host/macos-terminal.js.map +1 -0
- package/build/host/platform.js +4 -0
- package/build/host/platform.js.map +1 -0
- package/build/host/secrets.js +46 -0
- package/build/host/secrets.js.map +1 -0
- package/build/host/shell.js +26 -0
- package/build/host/shell.js.map +1 -0
- package/build/host/startup.js +26 -0
- package/build/host/startup.js.map +1 -0
- package/build/host/systemd.js +91 -0
- package/build/host/systemd.js.map +1 -0
- package/build/host/task-scheduler.js +78 -0
- package/build/host/task-scheduler.js.map +1 -0
- package/build/host/terminal.js +46 -0
- package/build/host/terminal.js.map +1 -0
- package/build/host/tmux.js +39 -0
- package/build/host/tmux.js.map +1 -0
- package/build/host/windows-terminal.js +46 -0
- package/build/host/windows-terminal.js.map +1 -0
- package/build/in-process.js +6 -5
- package/build/in-process.js.map +1 -1
- package/build/inbox.js +63 -17
- package/build/inbox.js.map +1 -1
- package/build/init.js +510 -0
- package/build/init.js.map +1 -0
- package/build/landing.js +86 -7
- package/build/landing.js.map +1 -1
- package/build/lib/providers/ado/code-host.js +5 -1
- package/build/lib/providers/ado/code-host.js.map +1 -1
- package/build/lib/providers/ado/pipelines.js +138 -26
- package/build/lib/providers/ado/pipelines.js.map +1 -1
- package/build/lib/providers/ado/trigger.js +5 -0
- package/build/lib/providers/ado/trigger.js.map +1 -1
- package/build/lib/providers/ado/writes.js +10 -1
- package/build/lib/providers/ado/writes.js.map +1 -1
- package/build/lib/providers/github/actions.js +90 -3
- package/build/lib/providers/github/actions.js.map +1 -1
- package/build/lib/providers/github/code-host.js +2 -0
- package/build/lib/providers/github/code-host.js.map +1 -1
- package/build/lib/providers/github/writes.js +24 -2
- package/build/lib/providers/github/writes.js.map +1 -1
- package/build/lib/providers/index.js +4 -3
- package/build/lib/providers/index.js.map +1 -1
- package/build/lib/providers/npm/stage.js +28 -5
- package/build/lib/providers/npm/stage.js.map +1 -1
- package/build/lib/providers/timing.js +10 -0
- package/build/lib/providers/timing.js.map +1 -0
- package/build/lib/providers/verdicts/pr.js +47 -6
- package/build/lib/providers/verdicts/pr.js.map +1 -1
- package/build/lib/providers/verdicts/runs.js +12 -2
- package/build/lib/providers/verdicts/runs.js.map +1 -1
- package/build/local-files.js +95 -0
- package/build/local-files.js.map +1 -0
- package/build/manager.js +171 -47
- package/build/manager.js.map +1 -1
- package/build/note.js +1 -1
- package/build/note.js.map +1 -1
- package/build/notify.js +101 -39
- package/build/notify.js.map +1 -1
- package/build/npm-reads.js +323 -0
- package/build/npm-reads.js.map +1 -0
- package/build/paths.js +44 -1
- package/build/paths.js.map +1 -1
- package/build/plugin.js +10 -0
- package/build/plugin.js.map +1 -1
- package/build/profile-fields.js +151 -0
- package/build/profile-fields.js.map +1 -0
- package/build/profile-layers.js +264 -0
- package/build/profile-layers.js.map +1 -0
- package/build/profile.js +93 -50
- package/build/profile.js.map +1 -1
- package/build/project-check-cli.js +19 -11
- package/build/project-check-cli.js.map +1 -1
- package/build/project-check.js +206 -108
- package/build/project-check.js.map +1 -1
- package/build/pushover.js +5 -5
- package/build/pushover.js.map +1 -1
- package/build/registry.js +195 -36
- package/build/registry.js.map +1 -1
- package/build/release-kinds.js +34 -0
- package/build/release-kinds.js.map +1 -0
- package/build/rule-actions.js +4 -2
- package/build/rule-actions.js.map +1 -1
- package/build/rules-service.js +101 -44
- package/build/rules-service.js.map +1 -1
- package/build/rules.js +15 -15
- package/build/rules.js.map +1 -1
- package/build/run.js +20 -7
- package/build/run.js.map +1 -1
- package/build/runs.js +217 -67
- package/build/runs.js.map +1 -1
- package/build/scheduler.js +11 -1
- package/build/scheduler.js.map +1 -1
- package/build/server.js +6 -25
- package/build/server.js.map +1 -1
- package/build/spend.js +4 -0
- package/build/spend.js.map +1 -1
- package/build/store.js +86 -25
- package/build/store.js.map +1 -1
- package/build/timeline.js +104 -0
- package/build/timeline.js.map +1 -0
- package/build/tracker-reads-cli.js +4 -5
- package/build/tracker-reads-cli.js.map +1 -1
- package/build/train-cli.js +6 -5
- package/build/train-cli.js.map +1 -1
- package/build/upgrade.js +8 -9
- package/build/upgrade.js.map +1 -1
- package/build/wait.js +9 -9
- package/build/wait.js.map +1 -1
- package/build/watchers/ado.js +42 -18
- package/build/watchers/ado.js.map +1 -1
- package/build/watchers/github.js +19 -4
- package/build/watchers/github.js.map +1 -1
- package/build/watchers/index.js +2 -2
- package/build/watchers/index.js.map +1 -1
- package/build/watchers/npm.js +6 -4
- package/build/watchers/npm.js.map +1 -1
- package/build/webhook.js +80 -0
- package/build/webhook.js.map +1 -0
- package/build/worktrees.js +199 -92
- package/build/worktrees.js.map +1 -1
- package/package.json +61 -61
- package/plugin/skills/conductor-console/SKILL.md +4 -4
- package/plugin/skills/work-item/SKILL.md +13 -11
- package/build/checkout-sync.js +0 -249
- package/build/checkout-sync.js.map +0 -1
- package/build/credential.js +0 -66
- package/build/credential.js.map +0 -1
- package/build/startup.js +0 -92
- package/build/startup.js.map +0 -1
- package/build/tab.js +0 -32
- package/build/tab.js.map +0 -1
package/build/project-check.js
CHANGED
|
@@ -1,14 +1,23 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
2
1
|
import { join } from 'node:path';
|
|
2
|
+
import { gt } from 'semver';
|
|
3
3
|
import { z } from 'zod';
|
|
4
|
+
import { portEnv } from "./broker.js";
|
|
5
|
+
import { runGit } from "./checkout.js";
|
|
6
|
+
import { trustStep } from "./claude.js";
|
|
4
7
|
import { repoKey, repoOf } from "./code-host.js";
|
|
5
8
|
import { TRACKER_API } from "./conditions.js";
|
|
6
9
|
import { ConductorError } from "./errors.js";
|
|
7
10
|
import { answersTo, NotFound } from "./lib/providers/index.js";
|
|
11
|
+
import { projectPaths } from "./paths.js";
|
|
8
12
|
import { pluginSkill, pluginSource, projectSkills, readPluginSkill } from "./plugin.js";
|
|
9
|
-
import {
|
|
13
|
+
import { minimumCheck } from "./profile-fields.js";
|
|
14
|
+
import { projectProfile } from "./profile-layers.js";
|
|
15
|
+
import { adoOrganization } from "./profile.js";
|
|
10
16
|
import { PROTOCOL } from "./protocol.js";
|
|
17
|
+
import { registeredByCheckout } from "./registry.js";
|
|
18
|
+
import { RELEASE_KINDS } from "./release-kinds.js";
|
|
11
19
|
import { ciRefusal } from "./runs.js";
|
|
20
|
+
import { BRANCH_PREFIX, SESSION_SETTINGS } from "./worktrees.js";
|
|
12
21
|
// `conduct project check <name>` (ATK-490): whether a registered project can be conducted, checked
|
|
13
22
|
// before the first launch instead of found by a failed one. Each check reads what the launch and the
|
|
14
23
|
// watchers would use, as the project's accounts; only the worktree check writes, and it removes what
|
|
@@ -25,6 +34,9 @@ export const CHECKS = [
|
|
|
25
34
|
'health',
|
|
26
35
|
];
|
|
27
36
|
const HEALTH_TIMEOUT_MS = 15_000;
|
|
37
|
+
// How the worktree check's summary starts when a skill the profile names is missing after setup:
|
|
38
|
+
// `conduct init` reads it to point at the verify skill's maker.
|
|
39
|
+
export const MISSING_SKILLS = "a new worktree's skills:";
|
|
28
40
|
const SOURCE_WORDS = {
|
|
29
41
|
'cli-login': 'CLI login',
|
|
30
42
|
'machine-token': "the machine's token",
|
|
@@ -95,23 +107,26 @@ export async function checkProject(given, project, options) {
|
|
|
95
107
|
const deps = {
|
|
96
108
|
...given,
|
|
97
109
|
credentials: {
|
|
98
|
-
|
|
110
|
+
...given.credentials,
|
|
111
|
+
probe: (provider, name, options) => {
|
|
99
112
|
const key = `${provider}:${name}`;
|
|
100
|
-
const known = probes.get(key) ?? given.credentials.probe(provider, name);
|
|
113
|
+
const known = probes.get(key) ?? given.credentials.probe(provider, name, options);
|
|
101
114
|
probes.set(key, known);
|
|
102
115
|
return known;
|
|
103
116
|
},
|
|
104
117
|
},
|
|
105
118
|
};
|
|
106
|
-
const
|
|
119
|
+
const resolve = deps.resolveProfile ?? ((name) => projectProfile(deps.paths, name));
|
|
120
|
+
const { profile, result } = profileCheck(project, deps.paths, () => resolve(project.name));
|
|
107
121
|
const results = [{ check: 'profile', ...result }];
|
|
122
|
+
const { clone, worktrees: dir } = projectPaths(deps.paths, project.name);
|
|
108
123
|
const steps = [
|
|
109
124
|
['auth', (p) => authCheck(deps, p)],
|
|
110
125
|
['tracker', (p) => trackerCheck(deps, p)],
|
|
111
126
|
['code-host', (p) => codeHostCheck(deps, p)],
|
|
112
127
|
['ci', (p) => ciCheck(deps, p)],
|
|
113
|
-
['worktree', (p) => worktreeCheck(deps,
|
|
114
|
-
['skills', (p) => skillsCheck(deps,
|
|
128
|
+
['worktree', (p) => worktreeCheck(deps, { clone, dir }, p, options)],
|
|
129
|
+
['skills', (p) => skillsCheck(deps, p, options)],
|
|
115
130
|
['ports', (p) => portsCheck(deps, p)],
|
|
116
131
|
['health', (p) => healthCheck(deps, p)],
|
|
117
132
|
];
|
|
@@ -151,50 +166,63 @@ export function differences(a, b, path = '') {
|
|
|
151
166
|
// The check of a name no project is registered under.
|
|
152
167
|
export function noProject(name, names) {
|
|
153
168
|
return new ConductorError(`no project ${name}`, [
|
|
154
|
-
names.length > 0 ? `registered: ${names.join(', ')}` : 'register one with `conduct project add <path>`',
|
|
169
|
+
names.length > 0 ? `registered: ${names.join(', ')}` : 'register one with `conduct project add <url | path>`',
|
|
155
170
|
]);
|
|
156
171
|
}
|
|
157
|
-
// The profile
|
|
158
|
-
//
|
|
159
|
-
//
|
|
160
|
-
|
|
161
|
-
|
|
172
|
+
// The profile as its layers give it now (the machine file over the repo's at origin/<base>) against
|
|
173
|
+
// this build's schema and the stored copy the daemon works from, and each file's `conductor` minimum
|
|
174
|
+
// against the fields it writes (ATK-580). The rest of the checks use the resolved profile when it
|
|
175
|
+
// reads (the daemon takes it on its next start, save or fetch), else the stored copy, else nothing.
|
|
176
|
+
export function profileCheck(project, paths, resolve) {
|
|
177
|
+
if (registeredByCheckout(paths, project)) {
|
|
178
|
+
return {
|
|
179
|
+
profile: null,
|
|
180
|
+
result: fail(`${project.name} is registered by the checkout ${project.clone}, which the conductor no longer works in`, `run \`conduct project add "${project.clone}"\`: it clones the checkout's origin into ${projectPaths(paths, project.name).clone} and keeps the registration`),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
let layered;
|
|
162
184
|
try {
|
|
163
|
-
|
|
185
|
+
layered = resolve();
|
|
164
186
|
}
|
|
165
187
|
catch (error) {
|
|
166
188
|
return {
|
|
167
189
|
profile: project.profile,
|
|
168
|
-
result: fail(messageOf(error), `fix ${project.
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
if (disk.name !== project.name) {
|
|
172
|
-
return {
|
|
173
|
-
profile: project.profile ?? disk,
|
|
174
|
-
result: fail(`${project.profilePath} renames the project to "${disk.name}"`, `put "name": "${project.name}" back: a project keeps the name it was registered under. Or rename it: \`conduct project remove ${project.name}\`, then \`conduct project add "${project.root}"\``),
|
|
190
|
+
result: fail(messageOf(error), `fix the profile (\`conduct profile ${project.name}\` names its files) and check again; until then the daemon keeps its stored copy`, detailsOf(error)),
|
|
175
191
|
};
|
|
176
192
|
}
|
|
193
|
+
const { layers, profile: now } = layered;
|
|
194
|
+
const minimum = combined([layers.machine, layers.repo].flatMap((layer) => layer === null ? [] : [minimumCheck(JSON.stringify(layer.raw), layer.label)]));
|
|
195
|
+
const files = [layers.machine, layers.repo].flatMap((l) => (l === null ? [] : [l.label])).join(' over ');
|
|
196
|
+
const moved = [layers.machine, layers.repo].flatMap((l) => l !== null && Object.hasOwn(l.raw, 'workers') ? [l.label] : []);
|
|
197
|
+
const checked = (outcome) => withMovedWorkers(withMinimum(outcome, minimum), moved);
|
|
177
198
|
if (project.profile === null) {
|
|
178
199
|
return {
|
|
179
|
-
profile:
|
|
180
|
-
result: warn(
|
|
200
|
+
profile: now,
|
|
201
|
+
result: checked(warn(`the profile (${files}) is valid, but the daemon's stored copy is one this build can't read (${project.problem ?? 'unknown'})`, 'the daemon takes the profile when it next starts, or after the next save or fetch')),
|
|
181
202
|
};
|
|
182
203
|
}
|
|
183
|
-
const changed = differences(project.profile,
|
|
204
|
+
const changed = differences(project.profile, now);
|
|
184
205
|
if (changed.length > 0) {
|
|
185
206
|
return {
|
|
186
|
-
profile:
|
|
187
|
-
result: warn(
|
|
207
|
+
profile: now,
|
|
208
|
+
result: checked(warn(`the profile (${files}) is valid, but ${changed.length === 1 ? 'a field differs' : `${changed.length} fields differ`} from the daemon's stored copy`, 'the daemon takes it after the next save of the machine profile or fetch of the clone, or when it next starts', changed)),
|
|
188
209
|
};
|
|
189
210
|
}
|
|
190
|
-
return {
|
|
211
|
+
return {
|
|
212
|
+
profile: now,
|
|
213
|
+
result: checked(ok(`the profile (${files}) is valid (protocol ${PROTOCOL}) and matches the stored copy`)),
|
|
214
|
+
};
|
|
191
215
|
}
|
|
192
216
|
// Which credential each provider the project uses signs in with (credentials.ts: a project token,
|
|
193
217
|
// then the machine's token, then the CLI login), and for each that isn't the project's own token, how
|
|
194
218
|
// to give it one scoped to the project. Advice only: any source that works passes.
|
|
195
219
|
async function authCheck(deps, profile) {
|
|
196
|
-
|
|
197
|
-
const
|
|
220
|
+
// Azure Pipelines that build a GitHub repo sign in to Azure DevOps too.
|
|
221
|
+
const pipelines = profile.ci.kind === 'ado-pipelines' ? ['ado'] : [];
|
|
222
|
+
const used = [...new Set([repoOf(profile).host, ...pipelines, TRACKER_API[profile.tracker.kind]])];
|
|
223
|
+
// The checked profile's ADO organization, which the stored one may not have yet.
|
|
224
|
+
const organization = adoOrganization(profile);
|
|
225
|
+
const probed = await Promise.all(used.map((provider) => deps.credentials.probe(provider, profile.name, { organization })));
|
|
198
226
|
const failing = probed.find((p) => p.error !== null);
|
|
199
227
|
// No source: nothing was found at all (Linear with no key, which has no CLI login).
|
|
200
228
|
const words = (source) => (source === null ? 'no credential' : SOURCE_WORDS[source]);
|
|
@@ -216,8 +244,7 @@ async function authCheck(deps, profile) {
|
|
|
216
244
|
const scoped = wide.map((provider) => {
|
|
217
245
|
const target = `conductor-${profile.name}-${provider}`;
|
|
218
246
|
const key = provider === 'linear' ? 'linear.credential' : `${provider}.token`;
|
|
219
|
-
|
|
220
|
-
return `for ${provider}, ${SCOPES[provider]}: cmdkey /generic:${target} /user:${user} /pass, then set projects.${profile.name}.${key} to "${target}" in config.json`;
|
|
247
|
+
return `for ${provider}, ${SCOPES[provider]}: ${deps.credentials.saveCommand(provider, target)}, then set projects.${profile.name}.${key} to "${target}" in config.json`;
|
|
221
248
|
});
|
|
222
249
|
return {
|
|
223
250
|
details: [...details, ...scoped],
|
|
@@ -229,11 +256,12 @@ async function authCheck(deps, profile) {
|
|
|
229
256
|
async function ciCheck(deps, profile) {
|
|
230
257
|
const repo = repoOf(profile);
|
|
231
258
|
const refusal = ciRefusal(profile, repo);
|
|
232
|
-
if (refusal !== null)
|
|
233
|
-
return fail(refusal,
|
|
259
|
+
if (refusal !== null) {
|
|
260
|
+
return fail(refusal, 'set ci to ado-pipelines for an Azure DevOps repo; for a GitHub repo, github-actions, or ado-pipelines with the organization and project whose pipelines build it');
|
|
261
|
+
}
|
|
234
262
|
let pipelines;
|
|
235
263
|
try {
|
|
236
|
-
pipelines = await deps.hosts(profile
|
|
264
|
+
pipelines = await deps.hosts(profile)(repo).ci.pipelines();
|
|
237
265
|
}
|
|
238
266
|
catch (error) {
|
|
239
267
|
return fail(`${profile.ci.kind} pipelines of ${repoKey(repo)} can't be listed: ${messageOf(error)}`, 'check that the account can read the pipelines', detailsOf(error));
|
|
@@ -255,16 +283,24 @@ async function ciCheck(deps, profile) {
|
|
|
255
283
|
return fail(problems.join('; '), `name each release's pipeline by its YAML file name, path or name, once; ${repoKey(repo)} has ${known.length > 0 ? known.join(', ') : 'none'}`);
|
|
256
284
|
}
|
|
257
285
|
const releases = resolved.length > 0 ? `; releases: ${resolved.join(', ')}` : '; no release pipelines named';
|
|
258
|
-
|
|
286
|
+
const found = `${pipelines.length} ${profile.ci.kind} pipelines on ${repoKey(repo)}${releases}`;
|
|
287
|
+
// Each release waits on a person at its kind's gate (release-kinds.ts), which `gates` should name.
|
|
288
|
+
const ungated = profile.releases.filter((r) => !profile.gates.includes(RELEASE_KINDS[r.kind].gate));
|
|
289
|
+
if (ungated.length > 0) {
|
|
290
|
+
return warn(`${found}, but gates leaves out ${ungated.map((r) => `release ${r.key}'s ${RELEASE_KINDS[r.kind].gate}`).join(', ')}`, `add ${[...new Set(ungated.map((r) => RELEASE_KINDS[r.kind].gate))].join(', ')} to the profile's gates`);
|
|
291
|
+
}
|
|
292
|
+
return ok(found);
|
|
259
293
|
}
|
|
260
294
|
async function codeHostCheck(deps, profile) {
|
|
261
295
|
const repo = repoOf(profile);
|
|
262
|
-
const { account, error } = await deps.credentials.probe(repo.host, profile.name
|
|
296
|
+
const { account, error } = await deps.credentials.probe(repo.host, profile.name, {
|
|
297
|
+
organization: adoOrganization(profile),
|
|
298
|
+
});
|
|
263
299
|
if (error !== null)
|
|
264
300
|
return fail(`${account.label} doesn't answer: ${error}`, `sign in: ${account.command}`);
|
|
265
301
|
let tip;
|
|
266
302
|
try {
|
|
267
|
-
tip = await deps.hosts(profile
|
|
303
|
+
tip = await deps.hosts(profile)(repo).branchTip(profile.baseBranch);
|
|
268
304
|
}
|
|
269
305
|
catch (caught) {
|
|
270
306
|
if (caught instanceof NotFound) {
|
|
@@ -276,9 +312,21 @@ async function codeHostCheck(deps, profile) {
|
|
|
276
312
|
return fail(`${repoKey(repo)} has no branch ${profile.baseBranch}`, "set baseBranch to the repo's base");
|
|
277
313
|
return ok(`${repoKey(repo)} answers as ${account.label}; ${profile.baseBranch} is at ${tip.slice(0, 7)}`);
|
|
278
314
|
}
|
|
315
|
+
// The layers' minimum checks as one: every file's problems, and the newest version that clears them.
|
|
316
|
+
function combined(checks) {
|
|
317
|
+
let needs = null;
|
|
318
|
+
for (const check of checks)
|
|
319
|
+
if (check.needs !== null && (needs === null || gt(check.needs, needs)))
|
|
320
|
+
needs = check.needs;
|
|
321
|
+
return { needs, problems: checks.flatMap((c) => c.problems) };
|
|
322
|
+
}
|
|
279
323
|
function detailsOf(error) {
|
|
280
324
|
return error instanceof ConductorError ? error.details : [];
|
|
281
325
|
}
|
|
326
|
+
// Exit 1 is git's "not ignored"; an error (128) says nothing either way, so it isn't warned about.
|
|
327
|
+
async function gitIgnores(checkout, file) {
|
|
328
|
+
return (await runGit(['check-ignore', '-q', file], checkout)).code !== 1;
|
|
329
|
+
}
|
|
282
330
|
async function healthCheck(deps, profile) {
|
|
283
331
|
const urls = Object.entries(profile.health ?? {});
|
|
284
332
|
if (urls.length === 0)
|
|
@@ -307,12 +355,14 @@ function messageOf(error) {
|
|
|
307
355
|
return error instanceof Error ? error.message : String(error);
|
|
308
356
|
}
|
|
309
357
|
async function portsCheck(deps, profile) {
|
|
358
|
+
if (profile.ports.length === 0)
|
|
359
|
+
return skip('the profile names no ports');
|
|
310
360
|
try {
|
|
311
|
-
const
|
|
361
|
+
const ports = await deps.ports.previewPorts(profile.ports);
|
|
312
362
|
const named = Object.entries(ports)
|
|
313
363
|
.map(([name, port]) => `${name} ${port}`)
|
|
314
364
|
.join(', ');
|
|
315
|
-
return ok(`a new worktree gets
|
|
365
|
+
return ok(`a new worktree gets ${named} from the machine's pool`);
|
|
316
366
|
}
|
|
317
367
|
catch (error) {
|
|
318
368
|
if (!(error instanceof ConductorError))
|
|
@@ -320,61 +370,38 @@ async function portsCheck(deps, profile) {
|
|
|
320
370
|
return fail(error.message, error.details[0] ?? '`conduct ports` lists the assignments');
|
|
321
371
|
}
|
|
322
372
|
}
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
return null;
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
// The main checkout's skills, read-only: the worktree hooks copy them into each worker's worktree.
|
|
332
|
-
async function skillsCheck(deps, root, profile) {
|
|
333
|
-
const read = deps.readSkill ?? readInstalledSkill;
|
|
334
|
-
const { aliases, verify, work } = profile.skills;
|
|
373
|
+
// The skills the profile names, read where a session finds them before any worktree exists: the
|
|
374
|
+
// conductor plugin's (conductor:<skill>), with the work skill's declared protocol. The project's
|
|
375
|
+
// own skills arrive through `setup` in each new worktree, so the worktree check looks for those.
|
|
376
|
+
async function skillsCheck(deps, profile, options) {
|
|
377
|
+
const { verify, work } = profile.skills;
|
|
335
378
|
const problems = [];
|
|
336
|
-
const installed = [];
|
|
337
|
-
// The conductor plugin's skills (conductor:<skill>) come with the package, not the checkout: read
|
|
338
|
-
// from its plugin and left out of the audit.
|
|
339
379
|
const plugin = deps.pluginDir ?? pluginSource();
|
|
340
|
-
const
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
installed.push(work);
|
|
351
|
-
const declared = declaredProtocol(workSkill);
|
|
380
|
+
const fromPlugin = [work, verify].filter((name) => pluginSkill(name) !== null);
|
|
381
|
+
for (const name of fromPlugin) {
|
|
382
|
+
const text = readPluginSkill(plugin, pluginSkill(name) ?? name);
|
|
383
|
+
if (text === null) {
|
|
384
|
+
problems.push(`${name} isn't in the conductor plugin`);
|
|
385
|
+
continue;
|
|
386
|
+
}
|
|
387
|
+
if (name !== work)
|
|
388
|
+
continue;
|
|
389
|
+
const declared = declaredProtocol(text);
|
|
352
390
|
if (declared === null)
|
|
353
391
|
problems.push(`${work} declares no worker protocol (protocol: ${PROTOCOL} in its frontmatter)`);
|
|
354
392
|
else if (declared !== PROTOCOL)
|
|
355
393
|
problems.push(`${work} speaks worker protocol ${declared}; this conductor speaks ${PROTOCOL}`);
|
|
356
394
|
}
|
|
357
|
-
if (
|
|
358
|
-
problems.
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
const
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
if (stale !== null && stale.length > 0)
|
|
368
|
-
problems.push(`atk audit: ${stale.join(', ').replace(/\s+/g, ' ')}`);
|
|
369
|
-
if (problems.length > 0) {
|
|
370
|
-
return fail(problems.join('; '), `atk install in ${root}, or set skills.work and skills.verify to the installed skills' names`);
|
|
371
|
-
}
|
|
372
|
-
const audited = stale === null ? '' : ', matching .atk-lock.json';
|
|
373
|
-
const summary = `${work} (worker protocol ${PROTOCOL}) and ${verify} are installed${audited}`;
|
|
374
|
-
if (missing.length > 0) {
|
|
375
|
-
return warn(`${summary}; the alias ${missing.join(', ')} isn't`, 'notes under an alias still count; install it only for launchers that call it (atk install), or drop it from skills.aliases once no item in flight uses it');
|
|
376
|
-
}
|
|
377
|
-
return ok(`${summary}${checkAliases && aliases.length > 0 ? `, as is ${aliases.join(', ')}` : ''}`);
|
|
395
|
+
if (problems.length > 0)
|
|
396
|
+
return fail(problems.join('; '), 'upgrade the conductor, or set skills.work and skills.verify to skills it has');
|
|
397
|
+
const own = [work, verify].filter((name) => pluginSkill(name) === null);
|
|
398
|
+
const plugged = fromPlugin.length > 0
|
|
399
|
+
? `${fromPlugin.join(' and ')} ${fromPlugin.length === 1 ? 'comes' : 'come'} with the conductor plugin`
|
|
400
|
+
: '';
|
|
401
|
+
const theirs = own.length === 0
|
|
402
|
+
? ''
|
|
403
|
+
: `${own.join(' and ')} ${own.length === 1 ? 'comes' : 'come'} from the project's setup: ${options.worktree ? 'the worktree check looked for' : '--no-worktree, so nothing looked for'} ${own.length === 1 ? 'it' : 'them'}`;
|
|
404
|
+
return ok([plugged, theirs].filter((s) => s !== '').join('; '));
|
|
378
405
|
}
|
|
379
406
|
// A timestamp safe in a worktree and branch name.
|
|
380
407
|
// To the millisecond, so two checks started together get worktrees of their own.
|
|
@@ -383,7 +410,9 @@ function stamp(at) {
|
|
|
383
410
|
}
|
|
384
411
|
async function trackerCheck(deps, profile) {
|
|
385
412
|
const { tracker } = profile;
|
|
386
|
-
const { account, error } = await deps.credentials.probe(TRACKER_API[tracker.kind], profile.name
|
|
413
|
+
const { account, error } = await deps.credentials.probe(TRACKER_API[tracker.kind], profile.name, {
|
|
414
|
+
organization: adoOrganization(profile),
|
|
415
|
+
});
|
|
387
416
|
if (error !== null)
|
|
388
417
|
return fail(`${account.label} doesn't answer: ${error}`, `sign in: ${account.command}`);
|
|
389
418
|
const where = tracker.kind === 'linear'
|
|
@@ -420,34 +449,103 @@ async function trackerCheck(deps, profile) {
|
|
|
420
449
|
}
|
|
421
450
|
return ok(`${where} lists ${items}, and ${prioritized} of its projects have a priority, as ${account.label}`);
|
|
422
451
|
}
|
|
423
|
-
//
|
|
424
|
-
//
|
|
425
|
-
|
|
452
|
+
// A profile that writes a field newer than its `conductor` minimum reads here, but an older conductor
|
|
453
|
+
// would refuse it with the fields it doesn't know instead of the one line that says to upgrade: a
|
|
454
|
+
// warn, beside whatever else the profile check found.
|
|
455
|
+
function withMinimum(outcome, { needs, problems }) {
|
|
456
|
+
if (problems.length === 0)
|
|
457
|
+
return outcome;
|
|
458
|
+
const below = `its "conductor" minimum is below ${problems.length === 1 ? 'a field' : `${problems.length} fields`} it writes`;
|
|
459
|
+
const fix = needs === null
|
|
460
|
+
? "the conductor's profile-fields.ts records no version for these fields: file it against the conductor"
|
|
461
|
+
: `raise "conductor" to ${needs}, the oldest conductor that reads every field the file writes`;
|
|
462
|
+
return {
|
|
463
|
+
details: [...outcome.details, ...problems],
|
|
464
|
+
fix: outcome.fix === null ? fix : `${outcome.fix}; ${fix}`,
|
|
465
|
+
status: 'warn',
|
|
466
|
+
summary: outcome.status === 'ok' ? `${outcome.summary}, but ${below}` : `${outcome.summary}; ${below}`,
|
|
467
|
+
};
|
|
468
|
+
}
|
|
469
|
+
// A profile file that still sets `workers`, which moved to the machine's config.json (ATK-529): it
|
|
470
|
+
// is read and ignored, so a warn, beside whatever else the profile check found.
|
|
471
|
+
function withMovedWorkers(outcome, files) {
|
|
472
|
+
if (files.length === 0)
|
|
473
|
+
return outcome;
|
|
474
|
+
const moved = `${files.join(' and ')} ${files.length === 1 ? 'sets' : 'set'} "workers", which moved to the machine's config.json and is ignored here`;
|
|
475
|
+
const fix = 'set "workers": { "tab": true } in ~/.conductor/config.json on each machine that wants a tab per launch, and drop "workers" from the profile';
|
|
476
|
+
return {
|
|
477
|
+
details: outcome.details,
|
|
478
|
+
fix: outcome.fix === null ? fix : `${outcome.fix}; ${fix}`,
|
|
479
|
+
status: 'warn',
|
|
480
|
+
summary: outcome.status === 'ok' ? `${outcome.summary}, but ${moved}` : `${outcome.summary}; ${moved}`,
|
|
481
|
+
};
|
|
482
|
+
}
|
|
483
|
+
// The launch's worktree stages on a throwaway worktree (manager.ts launchWorker): `git worktree add`
|
|
484
|
+
// from origin/<base>, the local files and setup, with ports as the broker would give them, then the
|
|
485
|
+
// skills check and the trust probe a launch's `claude --bg` meets (ATK-571). Whatever it made is
|
|
486
|
+
// removed, whichever way it went.
|
|
487
|
+
async function worktreeCheck(deps, { clone, dir }, profile, options) {
|
|
426
488
|
if (!options.worktree)
|
|
427
489
|
return skip('--no-worktree');
|
|
428
490
|
const name = `conduct-check-${stamp((deps.now ?? (() => new Date()))())}`;
|
|
429
|
-
|
|
491
|
+
const left = join(dir, name);
|
|
492
|
+
// The ports check reports a pool with too few free; setup then runs without them.
|
|
493
|
+
const env = portEnv(await deps.ports.previewPorts(profile.ports).catch(() => ({})));
|
|
430
494
|
let outcome;
|
|
431
495
|
try {
|
|
432
|
-
path = await deps.worktrees.create(
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
496
|
+
const path = await deps.worktrees.create({
|
|
497
|
+
base: profile.baseBranch,
|
|
498
|
+
clone,
|
|
499
|
+
env: { ...env, CONDUCTOR_ITEM: name, CONDUCTOR_PROJECT: profile.name, CONDUCTOR_WORKTREE: left },
|
|
500
|
+
...(profile.localFilesFrom === undefined ? {} : { localFilesFrom: profile.localFilesFrom }),
|
|
501
|
+
name,
|
|
502
|
+
path: left,
|
|
503
|
+
sessionEnv: env,
|
|
504
|
+
setup: profile.setup,
|
|
505
|
+
});
|
|
506
|
+
const skills = [profile.skills.work, profile.skills.verify];
|
|
507
|
+
const problem = deps.worktrees.missingSkills(path, projectSkills(skills));
|
|
508
|
+
const ignored = await (deps.ignores ?? gitIgnores)(path, SESSION_SETTINGS);
|
|
509
|
+
const made = `created ${name} from origin/${profile.baseBranch}${profile.setup.length > 0 ? ` and ran its ${profile.setup.length} setup ${profile.setup.length === 1 ? 'command' : 'commands'}` : ''}, then removed it`;
|
|
510
|
+
if (problem !== null) {
|
|
511
|
+
outcome = fail(`${MISSING_SKILLS} ${problem}`, "add what installs them to the profile's setup (ATK's runs atk install), or install them in ~/.claude/skills");
|
|
512
|
+
}
|
|
513
|
+
else {
|
|
514
|
+
// Before the remove below: the probe's session is gone before its directory is.
|
|
515
|
+
let trust;
|
|
516
|
+
try {
|
|
517
|
+
trust = await deps.claude.trusts(path, name);
|
|
518
|
+
}
|
|
519
|
+
catch (error) {
|
|
520
|
+
trust = { error };
|
|
521
|
+
}
|
|
522
|
+
outcome =
|
|
523
|
+
'error' in trust
|
|
524
|
+
? fail(`claude --bg couldn't start a session in a new worktree: ${messageOf(trust.error)}`, 'a launch fails the same way: run `claude --bg` in a worktree of the clone to see why', detailsOf(trust.error))
|
|
525
|
+
: !trust.trusted
|
|
526
|
+
? fail(`Claude Code doesn't trust ${clone}, so no worker can start in its worktrees`, `${trustStep(clone)}, then check again`)
|
|
527
|
+
: trust.removeError !== null
|
|
528
|
+
? warn(`${made}, but the trust probe's idle session ${trust.session} is still there`, `remove it: claude rm ${trust.session}`, [trust.removeError])
|
|
529
|
+
: !ignored && Object.keys(env).length > 0
|
|
530
|
+
? warn(`${made}, but git doesn't ignore ${SESSION_SETTINGS}, where a worker's ports go`, `add ${SESSION_SETTINGS.split('\\').join('/')} to .gitignore, so a worker doesn't take the file for work of its own`)
|
|
531
|
+
: ok(`${made}; its skills are there, and Claude Code trusts it`);
|
|
532
|
+
}
|
|
438
533
|
}
|
|
439
534
|
catch (error) {
|
|
440
|
-
outcome = fail(`
|
|
535
|
+
outcome = fail(`a new worktree couldn't be made: ${messageOf(error)}`, "check the profile's baseBranch, localFilesFrom and setup; the failing step's output is above", detailsOf(error));
|
|
441
536
|
}
|
|
442
|
-
// A create that failed part way can leave its directory behind
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
537
|
+
// A create that failed part way can leave its directory or branch behind; with neither, this
|
|
538
|
+
// removes nothing.
|
|
539
|
+
try {
|
|
540
|
+
await deps.worktrees.remove(left, { deleteBranch: true, repo: clone });
|
|
541
|
+
}
|
|
542
|
+
catch (error) {
|
|
543
|
+
return fail(`${left} is still there: ${messageOf(error)}`, `remove it by hand: delete the directory, then git -C ${clone} worktree prune and git -C ${clone} branch -D ${BRANCH_PREFIX}${name}`, [
|
|
544
|
+
`before that: ${outcome.status} ${outcome.summary}`,
|
|
545
|
+
...outcome.details,
|
|
546
|
+
...(outcome.fix === null ? [] : [`its fix: ${outcome.fix}`]),
|
|
547
|
+
...detailsOf(error),
|
|
548
|
+
]);
|
|
451
549
|
}
|
|
452
550
|
return outcome;
|
|
453
551
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-check.js","sourceRoot":"","sources":["../src/project-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,OAAO,EAAiB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAgB,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,mGAAmG;AACnG,qGAAqG;AACrG,qGAAqG;AACrG,gDAAgD;AAEhD,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,SAAS;IACT,MAAM;IACN,SAAS;IACT,WAAW;IACX,IAAI;IACJ,UAAU;IACV,QAAQ;IACR,OAAO;IACP,QAAQ;CACA,CAAC;AAGX,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC,MAAM,YAAY,GAA+C;IAC/D,WAAW,EAAE,WAAW;IACxB,eAAe,EAAE,qBAAqB;IACtC,eAAe,EAAE,eAAe;CACjC,CAAC;AACF,oGAAoG;AACpG,qBAAqB;AACrB,MAAM,MAAM,GAAuC;IACjD,GAAG,EAAE,oHAAoH;IACzH,MAAM,EACJ,mHAAmH;IACrH,MAAM,EAAE,gDAAgD;CACzD,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACrB,yFAAyF;IACzF,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,qCAAqC;IACrC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,yFAAyF;IACzF,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;AA4BxG,MAAM,EAAE,GAAG,CAAC,OAAe,EAAE,UAAoB,EAAE,EAAW,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AACjH,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,GAAW,EAAE,UAAoB,EAAE,EAAW,EAAE,CAAC,CAAC;IAC/E,OAAO;IACP,GAAG;IACH,MAAM,EAAE,MAAM;IACd,OAAO;CACR,CAAC,CAAC;AACH,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,GAAW,EAAE,UAA6B,EAAE,EAAW,EAAE,CAAC,CAAC;IACxF,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;IACrB,GAAG;IACH,MAAM,EAAE,MAAM;IACd,OAAO;CACR,CAAC,CAAC;AACH,MAAM,IAAI,GAAG,CAAC,OAAe,EAAW,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAEjG,6DAA6D;AAC7D,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC7C,MAAM,MAAM,GAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAW;SAC/C,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAU,CAAC;SAC5F,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;SACxB,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AACzD,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,UAAU,CAAC,MAAmB;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,CAAC,iBAAiB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAChC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uGAAuG;AACvG,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAuB,EACvB,OAAgB,EAChB,OAAqB;IAErB,qFAAqF;IACrF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgE,CAAC;IACvF,MAAM,IAAI,GAAqB;QAC7B,GAAG,KAAK;QACR,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE;gBACxB,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACzE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACvB,OAAO,KAAK,CAAC;YACf,CAAC;SACF;KACF,CAAC;IACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,OAAO,GAAkB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACjE,MAAM,KAAK,GAA0D;QACnE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/B,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAClE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KACxC,CAAC;IACF,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,4CAA4C,CAAC,EAAE,CAAC,CAAC;YAC/E,SAAS;QACX,CAAC;QACD,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,GAAG,IAAI,CAAC,qBAAqB,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,iDAAiD,EAAE;gBACzG,GAAG,SAAS,CAAC,KAAK,CAAC;aACpB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;AAC5C,CAAC;AAED,kGAAkG;AAClG,6BAA6B;AAC7B,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,WAAW,GAAG,wCAAwC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,mCAAmC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnG,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,WAAW,CAAC,CAAU,EAAE,CAAU,EAAE,IAAI,GAAG,EAAE;IAC3D,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACrG,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,KAAwB;IAC9D,OAAO,IAAI,cAAc,CAAC,cAAc,IAAI,EAAE,EAAE;QAC9C,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,gDAAgD;KACxG,CAAC,CAAC;AACL,CAAC;AAED,iGAAiG;AACjG,iGAAiG;AACjG,sCAAsC;AACtC,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,IAAI,CACV,SAAS,CAAC,KAAK,CAAC,EAChB,OAAO,OAAO,CAAC,WAAW,+DAA+D,EACzF,SAAS,CAAC,KAAK,CAAC,CACjB;SACF,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;YAChC,MAAM,EAAE,IAAI,CACV,GAAG,OAAO,CAAC,WAAW,4BAA4B,IAAI,CAAC,IAAI,GAAG,EAC9D,gBAAgB,OAAO,CAAC,IAAI,oGAAoG,OAAO,CAAC,IAAI,mCAAmC,OAAO,CAAC,IAAI,KAAK,CACjM;SACF,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI,CACV,GAAG,YAAY,yEAAyE,OAAO,CAAC,OAAO,IAAI,SAAS,GAAG,EACvH,gFAAgF,CACjF;SACF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI,CACV,GAAG,YAAY,kBAAkB,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,gBAAgB,gCAAgC,EAC7I,oEAAoE,EACpE,OAAO,CACR;SACF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,YAAY,uBAAuB,QAAQ,+BAA+B,CAAC,EAAE,CAAC;AACtH,CAAC;AAED,kGAAkG;AAClG,sGAAsG;AACtG,mFAAmF;AACnF,KAAK,UAAU,SAAS,CAAC,IAAsB,EAAE,OAAgB;IAC/D,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/F,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzG,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IACrD,oFAAoF;IACpF,MAAM,KAAK,GAAG,CAAC,MAA+B,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9G,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CACxB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CACrB,GAAG,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,EAAE,CAC1G,CAAC;IACF,IAAI,OAAO,EAAE,CAAC;QACZ,0FAA0F;QAC1F,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QACnC,MAAM,IAAI,GACR,MAAM,KAAK,WAAW;YACpB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,MAAM,KAAK,IAAI;gBACf,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,8DAA8D,CAAC;QACvE,OAAO,IAAI,CACT,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,4BAA4B,EACvD,GAAG,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EACrC,OAAO,CACR,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvG,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5F,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QACnB,OAAO,EAAE,CAAC,kDAAkD,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrG,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,aAAa,OAAO,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,QAAQ,QAAQ,CAAC;QAC9E,MAAM,IAAI,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;QACtD,OAAO,OAAO,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,qBAAqB,MAAM,UAAU,IAAI,6BAA6B,OAAO,CAAC,IAAI,IAAI,GAAG,QAAQ,MAAM,kBAAkB,CAAC;IACvK,CAAC,CAAC,CAAC;IACH,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC;QAChC,GAAG,EAAE,WAAW,OAAO,CAAC,IAAI,wEAAwE;QACpG,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAsB,EAAE,OAAgB;IAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,OAAO,KAAK,IAAI;QAClB,OAAO,IAAI,CAAC,OAAO,EAAE,0FAA0F,CAAC,CAAC;IACnH,IAAI,SAAS,CAAC;IACd,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;IAClE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CACT,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,iBAAiB,OAAO,CAAC,IAAI,CAAC,qBAAqB,SAAS,CAAC,KAAK,CAAC,EAAE,EACvF,+CAA+C,EAC/C,SAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aACvF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,GAAG,6BAA6B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;;YAEjH,QAAQ,CAAC,IAAI,CACX,WAAW,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,QAAQ,WAAW,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAC1G,CAAC;IACN,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5D,OAAO,IAAI,CACT,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EACnB,2EAA2E,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAC/I,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B,CAAC;IAC7G,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,iBAAiB,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAsB,EAAE,OAAgB;IACnE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,oBAAoB,KAAK,EAAE,EAAE,YAAY,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5G,IAAI,GAAkB,CAAC;IACvB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3E,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,IAAI,MAAM,YAAY,QAAQ,EAAE,CAAC;YAC/B,OAAO,IAAI,CACT,GAAG,OAAO,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,KAAK,eAAe,EACjE,iFAAiF,EACjF,CAAC,MAAM,CAAC,OAAO,CAAC,CACjB,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CACT,GAAG,OAAO,CAAC,IAAI,CAAC,mBAAmB,SAAS,CAAC,MAAM,CAAC,EAAE,EACtD,gDAAgD,EAChD,SAAS,CAAC,MAAM,CAAC,CAClB,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,KAAK,IAAI;QACd,OAAO,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,UAAU,EAAE,EAAE,mCAAmC,CAAC,CAAC;IAC3G,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,UAAU,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5G,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,KAAK,YAAY,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAsB,EAAE,OAAgB;IACjE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,+BAA+B,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;IAC/C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAA0B,EAAE;QACpD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACxF,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YAC9B,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,GAAG,aAAa,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,GAAG,GAAG,KAAK,GAAG,mBAAmB,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9D,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IACF,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACnD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CACT,GAAG,QAAQ,CAAC,MAAM,OAAO,IAAI,CAAC,MAAM,2BAA2B,EAC/D,oFAAoF,EACpF,QAAQ,CACT,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAsB,EAAE,OAAgB;IAChE,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aAChC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;aACxC,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,EAAE,CAAC,4BAA4B,IAAI,KAAK,KAAK,cAAc,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,cAAc,CAAC;YAAE,MAAM,KAAK,CAAC;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,uCAAuC,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,IAAY;IACpD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IACjF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,mGAAmG;AACnG,KAAK,UAAU,WAAW,CAAC,IAAsB,EAAE,IAAY,EAAE,OAAgB;IAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAClD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IACjD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,kGAAkG;IAClG,6CAA6C;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,IAAI,YAAY,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,CAAC,IAAY,EAAiB,EAAE;QAC9C,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5E,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,IAAY,EAAU,EAAE,CACtC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,+BAA+B,CAAC;IACnF,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,SAAS,KAAK,IAAI;QAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC3E,CAAC;QACJ,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI;YAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,QAAQ,KAAK,IAAI;YACnB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,2CAA2C,QAAQ,sBAAsB,CAAC,CAAC;aAC7F,IAAI,QAAQ,KAAK,QAAQ;YAC5B,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,2BAA2B,QAAQ,2BAA2B,QAAQ,EAAE,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI;QAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACvF,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI;QAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9D,6FAA6F;IAC7F,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAChD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,8DAA8D;IAC9D,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9F,2FAA2F;IAC3F,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7G,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CACT,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EACnB,kBAAkB,IAAI,uEAAuE,CAC9F,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC;IAClE,MAAM,OAAO,GAAG,GAAG,IAAI,qBAAqB,QAAQ,SAAS,MAAM,iBAAiB,OAAO,EAAE,CAAC;IAC9F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CACT,GAAG,OAAO,eAAe,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EACnD,2JAA2J,CAC5J,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC,GAAG,OAAO,GAAG,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtG,CAAC;AAED,kDAAkD;AAClD,iFAAiF;AACjF,SAAS,KAAK,CAAC,EAAQ;IACrB,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAsB,EAAE,OAAgB;IAClE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjG,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,oBAAoB,KAAK,EAAE,EAAE,YAAY,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5G,MAAM,KAAK,GACT,OAAO,CAAC,IAAI,KAAK,QAAQ;QACvB,CAAC,CAAC,eAAe,OAAO,CAAC,IAAI,EAAE;QAC/B,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY;YAC7B,CAAC,CAAC,qBAAqB,OAAO,CAAC,KAAK,GAAG;YACvC,CAAC,CAAC,uBAAuB,OAAO,CAAC,UAAU,EAAE,CAAC;IACpD,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACH,uEAAuE;QACvE,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IAChG,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,MAAM,GAAG,GACP,OAAO,CAAC,IAAI,KAAK,QAAQ;YACvB,CAAC,CAAC,wBAAwB,OAAO,CAAC,IAAI,sCAAsC,OAAO,CAAC,KAAK,UAAU;YACnG,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY;gBAC7B,CAAC,CAAC,yBAAyB,OAAO,CAAC,KAAK,gCAAgC,OAAO,CAAC,KAAK,UAAU;gBAC/F,CAAC,CAAC,gFAAgF,OAAO,CAAC,KAAK,cAAc,CAAC;QACpH,OAAO,IAAI,CAAC,GAAG,KAAK,mBAAmB,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAClG,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC,GAAG,KAAK,UAAU,KAAK,QAAQ,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACzF,uFAAuF;IACvF,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnE,OAAO,IAAI,CACT,GAAG,KAAK,oCAAoC,EAC5C,wBAAwB,OAAO,CAAC,IAAI,sCAAsC,OAAO,CAAC,KAAK,UAAU,CAClG,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CACT,GAAG,KAAK,UAAU,KAAK,6CAA6C,OAAO,CAAC,cAAc,GAAG,EAC7F,iHAAiH,CAClH,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAClG,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CACT,GAAG,KAAK,UAAU,KAAK,oEAAoE,EAC3F,gDAAgD,CACjD,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC,GAAG,KAAK,UAAU,KAAK,SAAS,WAAW,wCAAwC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AAChH,CAAC;AAED,iGAAiG;AACjG,0FAA0F;AAC1F,KAAK,UAAU,aAAa,CAC1B,IAAsB,EACtB,IAAY,EACZ,OAAgB,EAChB,OAAqB;IAErB,IAAI,CAAC,OAAO,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,iBAAiB,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1E,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpH,OAAO;YACL,OAAO,KAAK,IAAI;gBACd,CAAC,CAAC,EAAE,CAAC,0CAA0C,IAAI,wBAAwB,CAAC;gBAC5E,CAAC,CAAC,IAAI,CACF,4BAA4B,OAAO,EAAE,EACrC,kBAAkB,IAAI,4CAA4C,CACnE,CAAC;IACV,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,IAAI,CACZ,kDAAkD,SAAS,CAAC,KAAK,CAAC,EAAE,EACpE,mIAAmI,IAAI,6BAA6B,IAAI,uBAAuB,IAAI,EAAE,EACrM,SAAS,CAAC,KAAK,CAAC,CACjB,CAAC;IACJ,CAAC;IACD,gEAAgE;IAChE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAC9D,IAAI,IAAI,KAAK,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CACT,GAAG,IAAI,oBAAoB,SAAS,CAAC,KAAK,CAAC,EAAE,EAC7C,6BAA6B,IAAI,4BAA4B,IAAI,iBAAiB,IAAI,uBAAuB,IAAI,EAAE,EACnH,CAAC,gBAAgB,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAC3E,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"project-check.js","sourceRoot":"","sources":["../src/project-check.ts"],"names":[],"mappings":"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"}
|
package/build/pushover.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { secretStore } from "./host/secrets.js";
|
|
2
2
|
import { isDefaultHome } from "./paths.js";
|
|
3
3
|
const ENDPOINT = 'https://api.pushover.net/1/messages.json';
|
|
4
|
-
const MACHINE_CREDENTIAL = '
|
|
4
|
+
const MACHINE_CREDENTIAL = 'conductor-pushover';
|
|
5
5
|
// The credential a home's daemon reads: the one its config.json names, else the machine's, but
|
|
6
6
|
// only in ~/.conductor. A scratch home that names none pushes nothing to the machine's phone.
|
|
7
7
|
export function pushoverCredential(configured, home) {
|
|
@@ -10,16 +10,16 @@ export function pushoverCredential(configured, home) {
|
|
|
10
10
|
// Sends from the daemon. The keys come from PUSHOVER_TOKEN and PUSHOVER_USER, else the credential,
|
|
11
11
|
// read when a message first goes out and again after Pushover refuses them, so a credential saved
|
|
12
12
|
// while the daemon runs is picked up. They are never logged, stored or put in an error.
|
|
13
|
-
export function pushoverSender({ credential, env = process.env, fetch: fetchImpl = fetch,
|
|
13
|
+
export function pushoverSender({ credential, env = process.env, fetch: fetchImpl = fetch, secrets = secretStore(), timeoutMs = 15_000, }) {
|
|
14
14
|
let cached = null;
|
|
15
|
-
// One
|
|
15
|
+
// One store read at a time: pushes that start together share it.
|
|
16
16
|
let reading = null;
|
|
17
17
|
const read = async () => {
|
|
18
18
|
if (credential === null)
|
|
19
19
|
return {
|
|
20
20
|
error: `no PUSHOVER_TOKEN and PUSHOVER_USER, and no notify.pushover.credential in this home's config.json (only ~/.conductor falls back to ${MACHINE_CREDENTIAL})`,
|
|
21
21
|
};
|
|
22
|
-
const found = await
|
|
22
|
+
const found = await secrets.read(credential, env);
|
|
23
23
|
if (!found.found)
|
|
24
24
|
return { error: `no PUSHOVER_TOKEN and PUSHOVER_USER, and ${found.reason}` };
|
|
25
25
|
if (!found.credential.user)
|