@detergent-software/conductor 3.0.0-dev.9 → 3.1.0-dev.1

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.
Files changed (212) hide show
  1. package/CHANGELOG.md +486 -0
  2. package/README.md +272 -126
  3. package/build/brief-cli.js +5 -12
  4. package/build/brief-cli.js.map +1 -1
  5. package/build/brief.js +4 -3
  6. package/build/brief.js.map +1 -1
  7. package/build/broker-cli.js +41 -14
  8. package/build/broker-cli.js.map +1 -1
  9. package/build/broker.js +1 -1
  10. package/build/broker.js.map +1 -1
  11. package/build/cli.js +226 -64
  12. package/build/cli.js.map +1 -1
  13. package/build/clones.js +92 -0
  14. package/build/clones.js.map +1 -0
  15. package/build/code-host-cli.js +172 -40
  16. package/build/code-host-cli.js.map +1 -1
  17. package/build/code-host-service.js +35 -2
  18. package/build/code-host-service.js.map +1 -1
  19. package/build/code-host.js +138 -16
  20. package/build/code-host.js.map +1 -1
  21. package/build/conditions.js +33 -16
  22. package/build/conditions.js.map +1 -1
  23. package/build/config.js +58 -28
  24. package/build/config.js.map +1 -1
  25. package/build/console.js +17 -27
  26. package/build/console.js.map +1 -1
  27. package/build/credentials.js +86 -54
  28. package/build/credentials.js.map +1 -1
  29. package/build/daemon.js +54 -65
  30. package/build/daemon.js.map +1 -1
  31. package/build/file-lock.js +155 -40
  32. package/build/file-lock.js.map +1 -1
  33. package/build/follow-ups.js +2 -2
  34. package/build/follow-ups.js.map +1 -1
  35. package/build/help.js +242 -83
  36. package/build/help.js.map +1 -1
  37. package/build/history.js +10 -4
  38. package/build/history.js.map +1 -1
  39. package/build/host/attach-clients.js +56 -0
  40. package/build/host/attach-clients.js.map +1 -0
  41. package/build/host/credential-manager.js +109 -0
  42. package/build/host/credential-manager.js.map +1 -0
  43. package/build/host/keychain.js +44 -0
  44. package/build/host/keychain.js.map +1 -0
  45. package/build/host/launchd.js +118 -0
  46. package/build/host/launchd.js.map +1 -0
  47. package/build/host/libsecret.js +40 -0
  48. package/build/host/libsecret.js.map +1 -0
  49. package/build/host/macos-terminal.js +63 -0
  50. package/build/host/macos-terminal.js.map +1 -0
  51. package/build/host/platform.js +4 -0
  52. package/build/host/platform.js.map +1 -0
  53. package/build/host/secrets.js +46 -0
  54. package/build/host/secrets.js.map +1 -0
  55. package/build/host/shell.js +26 -0
  56. package/build/host/shell.js.map +1 -0
  57. package/build/host/startup.js +26 -0
  58. package/build/host/startup.js.map +1 -0
  59. package/build/host/systemd.js +91 -0
  60. package/build/host/systemd.js.map +1 -0
  61. package/build/host/task-scheduler.js +78 -0
  62. package/build/host/task-scheduler.js.map +1 -0
  63. package/build/host/terminal.js +47 -0
  64. package/build/host/terminal.js.map +1 -0
  65. package/build/host/tmux.js +39 -0
  66. package/build/host/tmux.js.map +1 -0
  67. package/build/host/windows-terminal.js +46 -0
  68. package/build/host/windows-terminal.js.map +1 -0
  69. package/build/in-process.js +5 -4
  70. package/build/in-process.js.map +1 -1
  71. package/build/inbox.js +47 -35
  72. package/build/inbox.js.map +1 -1
  73. package/build/init.js +509 -0
  74. package/build/init.js.map +1 -0
  75. package/build/landing.js +107 -10
  76. package/build/landing.js.map +1 -1
  77. package/build/lib/providers/ado/code-host.js +5 -1
  78. package/build/lib/providers/ado/code-host.js.map +1 -1
  79. package/build/lib/providers/ado/pipelines.js +138 -26
  80. package/build/lib/providers/ado/pipelines.js.map +1 -1
  81. package/build/lib/providers/ado/trigger.js +5 -0
  82. package/build/lib/providers/ado/trigger.js.map +1 -1
  83. package/build/lib/providers/ado/writes.js +17 -2
  84. package/build/lib/providers/ado/writes.js.map +1 -1
  85. package/build/lib/providers/github/actions.js +90 -3
  86. package/build/lib/providers/github/actions.js.map +1 -1
  87. package/build/lib/providers/github/code-host.js +2 -0
  88. package/build/lib/providers/github/code-host.js.map +1 -1
  89. package/build/lib/providers/github/writes.js +25 -2
  90. package/build/lib/providers/github/writes.js.map +1 -1
  91. package/build/lib/providers/index.js +3 -2
  92. package/build/lib/providers/index.js.map +1 -1
  93. package/build/lib/providers/npm/stage.js +14 -1
  94. package/build/lib/providers/npm/stage.js.map +1 -1
  95. package/build/lib/providers/timing.js +10 -0
  96. package/build/lib/providers/timing.js.map +1 -0
  97. package/build/lib/providers/verdicts/pr.js +47 -6
  98. package/build/lib/providers/verdicts/pr.js.map +1 -1
  99. package/build/lib/providers/verdicts/runs.js +12 -2
  100. package/build/lib/providers/verdicts/runs.js.map +1 -1
  101. package/build/logins.js +13 -6
  102. package/build/logins.js.map +1 -1
  103. package/build/manager.js +200 -55
  104. package/build/manager.js.map +1 -1
  105. package/build/note.js +5 -15
  106. package/build/note.js.map +1 -1
  107. package/build/notes.js +130 -23
  108. package/build/notes.js.map +1 -1
  109. package/build/notify.js +104 -42
  110. package/build/notify.js.map +1 -1
  111. package/build/npm-reads.js +151 -22
  112. package/build/npm-reads.js.map +1 -1
  113. package/build/ownership.js +2 -2
  114. package/build/paths.js +44 -1
  115. package/build/paths.js.map +1 -1
  116. package/build/plugin.js +4 -2
  117. package/build/plugin.js.map +1 -1
  118. package/build/profile-fields.js +153 -0
  119. package/build/profile-fields.js.map +1 -0
  120. package/build/profile-layers.js +264 -0
  121. package/build/profile-layers.js.map +1 -0
  122. package/build/profile.js +69 -49
  123. package/build/profile.js.map +1 -1
  124. package/build/project-check-cli.js +17 -19
  125. package/build/project-check-cli.js.map +1 -1
  126. package/build/project-check.js +166 -104
  127. package/build/project-check.js.map +1 -1
  128. package/build/protocol.js +5 -21
  129. package/build/protocol.js.map +1 -1
  130. package/build/pushover.js +5 -5
  131. package/build/pushover.js.map +1 -1
  132. package/build/queue.js +4 -4
  133. package/build/queue.js.map +1 -1
  134. package/build/registry.js +195 -36
  135. package/build/registry.js.map +1 -1
  136. package/build/release-kinds.js +34 -0
  137. package/build/release-kinds.js.map +1 -0
  138. package/build/rule-actions.js +8 -6
  139. package/build/rule-actions.js.map +1 -1
  140. package/build/rules-service.js +83 -44
  141. package/build/rules-service.js.map +1 -1
  142. package/build/rules.js +23 -23
  143. package/build/rules.js.map +1 -1
  144. package/build/run.js +20 -7
  145. package/build/run.js.map +1 -1
  146. package/build/runs.js +218 -68
  147. package/build/runs.js.map +1 -1
  148. package/build/scheduler.js +78 -12
  149. package/build/scheduler.js.map +1 -1
  150. package/build/search.js +2 -1
  151. package/build/search.js.map +1 -1
  152. package/build/server.js +51 -14
  153. package/build/server.js.map +1 -1
  154. package/build/spend.js +1 -1
  155. package/build/spend.js.map +1 -1
  156. package/build/store.js +79 -20
  157. package/build/store.js.map +1 -1
  158. package/build/supervise.js +1 -1
  159. package/build/supervise.js.map +1 -1
  160. package/build/timeline.js +104 -0
  161. package/build/timeline.js.map +1 -0
  162. package/build/tracker-reads-cli.js +4 -3
  163. package/build/tracker-reads-cli.js.map +1 -1
  164. package/build/trackers.js +56 -10
  165. package/build/trackers.js.map +1 -1
  166. package/build/train-cli.js +6 -5
  167. package/build/train-cli.js.map +1 -1
  168. package/build/train.js +2 -2
  169. package/build/train.js.map +1 -1
  170. package/build/upgrade.js +8 -9
  171. package/build/upgrade.js.map +1 -1
  172. package/build/wait.js +10 -10
  173. package/build/wait.js.map +1 -1
  174. package/build/watchers/ado.js +42 -19
  175. package/build/watchers/ado.js.map +1 -1
  176. package/build/watchers/github.js +18 -4
  177. package/build/watchers/github.js.map +1 -1
  178. package/build/watchers/index.js +2 -2
  179. package/build/watchers/index.js.map +1 -1
  180. package/build/watchers/linear-queue.js +47 -14
  181. package/build/watchers/linear-queue.js.map +1 -1
  182. package/build/watchers/linear-writes.js +26 -12
  183. package/build/watchers/linear-writes.js.map +1 -1
  184. package/build/watchers/linear.js +2 -2
  185. package/build/watchers/linear.js.map +1 -1
  186. package/build/watchers/source.js +5 -1
  187. package/build/watchers/source.js.map +1 -1
  188. package/build/webhook.js +80 -0
  189. package/build/webhook.js.map +1 -0
  190. package/build/why.js +1 -1
  191. package/build/why.js.map +1 -1
  192. package/build/worktrees.js +56 -93
  193. package/build/worktrees.js.map +1 -1
  194. package/package.json +61 -61
  195. package/plugin/.claude-plugin/plugin.json +1 -1
  196. package/plugin/hooks/model.ts +55 -6
  197. package/plugin/hooks/register.tsx +43 -4
  198. package/plugin/skills/conductor-console/SKILL.md +26 -27
  199. package/plugin/skills/work-item/SKILL.md +58 -54
  200. package/plugin/skills/work-item/trackers/ado-boards.md +2 -2
  201. package/plugin/skills/work-item/trackers/github-issues.md +1 -1
  202. package/plugin/skills/work-item/trackers/linear.md +2 -2
  203. package/plugin/types/index.d.ts +1 -1
  204. package/protocol/PROTOCOL.md +3 -9
  205. package/build/checkout-sync.js +0 -249
  206. package/build/checkout-sync.js.map +0 -1
  207. package/build/credential.js +0 -66
  208. package/build/credential.js.map +0 -1
  209. package/build/startup.js +0 -92
  210. package/build/startup.js.map +0 -1
  211. package/build/tab.js +0 -32
  212. package/build/tab.js.map +0 -1
