@detergent-software/conductor 3.0.0-dev.2 → 3.0.0-dev.20
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 +161 -0
- package/README.md +154 -42
- 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 +119 -54
- 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 +95 -22
- package/build/code-host-cli.js.map +1 -1
- package/build/code-host.js +13 -8
- package/build/code-host.js.map +1 -1
- package/build/config.js +31 -12
- package/build/config.js.map +1 -1
- package/build/console.js +40 -24
- package/build/console.js.map +1 -1
- package/build/credentials.js +26 -24
- package/build/credentials.js.map +1 -1
- package/build/daemon.js +35 -21
- package/build/daemon.js.map +1 -1
- package/build/help.js +138 -28
- package/build/help.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/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/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 +50 -5
- package/build/inbox.js.map +1 -1
- package/build/init.js +508 -0
- package/build/init.js.map +1 -0
- package/build/lib/providers/ado/pipelines.js +79 -13
- package/build/lib/providers/ado/pipelines.js.map +1 -1
- package/build/lib/providers/github/actions.js +85 -2
- package/build/lib/providers/github/actions.js.map +1 -1
- package/build/lib/providers/index.js +2 -1
- package/build/lib/providers/index.js.map +1 -1
- package/build/lib/providers/npm/stage.js +14 -4
- 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/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/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 +149 -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 +60 -38
- package/build/profile.js.map +1 -1
- package/build/project-check-cli.js +18 -10
- package/build/project-check-cli.js.map +1 -1
- package/build/project-check.js +179 -97
- 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/rule-actions.js +3 -1
- 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 +11 -2
- package/build/rules.js.map +1 -1
- package/build/runs.js +49 -0
- package/build/runs.js.map +1 -1
- package/build/scheduler.js +11 -1
- package/build/scheduler.js.map +1 -1
- package/build/server.js +3 -24
- package/build/server.js.map +1 -1
- package/build/spend.js +4 -0
- package/build/spend.js.map +1 -1
- package/build/store.js +82 -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 +16 -1
- package/build/upgrade.js.map +1 -1
- package/build/wait.js +6 -6
- package/build/wait.js.map +1 -1
- package/build/watchers/ado.js +3 -2
- package/build/watchers/ado.js.map +1 -1
- package/build/watchers/github.js +3 -2
- package/build/watchers/github.js.map +1 -1
- package/build/watchers/npm.js +6 -4
- package/build/watchers/npm.js.map +1 -1
- 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 +3 -3
- package/plugin/skills/work-item/SKILL.md +5 -3
- 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/tab.js +0 -32
- package/build/tab.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm-reads.js","sourceRoot":"","sources":["../src/npm-reads.ts"],"names":[],"mappings":"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"}
|
package/build/paths.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { realpathSync } from 'node:fs';
|
|
1
2
|
import { homedir } from 'node:os';
|
|
2
|
-
import { join, resolve } from 'node:path';
|
|
3
|
+
import { basename, dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
|
|
4
|
+
// A project's name, as its profile and its folder under <home>/projects give it.
|
|
5
|
+
export const PROJECT_NAME = /^[a-z][a-z0-9-]*$/;
|
|
3
6
|
export function conductorPaths(home = process.env.CONDUCTOR_HOME || defaultHome()) {
|
|
4
7
|
const logs = join(home, 'logs');
|
|
5
8
|
return {
|
|
@@ -12,6 +15,7 @@ export function conductorPaths(home = process.env.CONDUCTOR_HOME || defaultHome(
|
|
|
12
15
|
pid: join(home, 'conductor.pid'),
|
|
13
16
|
plugin: join(home, 'plugin'),
|
|
14
17
|
port: join(home, 'port'),
|
|
18
|
+
projects: join(home, 'projects'),
|
|
15
19
|
rules: join(home, 'rules.json'),
|
|
16
20
|
stopRequest: join(home, 'supervisor.stop'),
|
|
17
21
|
supervisorPid: join(home, 'supervisor.pid'),
|
|
@@ -23,6 +27,45 @@ export function conductorPaths(home = process.env.CONDUCTOR_HOME || defaultHome(
|
|
|
23
27
|
export function isDefaultHome(home) {
|
|
24
28
|
return samePath(home, defaultHome());
|
|
25
29
|
}
|
|
30
|
+
// The project whose clone or worktree a path is in (<projects>/<name>/repo or
|
|
31
|
+
// <projects>/<name>/worktrees/<item>, or a folder below either), or null.
|
|
32
|
+
export function projectOfPath(paths, path) {
|
|
33
|
+
// Real paths on both sides: git reports a checkout's long form, and the home may be a junction or
|
|
34
|
+
// an 8.3 short name.
|
|
35
|
+
const rel = relative(realOr(paths.projects), realOr(path));
|
|
36
|
+
if (rel === '' || rel.startsWith('..') || isAbsolute(rel))
|
|
37
|
+
return null;
|
|
38
|
+
const [name, part] = rel.split(sep);
|
|
39
|
+
if (name === undefined || !(part === 'repo' || part === 'worktrees'))
|
|
40
|
+
return null;
|
|
41
|
+
return PROJECT_NAME.test(name) ? name : null;
|
|
42
|
+
}
|
|
43
|
+
export function projectPaths(paths, name) {
|
|
44
|
+
const dir = join(paths.projects, name);
|
|
45
|
+
return {
|
|
46
|
+
clone: join(dir, 'repo'),
|
|
47
|
+
dir,
|
|
48
|
+
profile: join(paths.projects, `${name}.json`),
|
|
49
|
+
worktrees: join(dir, 'worktrees'),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// The path with links and short names resolved. A path that isn't there is its deepest folder that
|
|
53
|
+
// is, resolved, with the rest after it, so two spellings of one place still compare equal.
|
|
54
|
+
export function realOr(path) {
|
|
55
|
+
const full = resolve(path);
|
|
56
|
+
for (let dir = full, rest = '';;) {
|
|
57
|
+
try {
|
|
58
|
+
return join(realpathSync.native(dir), rest);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
const parent = dirname(dir);
|
|
62
|
+
if (parent === dir)
|
|
63
|
+
return full;
|
|
64
|
+
rest = join(basename(dir), rest);
|
|
65
|
+
dir = parent;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
26
69
|
// Whether two paths name the same file, ignoring case on Windows.
|
|
27
70
|
export function samePath(a, b) {
|
|
28
71
|
const norm = (p) => {
|
package/build/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
|
package/build/plugin.js
CHANGED
|
@@ -28,6 +28,16 @@ export function missingPluginSkills(dir, names) {
|
|
|
28
28
|
});
|
|
29
29
|
return missing.length === 0 ? null : `${missing.join(', ')} not in the conductor plugin (${dir})`;
|
|
30
30
|
}
|
|
31
|
+
// Which of the named skills outside the plugin a session in the worktree wouldn't find: neither in
|
|
32
|
+
// its .claude/skills nor in the user's (`skillsHome`, ~/.claude/skills). A project's skills arrive
|
|
33
|
+
// through its `setup` (ATK's runs `atk install`), so this checks only that they arrived.
|
|
34
|
+
export function missingProjectSkills(worktree, names, skillsHome) {
|
|
35
|
+
const found = (dir, name) => existsSync(join(dir, name, 'SKILL.md'));
|
|
36
|
+
const missing = projectSkills(names).filter((name) => !found(join(worktree, '.claude', 'skills'), name) && !found(skillsHome, name));
|
|
37
|
+
return missing.length === 0
|
|
38
|
+
? null
|
|
39
|
+
: `${missing.join(', ')} not in ${join(worktree, '.claude', 'skills')} or ${skillsHome} after setup`;
|
|
40
|
+
}
|
|
31
41
|
// A skill named `conductor:<skill>` is the conductor plugin's, which `--plugin-dir` loads; any
|
|
32
42
|
// other is one the project installs (.atk-lock.json). The note headings take the bare name.
|
|
33
43
|
export function noteName(name) {
|
package/build/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC9G,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAkB,MAAM,UAAU,CAAC;AAEpD,mGAAmG;AACnG,iGAAiG;AACjG,iGAAiG;AACjG,oGAAoG;AACpG,8EAA8E;AAE9E,wEAAwE;AACxE,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC;AACvC,MAAM,QAAQ,GAAG,GAAG,WAAW,IAAI,WAAW,EAAE,CAAC;AAEjD,0FAA0F;AAC1F,sFAAsF;AACtF,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,2BAA2B,EAAE,uBAAuB,CAAC,CAAC;AAErF,gGAAgG;AAChG,0DAA0D;AAC1D,MAAM,IAAI,GAAG,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;AAOxD,uGAAuG;AACvG,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,KAAwB;IACvE,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACpC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC,GAAG,GAAG,CAAC;AACpG,CAAC;AAED,mGAAmG;AACnG,mGAAmG;AACnG,yFAAyF;AACzF,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,KAAwB,EAAE,UAAkB;IACjG,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,IAAY,EAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9F,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CACzC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CACxF,CAAC;IACF,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC;QACzB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,UAAU,cAAc,CAAC;AACzG,CAAC;AAED,+FAA+F;AAC/F,4FAA4F;AAC5F,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACnC,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,MAAM,GAAG,GAAG,WAAW,GAAG,CAAC;IACjC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpE,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,WAAW,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SAChD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;SAC1F,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,YAAY;IAC1B,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,aAAa,CAAC,KAAwB;IACpD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,KAAa;IACxD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,sGAAsG;AACtG,mGAAmG;AACnG,8FAA8F;AAC9F,MAAM,UAAU,sBAAsB,CAAC,KAA8C;IACnF,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7F,OAAO,aAAa,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAClH,CAAC;AAED,mGAAmG;AACnG,mGAAmG;AACnG,kGAAkG;AAClG,gGAAgG;AAChG,0BAA0B;AAC1B,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,IAAY,EAAE,YAAoC,EAAE;IAChG,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAkB,CAAC;IAC1E,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;SAC7B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACnD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;QACxC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACzE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1E,KAAK,MAAM,IAAI,IAAI,OAAO;QAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACvC,CAAC;AAED,4FAA4F;AAC5F,kGAAkG;AAClG,oGAAoG;AACpG,kBAAkB;AAClB,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAA8C;IAChF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,MAAM,IAAI,cAAc,CAAC,2BAA2B,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACtG,MAAM,QAAQ,GAAG,CAAC;SACf,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SACtE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpF,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACvF,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC;QAAE,MAAM,IAAI,cAAc,CAAC,uBAAuB,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACtH,mEAAmE;IACnE,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IAC/D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,IAAI,CAAC,OAAwB;IACpC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,mFAAmF;AACnF,SAAS,OAAO,CAAC,GAAW;IAC1B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/E,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,SAAS;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAAE,SAAS;QAC9D,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { gt, lt, valid } from 'semver';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { parseJsonc } from "./jsonc.js";
|
|
4
|
+
// The first conductor that reads protocol 2: one older refuses the profile on `protocol` first, so
|
|
5
|
+
// a field it already read needs no minimum.
|
|
6
|
+
export const PROTOCOL_2 = '2.0.0';
|
|
7
|
+
// The conductor that first read each profile field as it is written today (ATK-577): a reshaped
|
|
8
|
+
// field takes the version of its new shape. A profile that writes a field newer than PROTOCOL_2
|
|
9
|
+
// needs its `conductor` minimum at or above that version. The type makes a new field a typecheck
|
|
10
|
+
// error until it has a version; the README (On PATH) says which one a new field takes. A key
|
|
11
|
+
// two tracker kinds share takes the newer kind's (Linear's releaseWait is 2.0.0's).
|
|
12
|
+
export const FIELD_SINCE = {
|
|
13
|
+
approvers: PROTOCOL_2,
|
|
14
|
+
areaRelease: '2.2.0-dev.2',
|
|
15
|
+
baseBranch: PROTOCOL_2,
|
|
16
|
+
ci: PROTOCOL_2,
|
|
17
|
+
'ci.kind': PROTOCOL_2,
|
|
18
|
+
codeHost: PROTOCOL_2,
|
|
19
|
+
'codeHost.kind': PROTOCOL_2,
|
|
20
|
+
'codeHost.organization': PROTOCOL_2,
|
|
21
|
+
'codeHost.owner': PROTOCOL_2,
|
|
22
|
+
'codeHost.project': PROTOCOL_2,
|
|
23
|
+
'codeHost.repo': PROTOCOL_2,
|
|
24
|
+
'codeHost.repository': PROTOCOL_2,
|
|
25
|
+
conductor: '3.0.0-dev.9',
|
|
26
|
+
gates: PROTOCOL_2,
|
|
27
|
+
health: PROTOCOL_2,
|
|
28
|
+
localFilesFrom: '3.0.0-dev.4',
|
|
29
|
+
name: PROTOCOL_2,
|
|
30
|
+
npm: PROTOCOL_2,
|
|
31
|
+
'npm.package': PROTOCOL_2,
|
|
32
|
+
ports: '3.0.0-dev.4',
|
|
33
|
+
protocol: PROTOCOL_2,
|
|
34
|
+
release: PROTOCOL_2,
|
|
35
|
+
'release.handoff': PROTOCOL_2,
|
|
36
|
+
releases: PROTOCOL_2,
|
|
37
|
+
'releases.key': PROTOCOL_2,
|
|
38
|
+
'releases.kind': PROTOCOL_2,
|
|
39
|
+
'releases.package': PROTOCOL_2,
|
|
40
|
+
'releases.pipeline': PROTOCOL_2,
|
|
41
|
+
rules: PROTOCOL_2,
|
|
42
|
+
'rules.do': PROTOCOL_2,
|
|
43
|
+
'rules.id': PROTOCOL_2,
|
|
44
|
+
'rules.note': PROTOCOL_2,
|
|
45
|
+
'rules.when': PROTOCOL_2,
|
|
46
|
+
setup: '3.0.0-dev.4',
|
|
47
|
+
skills: PROTOCOL_2,
|
|
48
|
+
'skills.aliases': PROTOCOL_2,
|
|
49
|
+
'skills.verify': PROTOCOL_2,
|
|
50
|
+
'skills.work': PROTOCOL_2,
|
|
51
|
+
slots: PROTOCOL_2,
|
|
52
|
+
tracker: PROTOCOL_2,
|
|
53
|
+
'tracker.areaLabelGroup': PROTOCOL_2,
|
|
54
|
+
'tracker.areaPrefix': PROTOCOL_2,
|
|
55
|
+
'tracker.areaRoot': PROTOCOL_2,
|
|
56
|
+
'tracker.humanLabel': PROTOCOL_2,
|
|
57
|
+
'tracker.key': PROTOCOL_2,
|
|
58
|
+
'tracker.kind': PROTOCOL_2,
|
|
59
|
+
'tracker.organization': PROTOCOL_2,
|
|
60
|
+
'tracker.owner': PROTOCOL_2,
|
|
61
|
+
'tracker.priority': PROTOCOL_2,
|
|
62
|
+
'tracker.project': PROTOCOL_2,
|
|
63
|
+
'tracker.query': PROTOCOL_2,
|
|
64
|
+
'tracker.queue': PROTOCOL_2,
|
|
65
|
+
'tracker.queueLabel': PROTOCOL_2,
|
|
66
|
+
'tracker.releaseWait': '2.2.0-dev.3',
|
|
67
|
+
'tracker.releaseWait.label': '2.2.0-dev.3',
|
|
68
|
+
'tracker.releaseWait.shipped': '2.2.0-dev.3',
|
|
69
|
+
'tracker.repo': PROTOCOL_2,
|
|
70
|
+
'tracker.states': PROTOCOL_2,
|
|
71
|
+
'tracker.team': PROTOCOL_2,
|
|
72
|
+
'tracker.transitions': PROTOCOL_2,
|
|
73
|
+
'tracker.transitions.landed': PROTOCOL_2,
|
|
74
|
+
'tracker.transitions.pr-opened': PROTOCOL_2,
|
|
75
|
+
'tracker.transitions.started': PROTOCOL_2,
|
|
76
|
+
'tracker.triageLabel': PROTOCOL_2,
|
|
77
|
+
'tracker.workItemType': PROTOCOL_2,
|
|
78
|
+
train: PROTOCOL_2,
|
|
79
|
+
'train.maxHours': PROTOCOL_2,
|
|
80
|
+
'train.minimum': PROTOCOL_2,
|
|
81
|
+
'train.repo': PROTOCOL_2,
|
|
82
|
+
weight: PROTOCOL_2,
|
|
83
|
+
work: PROTOCOL_2,
|
|
84
|
+
'work.hooks': PROTOCOL_2,
|
|
85
|
+
'work.landing': PROTOCOL_2,
|
|
86
|
+
'work.landing.review': PROTOCOL_2,
|
|
87
|
+
'work.landing.reviewTiers': PROTOCOL_2,
|
|
88
|
+
workers: PROTOCOL_2,
|
|
89
|
+
'workers.tab': PROTOCOL_2,
|
|
90
|
+
};
|
|
91
|
+
// minimumProblems with the version that clears them, for `conduct project check`'s fix (ATK-580).
|
|
92
|
+
export function minimumCheck(text, source, since = FIELD_SINCE) {
|
|
93
|
+
const profile = parseJsonc(text, z.unknown(), source);
|
|
94
|
+
const conductor = typeof profile === 'object' && profile !== null && 'conductor' in profile ? profile.conductor : undefined;
|
|
95
|
+
const minimum = typeof conductor === 'string' ? valid(conductor) : null;
|
|
96
|
+
const theirs = minimum !== null
|
|
97
|
+
? `the profile's minimum is ${minimum}`
|
|
98
|
+
: conductor === undefined
|
|
99
|
+
? 'the profile sets no "conductor" minimum'
|
|
100
|
+
: `the profile's minimum ${JSON.stringify(conductor)} is not a version`;
|
|
101
|
+
// `tracker` and `tracker.releaseWait` for `tracker.releaseWait.label`.
|
|
102
|
+
const parents = new Set();
|
|
103
|
+
for (const path of Object.keys(since))
|
|
104
|
+
for (let dot = path.indexOf('.'); dot !== -1; dot = path.indexOf('.', dot + 1))
|
|
105
|
+
parents.add(path.slice(0, dot));
|
|
106
|
+
const problems = [];
|
|
107
|
+
let needs = null;
|
|
108
|
+
for (const path of new Set(writtenFields(profile, parents))) {
|
|
109
|
+
const version = since[path];
|
|
110
|
+
if (version === undefined)
|
|
111
|
+
problems.push(`${path}: no conductor version recorded for it in profile-fields.ts`);
|
|
112
|
+
else if (lt(minimum ?? PROTOCOL_2, version)) {
|
|
113
|
+
problems.push(`${path}: needs conductor ${version} or newer; ${theirs}`);
|
|
114
|
+
if (needs === null || gt(version, needs))
|
|
115
|
+
needs = version;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Raising the minimum writes `conductor`, so the version also covers the conductor that reads it.
|
|
119
|
+
const key = since.conductor;
|
|
120
|
+
if (needs !== null && key !== undefined && gt(key, needs))
|
|
121
|
+
needs = key;
|
|
122
|
+
return { needs, problems };
|
|
123
|
+
}
|
|
124
|
+
// Where a profile's `conductor` minimum is below a field it writes, one line each: a field newer
|
|
125
|
+
// than the minimum, or than PROTOCOL_2 when it sets none, and a field with no recorded version. A
|
|
126
|
+
// conductor test holds ATK's profile to it, so a PR that writes a new field raises the minimum too.
|
|
127
|
+
export function minimumProblems(text, source, since = FIELD_SINCE) {
|
|
128
|
+
return minimumCheck(text, source, since).problems;
|
|
129
|
+
}
|
|
130
|
+
// The fields a profile writes, by their paths in FIELD_SINCE, in the order it writes them. Fields
|
|
131
|
+
// a default fills in aren't written, so they need nothing. It looks inside a key only when it is
|
|
132
|
+
// one of `parents`, the paths FIELD_SINCE records fields below, so a record's own names (health's
|
|
133
|
+
// environments) aren't fields.
|
|
134
|
+
function* writtenFields(value, parents, prefix = '') {
|
|
135
|
+
if (Array.isArray(value)) {
|
|
136
|
+
for (const item of value)
|
|
137
|
+
yield* writtenFields(item, parents, prefix);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (value === null || typeof value !== 'object')
|
|
141
|
+
return;
|
|
142
|
+
for (const [key, child] of Object.entries(value)) {
|
|
143
|
+
const path = prefix === '' ? key : `${prefix}.${key}`;
|
|
144
|
+
yield path;
|
|
145
|
+
if (parents.has(path))
|
|
146
|
+
yield* writtenFields(child, parents, path);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=profile-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-fields.js","sourceRoot":"","sources":["../src/profile-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAaxC,mGAAmG;AACnG,4CAA4C;AAC5C,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC;AAElC,gGAAgG;AAChG,gGAAgG;AAChG,iGAAiG;AACjG,6FAA6F;AAC7F,oFAAoF;AACpF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,UAAU;IACtB,EAAE,EAAE,UAAU;IACd,SAAS,EAAE,UAAU;IACrB,QAAQ,EAAE,UAAU;IACpB,eAAe,EAAE,UAAU;IAC3B,uBAAuB,EAAE,UAAU;IACnC,gBAAgB,EAAE,UAAU;IAC5B,kBAAkB,EAAE,UAAU;IAC9B,eAAe,EAAE,UAAU;IAC3B,qBAAqB,EAAE,UAAU;IACjC,SAAS,EAAE,aAAa;IACxB,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,cAAc,EAAE,aAAa;IAC7B,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,UAAU;IACf,aAAa,EAAE,UAAU;IACzB,KAAK,EAAE,aAAa;IACpB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,UAAU;IACnB,iBAAiB,EAAE,UAAU;IAC7B,QAAQ,EAAE,UAAU;IACpB,cAAc,EAAE,UAAU;IAC1B,eAAe,EAAE,UAAU;IAC3B,kBAAkB,EAAE,UAAU;IAC9B,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,UAAU;IACjB,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE,UAAU;IACtB,YAAY,EAAE,UAAU;IACxB,YAAY,EAAE,UAAU;IACxB,KAAK,EAAE,aAAa;IACpB,MAAM,EAAE,UAAU;IAClB,gBAAgB,EAAE,UAAU;IAC5B,eAAe,EAAE,UAAU;IAC3B,aAAa,EAAE,UAAU;IACzB,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,UAAU;IACnB,wBAAwB,EAAE,UAAU;IACpC,oBAAoB,EAAE,UAAU;IAChC,kBAAkB,EAAE,UAAU;IAC9B,oBAAoB,EAAE,UAAU;IAChC,aAAa,EAAE,UAAU;IACzB,cAAc,EAAE,UAAU;IAC1B,sBAAsB,EAAE,UAAU;IAClC,eAAe,EAAE,UAAU;IAC3B,kBAAkB,EAAE,UAAU;IAC9B,iBAAiB,EAAE,UAAU;IAC7B,eAAe,EAAE,UAAU;IAC3B,eAAe,EAAE,UAAU;IAC3B,oBAAoB,EAAE,UAAU;IAChC,qBAAqB,EAAE,aAAa;IACpC,2BAA2B,EAAE,aAAa;IAC1C,6BAA6B,EAAE,aAAa;IAC5C,cAAc,EAAE,UAAU;IAC1B,gBAAgB,EAAE,UAAU;IAC5B,cAAc,EAAE,UAAU;IAC1B,qBAAqB,EAAE,UAAU;IACjC,4BAA4B,EAAE,UAAU;IACxC,+BAA+B,EAAE,UAAU;IAC3C,6BAA6B,EAAE,UAAU;IACzC,qBAAqB,EAAE,UAAU;IACjC,sBAAsB,EAAE,UAAU;IAClC,KAAK,EAAE,UAAU;IACjB,gBAAgB,EAAE,UAAU;IAC5B,eAAe,EAAE,UAAU;IAC3B,YAAY,EAAE,UAAU;IACxB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,YAAY,EAAE,UAAU;IACxB,cAAc,EAAE,UAAU;IAC1B,qBAAqB,EAAE,UAAU;IACjC,0BAA0B,EAAE,UAAU;IACtC,OAAO,EAAE,UAAU;IACnB,aAAa,EAAE,UAAU;CACwB,CAAC;AASpD,kGAAkG;AAClG,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,MAAc,EACd,QAA0C,WAAW;IAErD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,SAAS,GACb,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5G,MAAM,OAAO,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,MAAM,MAAM,GACV,OAAO,KAAK,IAAI;QACd,CAAC,CAAC,4BAA4B,OAAO,EAAE;QACvC,CAAC,CAAC,SAAS,KAAK,SAAS;YACvB,CAAC,CAAC,yCAAyC;YAC3C,CAAC,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC;IAC9E,uEAAuE;IACvE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACnC,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAClH,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,OAAO,KAAK,SAAS;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,6DAA6D,CAAC,CAAC;aAC1G,IAAI,EAAE,CAAC,OAAO,IAAI,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC;YAC5C,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,qBAAqB,OAAO,cAAc,MAAM,EAAE,CAAC,CAAC;YACzE,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;gBAAE,KAAK,GAAG,OAAO,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,kGAAkG;IAClG,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC;IAC5B,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC;QAAE,KAAK,GAAG,GAAG,CAAC;IACvE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7B,CAAC;AAED,iGAAiG;AACjG,kGAAkG;AAClG,oGAAoG;AACpG,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,MAAc,EACd,QAA0C,WAAW;IAErD,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC;AACpD,CAAC;AAED,kGAAkG;AAClG,iGAAiG;AACjG,kGAAkG;AAClG,+BAA+B;AAC/B,QAAQ,CAAC,CAAC,aAAa,CAAC,KAAc,EAAE,OAA4B,EAAE,MAAM,GAAG,EAAE;IAC/E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,KAAK,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO;IACxD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC;QACX,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { spawnSync } from 'node:child_process';
|
|
2
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { lt, valid } from 'semver';
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { ConductorError, isMissing } from "./errors.js";
|
|
7
|
+
import { issueLines, parseJsonc } from "./jsonc.js";
|
|
8
|
+
import { packageInfo } from "./package-info.js";
|
|
9
|
+
import { PROJECT_NAME, projectOfPath, projectPaths } from "./paths.js";
|
|
10
|
+
import { PROFILE_FILE, profileSchema, ProfileTooNewError } from "./profile.js";
|
|
11
|
+
import { PROTOCOL } from "./protocol.js";
|
|
12
|
+
// A project's profile in layers (design note v2, section 7): the machine's
|
|
13
|
+
// <home>/projects/<name>.json over the repo's optional .claude/conductor.json. Objects merge key by
|
|
14
|
+
// key with the machine winning, arrays are replaced whole, and `rules` stack: the machine's first,
|
|
15
|
+
// so one of its rules shadows a repo rule with the same id. The merge runs on the files as written,
|
|
16
|
+
// before the schema reads them, so a machine file beside a repo profile can be partial.
|
|
17
|
+
export const LAYERS = ['machine', 'repo'];
|
|
18
|
+
export const profileSourcesSchema = z.object({
|
|
19
|
+
// Each field's source by its dotted path, an array counting as one value; `default` when neither
|
|
20
|
+
// file writes it. `rules` is listed rule by rule instead.
|
|
21
|
+
fields: z.record(z.string(), z.enum(['default', ...LAYERS])),
|
|
22
|
+
// The machine profile, when there is one.
|
|
23
|
+
machine: z.string().nullable(),
|
|
24
|
+
// Where the repo layer was read, when there is one: `.claude/conductor.json at origin/<base>`.
|
|
25
|
+
repo: z.string().nullable(),
|
|
26
|
+
// The layer of each rule of the profile's `rules`, in order.
|
|
27
|
+
rules: z.array(z.enum(LAYERS)),
|
|
28
|
+
});
|
|
29
|
+
export const gitSync = (args, cwd) => {
|
|
30
|
+
const result = spawnSync('git', args, { cwd, encoding: 'utf8', timeout: 30_000, windowsHide: true });
|
|
31
|
+
return {
|
|
32
|
+
code: result.status ?? 1,
|
|
33
|
+
stderr: result.stderr ?? (result.error ? String(result.error) : ''),
|
|
34
|
+
stdout: result.stdout ?? '',
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
// The repo layer's path inside a commit: git spells it with forward slashes on every platform.
|
|
38
|
+
const PROFILE_IN_GIT = '.claude/conductor.json';
|
|
39
|
+
const rawSchema = z.record(z.string(), z.unknown());
|
|
40
|
+
// The profile the worker verbs read where they run, without the daemon: the checkout's own
|
|
41
|
+
// .claude/conductor.json (the branch's, as a worker's change to it would be) under the project's
|
|
42
|
+
// machine file. The project is the one whose folder the checkout is in (<home>/projects/<name>/…),
|
|
43
|
+
// else the one its own profile names, so a person's worktree of their own checkout reads too.
|
|
44
|
+
// Null when neither layer exists: no project's checkout.
|
|
45
|
+
export function checkoutProfile(paths, checkout) {
|
|
46
|
+
const repo = readLayer(join(checkout, PROFILE_FILE));
|
|
47
|
+
const name = projectOfPath(paths, checkout) ?? (typeof repo?.raw.name === 'string' ? repo.raw.name : null);
|
|
48
|
+
// A name the schema will refuse names no machine file either.
|
|
49
|
+
const machine = name !== null && PROJECT_NAME.test(name) ? readLayer(projectPaths(paths, name).profile) : null;
|
|
50
|
+
if (name === null || (machine === null && repo === null))
|
|
51
|
+
return null;
|
|
52
|
+
return layerProfile(name, { machine, repo });
|
|
53
|
+
}
|
|
54
|
+
// The layers merged and read: each layer's `conductor` minimum first, then the protocol, then the
|
|
55
|
+
// schema, so a profile written for another version gets one clear message. `name` is the project's
|
|
56
|
+
// registered name, which a machine file may repeat but not change.
|
|
57
|
+
export function layerProfile(name, layers, running) {
|
|
58
|
+
const { machine, repo } = layers;
|
|
59
|
+
const present = [machine, repo].filter((l) => l !== null);
|
|
60
|
+
const source = present.map((l) => l.label).join(' over ');
|
|
61
|
+
if (machine !== null && machine.raw.name !== undefined && machine.raw.name !== name) {
|
|
62
|
+
throw new ConductorError(`${machine.label} renames the project`, [
|
|
63
|
+
`name: ${JSON.stringify(machine.raw.name)} is not "${name}", the name its file and folder give it; drop it, or put "${name}" back`,
|
|
64
|
+
]);
|
|
65
|
+
}
|
|
66
|
+
for (const layer of present) {
|
|
67
|
+
const minimum = typeof layer.raw.conductor === 'string' ? valid(layer.raw.conductor) : null;
|
|
68
|
+
if (minimum === null)
|
|
69
|
+
continue;
|
|
70
|
+
const version = running ?? packageInfo().version;
|
|
71
|
+
if (lt(version, minimum))
|
|
72
|
+
throw new ProfileTooNewError(layer.label, minimum, version);
|
|
73
|
+
}
|
|
74
|
+
const merged = mergeLayers(machine?.raw ?? {}, repo?.raw ?? {});
|
|
75
|
+
merged.name = name;
|
|
76
|
+
if (merged.protocol !== PROTOCOL) {
|
|
77
|
+
throw new ConductorError(`${source} is invalid`, [
|
|
78
|
+
`protocol: ${JSON.stringify(merged.protocol ?? null)} is not supported; this conductor speaks protocol ${PROTOCOL}`,
|
|
79
|
+
]);
|
|
80
|
+
}
|
|
81
|
+
const parsed = profileSchema.safeParse(merged);
|
|
82
|
+
if (!parsed.success)
|
|
83
|
+
throw new ConductorError(`${source} is invalid`, issueLines(parsed.error));
|
|
84
|
+
const machineRules = Array.isArray(machine?.raw.rules) ? machine.raw.rules.length : 0;
|
|
85
|
+
return {
|
|
86
|
+
layers,
|
|
87
|
+
profile: parsed.data,
|
|
88
|
+
sources: {
|
|
89
|
+
fields: fieldSources(parsed.data, machine?.raw ?? null, repo?.raw ?? null),
|
|
90
|
+
machine: machine?.label ?? null,
|
|
91
|
+
repo: repo?.label ?? null,
|
|
92
|
+
rules: parsed.data.rules.map((_rule, i) => (i < machineRules ? 'machine' : 'repo')),
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
// The repo layer over which the machine layer goes, key by key; `rules` stack, the machine's first.
|
|
97
|
+
export function mergeLayers(machine, repo) {
|
|
98
|
+
const merged = mergeValue(repo, machine);
|
|
99
|
+
if (!isRecord(merged))
|
|
100
|
+
return {};
|
|
101
|
+
const rules = [...listOf(machine.rules), ...listOf(repo.rules)];
|
|
102
|
+
if (machine.rules !== undefined || repo.rules !== undefined)
|
|
103
|
+
merged.rules = rules;
|
|
104
|
+
return merged;
|
|
105
|
+
}
|
|
106
|
+
// The profile of the checkout a verb runs in, as checkoutProfile reads it, under the conductor home
|
|
107
|
+
// `paths` names. Throws a ConductorError when it is no project's checkout or the profile doesn't read.
|
|
108
|
+
export function profileHere(checkout, paths) {
|
|
109
|
+
const layered = checkoutProfile(paths, checkout);
|
|
110
|
+
if (layered === null) {
|
|
111
|
+
throw new ConductorError(`no ${PROFILE_FILE} in ${checkout}`, [
|
|
112
|
+
"run it in a project's worktree or checkout; a project with no committed profile keeps it in ~/.conductor/projects/<name>.json",
|
|
113
|
+
]);
|
|
114
|
+
}
|
|
115
|
+
return layered.profile;
|
|
116
|
+
}
|
|
117
|
+
// `conduct profile <name>`: the files, each field with its value and source, then the rules in the
|
|
118
|
+
// order they are checked, each with its layer.
|
|
119
|
+
export function profileLines(name, { profile, sources }) {
|
|
120
|
+
const rows = Object.keys(sources.fields)
|
|
121
|
+
.sort()
|
|
122
|
+
.map((path) => [path, show(valueAt(profile, path)), sources.fields[path] ?? 'default']);
|
|
123
|
+
const width = Math.max(0, ...rows.map(([path]) => path.length));
|
|
124
|
+
const lines = [
|
|
125
|
+
`profile ${name}`,
|
|
126
|
+
` machine: ${sources.machine ?? '(no machine profile)'}`,
|
|
127
|
+
` repo: ${sources.repo ?? '(no repo profile)'}`,
|
|
128
|
+
'',
|
|
129
|
+
...rows.map(([path, value, source]) => ` ${path.padEnd(width)} ${source.padEnd(7)} ${value}`),
|
|
130
|
+
];
|
|
131
|
+
if (profile.rules.length > 0) {
|
|
132
|
+
lines.push('', "rules (the machine's first: a rule shadows a later one with its id):");
|
|
133
|
+
profile.rules.forEach((rule, i) => {
|
|
134
|
+
const does = typeof rule.do === 'string' ? rule.do : rule.do.join('; ');
|
|
135
|
+
const when = rule.when === undefined ? '' : `when ${rule.when} → `;
|
|
136
|
+
lines.push(` ${(sources.rules[i] ?? 'repo').padEnd(7)} ${rule.id ?? `#${i + 1}`}: ${when}${does}`);
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
return lines;
|
|
140
|
+
}
|
|
141
|
+
// The profile a daemon-owned clone conducts: the machine file over .claude/conductor.json at
|
|
142
|
+
// origin/<base> in <home>/projects/<name>/repo. The base is the machine's baseBranch, else
|
|
143
|
+
// origin/HEAD's branch; when the repo's file there names another baseBranch, the file is read once
|
|
144
|
+
// more at that one. `running` is this conductor's version, for the layers' `conductor` minimums.
|
|
145
|
+
export function projectProfile(paths, name, git = gitSync, running) {
|
|
146
|
+
const { clone, profile: file } = projectPaths(paths, name);
|
|
147
|
+
if (!existsSync(join(clone, '.git')))
|
|
148
|
+
throw new ConductorError(`${name} has no clone at ${clone}`, ['add it with `conduct project add <url | path>`']);
|
|
149
|
+
const machine = readLayer(file);
|
|
150
|
+
const machineBase = typeof machine?.raw.baseBranch === 'string' ? machine.raw.baseBranch : null;
|
|
151
|
+
let base = machineBase ?? originHead(git, clone);
|
|
152
|
+
let repo = repoLayerAt(git, clone, base);
|
|
153
|
+
const named = typeof repo?.raw.baseBranch === 'string' ? repo.raw.baseBranch : null;
|
|
154
|
+
if (machineBase === null && named !== null && named !== base) {
|
|
155
|
+
base = named;
|
|
156
|
+
repo = repoLayerAt(git, clone, base);
|
|
157
|
+
}
|
|
158
|
+
if (machine === null && repo === null) {
|
|
159
|
+
throw new ConductorError(`${name} has no profile`, [
|
|
160
|
+
`neither ${file} nor ${PROFILE_IN_GIT} at origin/${base} in ${clone}`,
|
|
161
|
+
`write ${file} (a whole profile), or commit ${PROFILE_IN_GIT} to the repo`,
|
|
162
|
+
]);
|
|
163
|
+
}
|
|
164
|
+
return layerProfile(name, { machine, repo }, running);
|
|
165
|
+
}
|
|
166
|
+
// A profile file's text as a layer. Throws a ConductorError naming the file when it isn't a JSONC
|
|
167
|
+
// object.
|
|
168
|
+
export function rawLayer(text, label) {
|
|
169
|
+
return { label, raw: parseJsonc(text, rawSchema, label) };
|
|
170
|
+
}
|
|
171
|
+
// A profile file as a layer; null when there is no file.
|
|
172
|
+
export function readLayer(file) {
|
|
173
|
+
let text;
|
|
174
|
+
try {
|
|
175
|
+
text = readFileSync(file, 'utf8');
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
if (isMissing(error))
|
|
179
|
+
return null;
|
|
180
|
+
throw new ConductorError(`could not read ${file}`, [String(error)]);
|
|
181
|
+
}
|
|
182
|
+
return rawLayer(text, file);
|
|
183
|
+
}
|
|
184
|
+
// .claude/conductor.json at origin/<base> in a clone, or null when that commit has none.
|
|
185
|
+
export function repoLayerAt(git, clone, base) {
|
|
186
|
+
const ref = `origin/${base}`;
|
|
187
|
+
if (git(['rev-parse', '--verify', '--quiet', `${ref}^{commit}`], clone).code !== 0) {
|
|
188
|
+
throw new ConductorError(`${clone} has no ${ref}`, [
|
|
189
|
+
`check baseBranch ("${base}"); the conductor fetches the clone every few minutes`,
|
|
190
|
+
]);
|
|
191
|
+
}
|
|
192
|
+
const spec = `${ref}:${PROFILE_IN_GIT}`;
|
|
193
|
+
if (git(['cat-file', '-e', spec], clone).code !== 0)
|
|
194
|
+
return null;
|
|
195
|
+
const shown = git(['show', spec], clone);
|
|
196
|
+
if (shown.code !== 0)
|
|
197
|
+
throw new ConductorError(`git show ${spec} failed in ${clone}`, [shown.stderr.trim()]);
|
|
198
|
+
return rawLayer(shown.stdout, `${PROFILE_IN_GIT} at ${ref} in ${clone}`);
|
|
199
|
+
}
|
|
200
|
+
// Each field's source, by its dotted path in the profile as read: the machine's when its file
|
|
201
|
+
// writes the field, else the repo's, else the default's. Arrays and `rules` count as one value;
|
|
202
|
+
// `name` is the registration's, which only a repo file of the same name can claim.
|
|
203
|
+
function fieldSources(profile, machine, repo) {
|
|
204
|
+
const fields = {};
|
|
205
|
+
const walk = (value, path) => {
|
|
206
|
+
if (isRecord(value) && Object.keys(value).length > 0) {
|
|
207
|
+
for (const [key, child] of Object.entries(value))
|
|
208
|
+
walk(child, [...path, key]);
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
fields[path.join('.')] = has(machine, path) ? 'machine' : has(repo, path) ? 'repo' : 'default';
|
|
212
|
+
};
|
|
213
|
+
for (const [key, value] of Object.entries(profile))
|
|
214
|
+
if (key !== 'rules')
|
|
215
|
+
walk(value, [key]);
|
|
216
|
+
fields.name = repo?.name === profile.name && machine?.name === undefined ? 'repo' : 'machine';
|
|
217
|
+
return fields;
|
|
218
|
+
}
|
|
219
|
+
function has(raw, path) {
|
|
220
|
+
let at = raw;
|
|
221
|
+
for (const key of path) {
|
|
222
|
+
if (!isRecord(at) || !Object.hasOwn(at, key))
|
|
223
|
+
return false;
|
|
224
|
+
at = at[key];
|
|
225
|
+
}
|
|
226
|
+
return at !== undefined;
|
|
227
|
+
}
|
|
228
|
+
function isRecord(value) {
|
|
229
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
230
|
+
}
|
|
231
|
+
function listOf(value) {
|
|
232
|
+
return Array.isArray(value) ? value : [];
|
|
233
|
+
}
|
|
234
|
+
function mergeValue(under, over) {
|
|
235
|
+
if (over === undefined)
|
|
236
|
+
return under;
|
|
237
|
+
if (!isRecord(under) || !isRecord(over))
|
|
238
|
+
return over;
|
|
239
|
+
const merged = { ...under };
|
|
240
|
+
for (const [key, value] of Object.entries(over))
|
|
241
|
+
merged[key] = mergeValue(under[key], value);
|
|
242
|
+
return merged;
|
|
243
|
+
}
|
|
244
|
+
// origin/HEAD's branch in a clone: the remote's default branch, which a clone records.
|
|
245
|
+
function originHead(git, clone) {
|
|
246
|
+
const head = git(['symbolic-ref', '--short', 'refs/remotes/origin/HEAD'], clone);
|
|
247
|
+
const branch = head.code === 0 ? head.stdout.trim().replace(/^origin\//, '') : '';
|
|
248
|
+
if (branch === '') {
|
|
249
|
+
throw new ConductorError(`${clone} has no origin/HEAD`, [
|
|
250
|
+
`run git -C "${clone}" remote set-head origin --auto, or set baseBranch in the machine profile`,
|
|
251
|
+
]);
|
|
252
|
+
}
|
|
253
|
+
return branch;
|
|
254
|
+
}
|
|
255
|
+
function show(value) {
|
|
256
|
+
return typeof value === 'string' ? value : (JSON.stringify(value) ?? '(unset)');
|
|
257
|
+
}
|
|
258
|
+
function valueAt(profile, path) {
|
|
259
|
+
let at = profile;
|
|
260
|
+
for (const key of path.split('.'))
|
|
261
|
+
at = isRecord(at) ? at[key] : undefined;
|
|
262
|
+
return at;
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=profile-layers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-layers.js","sourceRoot":"","sources":["../src/profile-layers.ts"],"names":[],"mappings":"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"}
|