@@ -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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"}
package/build/profile.js CHANGED
@@ -1,16 +1,17 @@
1
- import { readFileSync } from 'node:fs';
2
1
  import { isAbsolute, join } from 'node:path';
3
2
  import { lt, valid } from 'semver';
4
3
  import { z } from 'zod';
5
- import { ConductorError, isMissing } from "./errors.js";
4
+ import { ConductorError } from "./errors.js";
6
5
  import { parseJsonc } from "./jsonc.js";
7
6
  import { packageInfo } from "./package-info.js";
8
- import { noteName } from "./plugin.js";
7
+ import { PROJECT_NAME } from "./paths.js";
8
+ import { noteName, WORK_SKILL } from "./plugin.js";
9
9
  import { PROTOCOL } from "./protocol.js";
10
+ import { GATES } from "./release-kinds.js";
10
11
  import { ruleInputSchema } from "./rule-input.js";
11
12
  import { defaultTag } from "./upgrade.js";
12
13
  export const PROFILE_FILE = join('.claude', 'conductor.json');
13
- const name = z.string().regex(/^[a-z][a-z0-9-]*$/, 'lowercase letters, digits and dashes, starting with a letter');
14
+ const name = z.string().regex(PROJECT_NAME, 'lowercase letters, digits and dashes, starting with a letter');
14
15
  const text = z.string().trim().min(1);
15
16
  // The state each phase note moves an item to, over the tracker kind's defaults (tracker-writes.ts);
16
17
  // null leaves it as it is.
@@ -23,7 +24,7 @@ const transitions = z
23
24
  // note). Off when absent.
24
25
  const releaseWait = z.strictObject({ label: text, shipped: text }).optional();
25
26
  // A repo's .claude/conductor.json: what the conductor needs to know about a project, as data.
26
- // Each adapter kind is a discriminated union, so ADO Boards (Cadence) arrives as one more variant.
27
+ // Each adapter kind is a discriminated union, so ADO Boards arrives as one more variant.
27
28
  const profileFields = z.strictObject({
28
29
  // Who may answer a Plan besides the tracker account behind the daemon (design note v2, section 6):
29
30
  // emails on Linear, unique names on Boards (the UPN, usually the email), logins on GitHub,
@@ -36,9 +37,10 @@ const profileFields = z.strictObject({
36
37
  areaRelease: z.enum(['merge', 'pr']).default('merge'),
37
38
  baseBranch: text,
38
39
  // The CI that builds the project's repo: Azure Pipelines or GitHub Actions (`conduct runs`, `wait
39
- // merge`). Each builds a repo of its own code host's kind for now.
40
+ // merge`). Azure Pipelines builds a GitHub repo too (ATK-530): beside a GitHub code host it names
41
+ // the organization and project whose pipelines build it (code-host.ts, ciOf).
40
42
  ci: z.discriminatedUnion('kind', [
41
- z.strictObject({ kind: z.literal('ado-pipelines') }),
43
+ z.strictObject({ kind: z.literal('ado-pipelines'), organization: z.url().optional(), project: text.optional() }),
42
44
  z.strictObject({ kind: z.literal('github-actions') }),
43
45
  ]),
44
46
  codeHost: z.discriminatedUnion('kind', [
@@ -46,19 +48,21 @@ const profileFields = z.strictObject({
46
48
  // A GitHub repo (ATK-428): its PRs, checks and auto-merge.
47
49
  z.strictObject({
48
50
  kind: z.literal('github'),
49
- owner: z.string().regex(/^[\w.-]+$/, 'a GitHub owner, such as EmergentSoftware'),
51
+ owner: z.string().regex(/^[\w.-]+$/, 'a GitHub owner, such as contoso'),
50
52
  repo: z.string().regex(/^[\w.-]+$/, 'a GitHub repo name, without the owner'),
51
53
  }),
52
54
  ]),
53
55
  // The oldest conductor that reads this profile (ATK-573): the version that first read its newest
54
- // field, a -dev.N while that is only on `dev`. parseProfile checks it before the rest, so an older
55
- // conductor says which version to upgrade to instead of listing fields it doesn't know.
56
+ // field (profile-fields.ts records each one's), a -dev.N while that is only on `dev`. parseProfile
57
+ // checks it before the rest, so an older conductor says which version to upgrade to instead of
58
+ // listing fields it doesn't know.
56
59
  conductor: z
57
60
  .string()
58
61
  .refine((v) => valid(v) !== null, 'a version, such as 3.0.0-dev.8')
59
62
  .optional(),
60
- // The kinds of note that wait on a person in this project.
61
- gates: z.array(z.enum(['merge', 'npm-otp', 'plan'])).min(1),
63
+ // The kinds of item that wait on a person in this project: plan, merge and each release kind's gate
64
+ // (release-kinds.ts: npm-otp for an npm-stage), which `conduct project check` looks for.
65
+ gates: z.array(z.enum(GATES)).min(1),
62
66
  // Each environment's /health URL, for `conduct wait health <env>`.
63
67
  health: z.record(name, z.url()).optional(),
64
68
  // A checkout the operator keeps whose gitignored files matching its .worktreeinclude are copied
@@ -77,11 +81,13 @@ const profileFields = z.strictObject({
77
81
  // The worker protocol the project's work skill speaks (protocol.ts); only this conductor's.
78
82
  protocol: z.literal(PROTOCOL),
79
83
  release: z.strictObject({ handoff: text }),
80
- // The pipelines that stage a release for a merge (`conduct runs`, `wait merge`): `npm-stage` stages
81
- // `package` on npm for a person's `npm stage approve`. `pipeline` names it as --for does: its YAML
82
- // file name (release-cli), path or own name.
84
+ // The pipelines that stage a release for a merge (`conduct runs`, `wait merge`), each of a kind
85
+ // release-kinds.ts reads: `npm-stage` stages `package` on npm for a person's `npm stage approve`.
86
+ // `pipeline` names it as --for does: its YAML file name (release-cli), path or own name.
83
87
  releases: z
84
- .array(z.strictObject({ key: name, kind: z.literal('npm-stage'), package: text, pipeline: text }))
88
+ .array(z.discriminatedUnion('kind', [
89
+ z.strictObject({ key: name, kind: z.literal('npm-stage'), package: text, pipeline: text }),
90
+ ]))
85
91
  .default([]),
86
92
  // Project rules (design note, section 9): checked before the machine's and the defaults, for
87
93
  // this project's items only. They change by PR, and the daemon reloads them on save.
@@ -96,15 +102,23 @@ const profileFields = z.strictObject({
96
102
  slots: z.int().min(1).max(8),
97
103
  tracker: z.discriminatedUnion('kind', [
98
104
  z.strictObject({
99
- areaLabelGroup: text,
100
- humanLabel: text,
105
+ // The label group whose labels are the Areas. null: the team has none, so no item holds an
106
+ // Area (as a Boards item at its root), and `conduct file` files without one.
107
+ areaLabelGroup: text.nullable().default('Area'),
108
+ humanLabel: text.default('human'),
101
109
  kind: z.literal('linear'),
102
- // The conducted queue: the team's projects that have a priority set.
103
- queue: z.literal('prioritized-projects'),
110
+ // The conducted queue: the team's projects that have a priority set, or the team's open
111
+ // issues carrying a label, in one queue at `priority` (as GitHub Issues' queueLabel).
112
+ queue: z
113
+ .union([
114
+ z.literal('prioritized-projects'),
115
+ z.strictObject({ label: text, priority: z.int().min(1).max(4).default(3) }),
116
+ ])
117
+ .default('prioritized-projects'),
104
118
  releaseWait,
105
119
  team: text,
106
120
  transitions,
107
- // A new item a worker filed carries this label until Jason triages it: the queue never picks it,
121
+ // A new item a worker filed carries this label until the operator triages it: the queue never picks it,
108
122
  // and the inbox says it is new (ATK-277). Off when absent.
109
123
  triageLabel: text.optional(),
110
124
  }),
@@ -146,7 +160,7 @@ const profileFields = z.strictObject({
146
160
  // The repo the issues live in; by default the code host's.
147
161
  owner: z
148
162
  .string()
149
- .regex(/^[\w.-]+$/, 'a GitHub owner, such as JasonPaff')
163
+ .regex(/^[\w.-]+$/, 'a GitHub owner, such as contoso')
150
164
  .optional(),
151
165
  // The queue's priority against other projects' (a Linear project's 1, urgent, to 4, low).
152
166
  priority: z.int().min(1).max(4).default(3),
@@ -164,7 +178,7 @@ const profileFields = z.strictObject({
164
178
  }),
165
179
  ]),
166
180
  // Skill trains (train.ts, ATK-285): the GitHub repo whose PRs carrying a `<work skill> · Train`
167
- // note ride one PR to its default branch. The daemon asks Jason for `conduct train` once `minimum`
181
+ // note ride one PR to its default branch. The daemon asks the operator for `conduct train` once `minimum`
168
182
  // wait, one is urgent, or the oldest has waited `maxHours`. Off when absent.
169
183
  train: z
170
184
  .strictObject({
@@ -191,14 +205,28 @@ const profileFields = z.strictObject({
191
205
  .prefault({}),
192
206
  })
193
207
  .prefault({}),
194
- // How the daemon starts this project's workers. `tab` opens each in a Windows Terminal tab
195
- // attached to its background session.
208
+ // Moved to the machine's config.json (workers.tab, ATK-529), and ignored here. Still read, so a
209
+ // profile written for an older conductor isn't refused; `conduct project check` warns about it.
196
210
  workers: z.strictObject({ tab: z.boolean().default(false) }).prefault({}),
197
211
  });
198
212
  // ADO Boards takes its organization and project from an Azure DevOps code host, and GitHub Issues
199
213
  // its owner and repo from a GitHub one; beside a code host of the other kind each names them.
214
+ // Azure Pipelines names an organization and project only to build a GitHub repo.
200
215
  export const profileSchema = profileFields.superRefine((profile, ctx) => {
201
- const { codeHost, tracker } = profile;
216
+ const { ci, codeHost, tracker } = profile;
217
+ // Without them beside a GitHub code host the profile still reads, as it did before they existed;
218
+ // `conduct runs` and `project check` refuse its CI (ciOf).
219
+ if (ci.kind === 'ado-pipelines' && codeHost.kind === 'ado') {
220
+ for (const key of ['organization', 'project']) {
221
+ if (ci[key] === undefined)
222
+ continue;
223
+ ctx.addIssue({
224
+ code: 'custom',
225
+ message: "only beside a github code host: Azure Pipelines builds an Azure DevOps repo in the repo's own",
226
+ path: ['ci', key],
227
+ });
228
+ }
229
+ }
202
230
  const missing = (key, what) => ctx.addIssue({
203
231
  code: 'custom',
204
232
  message: `required beside a ${codeHost.kind} code host: ${what}`,
@@ -223,22 +251,29 @@ export const profileSchema = profileFields.superRefine((profile, ctx) => {
223
251
  });
224
252
  }
225
253
  });
226
- // The Azure DevOps organization the project's ADO calls go to: its code host's, else its board's;
227
- // null for a project with neither on Azure DevOps.
254
+ // The Azure DevOps organization the project's ADO calls go to: its code host's, else its board's,
255
+ // else its Azure Pipelines'; null for a project with none on Azure DevOps.
228
256
  export function adoOrganization(profile) {
229
257
  if (profile.codeHost.kind === 'ado')
230
258
  return profile.codeHost.organization;
231
- return profile.tracker.kind === 'ado-boards' ? (profile.tracker.organization ?? null) : null;
259
+ if (profile.tracker.kind === 'ado-boards' && profile.tracker.organization)
260
+ return profile.tracker.organization;
261
+ return profile.ci.kind === 'ado-pipelines' ? (profile.ci.organization ?? null) : null;
262
+ }
263
+ // Whether the project's items have Areas: all but a Linear team with no Area group.
264
+ export function hasAreas(profile) {
265
+ return profile.tracker.kind !== 'linear' || profile.tracker.areaLabelGroup !== null;
232
266
  }
233
267
  // The `<skill> · ` headings that mark a project's notes: its work skill's, then each alias's.
234
- // Without a profile, work-issue's, which every project used before profiles named their own. The
235
- // conductor plugin's skills head their notes with the bare name: `work-item · `, not
236
- // `conductor:work-item · `, so notes from before and after a move to the plugin read alike.
268
+ // Without a profile, the plugin's own work skill's. The conductor plugin's skills head their notes
269
+ // with the bare name: `work-item · `, not `conductor:work-item · `, so notes from before and after
270
+ // a move to the plugin read alike. A project whose older notes carry another name lists it in
271
+ // `skills.aliases`.
237
272
  export function notePrefixes(profile) {
238
- const names = profile ? [profile.skills.work, ...profile.skills.aliases] : ['work-issue'];
273
+ const names = profile ? [profile.skills.work, ...profile.skills.aliases] : [WORK_SKILL];
239
274
  return [...new Set(names.map(noteName))].map((skill) => `${skill} · `);
240
275
  }
241
- // The key prefix of the project's items: the Linear team (ATK-311), or the Boards or GitHub Issues
276
+ // The key prefix of the project's items: the Linear team (ENG-311), or the Boards or GitHub Issues
242
277
  // key (CAD-1234, PAR-12).
243
278
  export function trackerKey(profile) {
244
279
  return profile.tracker.kind === 'linear' ? profile.tracker.team : profile.tracker.key;
@@ -281,19 +316,4 @@ export function profileProblem(error) {
281
316
  return error instanceof Error ? error.message : String(error);
282
317
  return error.details.length > 0 ? error.details.join('; ') : error.message;
283
318
  }
284
- export function readProfile(root) {
285
- const path = join(root, PROFILE_FILE);
286
- let source;
287
- try {
288
- source = readFileSync(path, 'utf8');
289
- }
290
- catch (error) {
291
- if (!isMissing(error))
292
- throw error;
293
- throw new ConductorError(`no ${PROFILE_FILE} in ${root}`, [
294
- 'a conducted project commits its profile at .claude/conductor.json',
295
- ]);
296
- }
297
- return { path, profile: parseProfile(source, path) };
298
- }
299
319
  //# sourceMappingURL=profile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"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"}
@@ -9,32 +9,33 @@ import { ConductorError } from "./errors.js";
9
9
  import { localCredentials } from "./in-process.js";
10
10
  import { checkFailed, checkLines, checkProject, checkReportSchema, noProject, } from "./project-check.js";
11
11
  import { openStore } from "./store.js";
12
- import { routedQueue } from "./trackers.js";
13
- import { boardsQueue } from "./watchers/boards-queue.js";
14
- import { issuesQueue } from "./watchers/issues-queue.js";
15
- import { linearQueue } from "./watchers/linear-queue.js";
12
+ import { projectTracker } from "./trackers.js";
16
13
  import { gitWorktrees } from "./worktrees.js";
17
- // The worktree's create hook may run 10 minutes (pnpm install) and its remove 5, on top of the reads.
14
+ // The worktree's setup may run 10 minutes (pnpm install) and its remove 5, on top of the reads.
18
15
  const CHECK_TIMEOUT_MS = 17 * 60_000;
19
16
  const refused = z.object({ details: z.array(z.string()).optional(), error: z.string() });
20
17
  // `conduct project check <name>`: through the daemon, which checks as its own accounts, else here
21
18
  // as the machine's. Returns the exit code: 1 when a check failed, else 0.
22
19
  export async function projectCheckCommand(paths, name, options, io) {
23
- let report;
20
+ const report = await projectCheckReport(paths, name, options, io);
21
+ if (options.json)
22
+ io.out(JSON.stringify(report, null, 2));
23
+ else
24
+ checkLines(report).forEach((line) => io.out(line));
25
+ return checkFailed(report) ? 1 : 0;
26
+ }
27
+ // The check's report, from the daemon or made here, for a caller that prints it its own way
28
+ // (`conduct init`).
29
+ export async function projectCheckReport(paths, name, options, io) {
24
30
  try {
25
- report = await checkByDaemon(paths, name, options);
31
+ return await checkByDaemon(paths, name, options);
26
32
  }
27
33
  catch (error) {
28
34
  if (!(error instanceof NotRunningError))
29
35
  throw error;
30
36
  io.err('checking here (the conductor is not running)');
31
- report = await checkHere(paths, name, options, io);
37
+ return checkHere(paths, name, options, io);
32
38
  }
33
- if (options.json)
34
- io.out(JSON.stringify(report, null, 2));
35
- else
36
- checkLines(report).forEach((line) => io.out(line));
37
- return checkFailed(report) ? 1 : 0;
38
39
  }
39
40
  async function checkByDaemon(paths, name, options) {
40
41
  const { body, status } = await callApi(paths, {
@@ -75,13 +76,10 @@ function localDeps(paths, store) {
75
76
  return {
76
77
  claude: claudeCli(),
77
78
  credentials,
78
- hosts: (project) => projectHosts(credentials, project),
79
+ hosts: (profile) => projectHosts(credentials, profile.name, { profile }),
80
+ paths,
79
81
  ports: broker({ pool: loadConfig(paths.config).ports, store }),
80
- queue: routedQueue({
81
- 'ado-boards': boardsQueue({ credentials }),
82
- 'github-issues': issuesQueue({ credentials }),
83
- linear: linearQueue({ credentials }),
84
- }),
82
+ queue: projectTracker({ credentials }).queue,
85
83
  worktrees: gitWorktrees(),
86
84
  };
87
85
  }