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

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 (210) hide show
  1. package/CHANGELOG.md +475 -0
  2. package/README.md +271 -125
  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 +221 -63
  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 +53 -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 +241 -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/credential-manager.js +109 -0
  40. package/build/host/credential-manager.js.map +1 -0
  41. package/build/host/keychain.js +44 -0
  42. package/build/host/keychain.js.map +1 -0
  43. package/build/host/launchd.js +118 -0
  44. package/build/host/launchd.js.map +1 -0
  45. package/build/host/libsecret.js +40 -0
  46. package/build/host/libsecret.js.map +1 -0
  47. package/build/host/macos-terminal.js +63 -0
  48. package/build/host/macos-terminal.js.map +1 -0
  49. package/build/host/platform.js +4 -0
  50. package/build/host/platform.js.map +1 -0
  51. package/build/host/secrets.js +46 -0
  52. package/build/host/secrets.js.map +1 -0
  53. package/build/host/shell.js +26 -0
  54. package/build/host/shell.js.map +1 -0
  55. package/build/host/startup.js +26 -0
  56. package/build/host/startup.js.map +1 -0
  57. package/build/host/systemd.js +91 -0
  58. package/build/host/systemd.js.map +1 -0
  59. package/build/host/task-scheduler.js +78 -0
  60. package/build/host/task-scheduler.js.map +1 -0
  61. package/build/host/terminal.js +46 -0
  62. package/build/host/terminal.js.map +1 -0
  63. package/build/host/tmux.js +39 -0
  64. package/build/host/tmux.js.map +1 -0
  65. package/build/host/windows-terminal.js +46 -0
  66. package/build/host/windows-terminal.js.map +1 -0
  67. package/build/in-process.js +5 -4
  68. package/build/in-process.js.map +1 -1
  69. package/build/inbox.js +47 -35
  70. package/build/inbox.js.map +1 -1
  71. package/build/init.js +509 -0
  72. package/build/init.js.map +1 -0
  73. package/build/landing.js +107 -10
  74. package/build/landing.js.map +1 -1
  75. package/build/lib/providers/ado/code-host.js +5 -1
  76. package/build/lib/providers/ado/code-host.js.map +1 -1
  77. package/build/lib/providers/ado/pipelines.js +138 -26
  78. package/build/lib/providers/ado/pipelines.js.map +1 -1
  79. package/build/lib/providers/ado/trigger.js +5 -0
  80. package/build/lib/providers/ado/trigger.js.map +1 -1
  81. package/build/lib/providers/ado/writes.js +17 -2
  82. package/build/lib/providers/ado/writes.js.map +1 -1
  83. package/build/lib/providers/github/actions.js +90 -3
  84. package/build/lib/providers/github/actions.js.map +1 -1
  85. package/build/lib/providers/github/code-host.js +2 -0
  86. package/build/lib/providers/github/code-host.js.map +1 -1
  87. package/build/lib/providers/github/writes.js +25 -2
  88. package/build/lib/providers/github/writes.js.map +1 -1
  89. package/build/lib/providers/index.js +3 -2
  90. package/build/lib/providers/index.js.map +1 -1
  91. package/build/lib/providers/npm/stage.js +14 -1
  92. package/build/lib/providers/npm/stage.js.map +1 -1
  93. package/build/lib/providers/timing.js +10 -0
  94. package/build/lib/providers/timing.js.map +1 -0
  95. package/build/lib/providers/verdicts/pr.js +47 -6
  96. package/build/lib/providers/verdicts/pr.js.map +1 -1
  97. package/build/lib/providers/verdicts/runs.js +12 -2
  98. package/build/lib/providers/verdicts/runs.js.map +1 -1
  99. package/build/logins.js +13 -6
  100. package/build/logins.js.map +1 -1
  101. package/build/manager.js +121 -55
  102. package/build/manager.js.map +1 -1
  103. package/build/note.js +5 -15
  104. package/build/note.js.map +1 -1
  105. package/build/notes.js +130 -23
  106. package/build/notes.js.map +1 -1
  107. package/build/notify.js +104 -42
  108. package/build/notify.js.map +1 -1
  109. package/build/npm-reads.js +151 -22
  110. package/build/npm-reads.js.map +1 -1
  111. package/build/ownership.js +2 -2
  112. package/build/paths.js +44 -1
  113. package/build/paths.js.map +1 -1
  114. package/build/plugin.js +4 -2
  115. package/build/plugin.js.map +1 -1
  116. package/build/profile-fields.js +153 -0
  117. package/build/profile-fields.js.map +1 -0
  118. package/build/profile-layers.js +264 -0
  119. package/build/profile-layers.js.map +1 -0
  120. package/build/profile.js +69 -49
  121. package/build/profile.js.map +1 -1
  122. package/build/project-check-cli.js +17 -19
  123. package/build/project-check-cli.js.map +1 -1
  124. package/build/project-check.js +166 -104
  125. package/build/project-check.js.map +1 -1
  126. package/build/protocol.js +5 -21
  127. package/build/protocol.js.map +1 -1
  128. package/build/pushover.js +5 -5
  129. package/build/pushover.js.map +1 -1
  130. package/build/queue.js +4 -4
  131. package/build/queue.js.map +1 -1
  132. package/build/registry.js +195 -36
  133. package/build/registry.js.map +1 -1
  134. package/build/release-kinds.js +34 -0
  135. package/build/release-kinds.js.map +1 -0
  136. package/build/rule-actions.js +8 -6
  137. package/build/rule-actions.js.map +1 -1
  138. package/build/rules-service.js +83 -44
  139. package/build/rules-service.js.map +1 -1
  140. package/build/rules.js +23 -23
  141. package/build/rules.js.map +1 -1
  142. package/build/run.js +20 -7
  143. package/build/run.js.map +1 -1
  144. package/build/runs.js +218 -68
  145. package/build/runs.js.map +1 -1
  146. package/build/scheduler.js +78 -12
  147. package/build/scheduler.js.map +1 -1
  148. package/build/search.js +2 -1
  149. package/build/search.js.map +1 -1
  150. package/build/server.js +51 -14
  151. package/build/server.js.map +1 -1
  152. package/build/spend.js +1 -1
  153. package/build/spend.js.map +1 -1
  154. package/build/store.js +79 -20
  155. package/build/store.js.map +1 -1
  156. package/build/supervise.js +1 -1
  157. package/build/supervise.js.map +1 -1
  158. package/build/timeline.js +104 -0
  159. package/build/timeline.js.map +1 -0
  160. package/build/tracker-reads-cli.js +4 -3
  161. package/build/tracker-reads-cli.js.map +1 -1
  162. package/build/trackers.js +56 -10
  163. package/build/trackers.js.map +1 -1
  164. package/build/train-cli.js +6 -5
  165. package/build/train-cli.js.map +1 -1
  166. package/build/train.js +2 -2
  167. package/build/train.js.map +1 -1
  168. package/build/upgrade.js +8 -9
  169. package/build/upgrade.js.map +1 -1
  170. package/build/wait.js +10 -10
  171. package/build/wait.js.map +1 -1
  172. package/build/watchers/ado.js +42 -19
  173. package/build/watchers/ado.js.map +1 -1
  174. package/build/watchers/github.js +18 -4
  175. package/build/watchers/github.js.map +1 -1
  176. package/build/watchers/index.js +2 -2
  177. package/build/watchers/index.js.map +1 -1
  178. package/build/watchers/linear-queue.js +47 -14
  179. package/build/watchers/linear-queue.js.map +1 -1
  180. package/build/watchers/linear-writes.js +26 -12
  181. package/build/watchers/linear-writes.js.map +1 -1
  182. package/build/watchers/linear.js +2 -2
  183. package/build/watchers/linear.js.map +1 -1
  184. package/build/watchers/source.js +5 -1
  185. package/build/watchers/source.js.map +1 -1
  186. package/build/webhook.js +80 -0
  187. package/build/webhook.js.map +1 -0
  188. package/build/why.js +1 -1
  189. package/build/why.js.map +1 -1
  190. package/build/worktrees.js +56 -93
  191. package/build/worktrees.js.map +1 -1
  192. package/package.json +61 -61
  193. package/plugin/.claude-plugin/plugin.json +1 -1
  194. package/plugin/hooks/model.ts +46 -6
  195. package/plugin/hooks/register.tsx +41 -2
  196. package/plugin/skills/conductor-console/SKILL.md +26 -27
  197. package/plugin/skills/work-item/SKILL.md +58 -54
  198. package/plugin/skills/work-item/trackers/ado-boards.md +2 -2
  199. package/plugin/skills/work-item/trackers/github-issues.md +1 -1
  200. package/plugin/skills/work-item/trackers/linear.md +2 -2
  201. package/plugin/types/index.d.ts +1 -1
  202. package/protocol/PROTOCOL.md +3 -9
  203. package/build/checkout-sync.js +0 -249
  204. package/build/checkout-sync.js.map +0 -1
  205. package/build/credential.js +0 -66
  206. package/build/credential.js.map +0 -1
  207. package/build/startup.js +0 -92
  208. package/build/startup.js.map +0 -1
  209. package/build/tab.js +0 -32
  210. package/build/tab.js.map +0 -1
@@ -8,13 +8,21 @@ import { ProviderError, registryFor } from "./lib/providers/index.js";
8
8
  import { outputOf, run } from "./run.js";
9
9
  const npmConfig = z.record(z.string(), z.unknown());
10
10
  const REDIRECTS = new Set([301, 302, 303, 307, 308]);
11
+ // The agent settings of a read with a credential but no proxy, CA or TLS change.
12
+ const DIRECT = { noProxy: [], proxy: {}, rejectUnauthorized: true };
13
+ // The .npmrc keys npm authorizes a registry with (npm-registry-fetch's auth.js): `//host/path/:<kind>`.
14
+ const CREDENTIAL_KEY = /^\/\/.+:(?:_auth|_authToken|_password|username)$/;
15
+ // npm's ${VAR} in an .npmrc key or value (@npmcli/config's env-replace.js): an unset VAR stays as
16
+ // written, ${VAR?} is empty when unset, and a backslash escapes it.
17
+ const ENV_EXPR = /(?<!\\)(\\*)\$\{([^${}?]+)(\?)?\}/g;
11
18
  // How long a failed load of npm's settings stands before a read asks npm again: a lasting failure
12
19
  // (npm off the daemon's PATH) shouldn't start a shell on every read.
13
20
  const RETRY_LOAD_MS = 60_000;
14
21
  // A fetch over Node's http and https agents, which route through a proxy (a CONNECT tunnel for
15
22
  // https) and take a CA; Node's own fetch takes neither from npm's settings. Enough of fetch for
16
- // npmStage: method, headers, signal, and a streamed body.
17
- export function agentFetch(settings) {
23
+ // npmStage: method, headers, signal, and a streamed body. Each hop sends the credential
24
+ // hopAuthorization gives it.
25
+ export function agentFetch(settings, authorization = () => undefined) {
18
26
  const agents = new Map();
19
27
  const agentFor = (url) => {
20
28
  const proxy = proxyFor(settings, url);
@@ -34,11 +42,15 @@ export function agentFetch(settings) {
34
42
  return agent;
35
43
  };
36
44
  // Follows a redirect as fetch does (a mirror may answer with its canonical path), up to 5 times.
37
- const send = (url, init, redirects) => {
45
+ const send = (url, init, redirects, authFor) => {
38
46
  const secure = url.protocol === 'https:';
47
+ const headers = new Headers(init?.headers);
48
+ const auth = authFor(url);
49
+ if (auth)
50
+ headers.set('authorization', auth);
39
51
  const options = {
40
52
  agent: agentFor(url),
41
- headers: Object.fromEntries(new Headers(init?.headers)),
53
+ headers: Object.fromEntries(headers),
42
54
  method: init?.method ?? 'GET',
43
55
  signal: init?.signal ?? undefined,
44
56
  };
@@ -48,10 +60,15 @@ export function agentFetch(settings) {
48
60
  const { location } = response.headers;
49
61
  if (REDIRECTS.has(status) && location) {
50
62
  response.resume();
51
- if (redirects >= 5)
63
+ if (redirects >= 5) {
52
64
  reject(new TypeError(`more than 5 redirects from ${url.origin}`));
53
- else
54
- resolve(send(new URL(location, url), init, redirects + 1));
65
+ return;
66
+ }
67
+ // A caller's own authorization stays on its origin, as fetch keeps it.
68
+ const next = new URL(location, url);
69
+ const kept = new Headers(init?.headers);
70
+ kept.delete('authorization');
71
+ resolve(send(next, next.origin === url.origin ? init : { ...init, headers: kept }, redirects + 1, authFor));
55
72
  return;
56
73
  }
57
74
  const headers = new Headers();
@@ -71,7 +88,10 @@ export function agentFetch(settings) {
71
88
  request.end();
72
89
  });
73
90
  };
74
- return (input, init) => send(new URL(input instanceof Request ? input.url : input), init, 0);
91
+ return (input, init) => {
92
+ const url = new URL(input instanceof Request ? input.url : input);
93
+ return send(url, init, 0, hopAuthorization(authorization, url));
94
+ };
75
95
  }
76
96
  // npm's proxy, CA and TLS settings for the reads, or null when plain fetch does. The proxy is the one
77
97
  // npm picks (@npmcli/agent's getProxy): https-proxy or proxy from its settings, for either protocol;
@@ -97,9 +117,20 @@ export function agentSettings(config, env, readFile = (path) => readFileSync(pat
97
117
  rejectUnauthorized,
98
118
  };
99
119
  }
120
+ // The credential each hop of a read that starts at `start` sends: npm's for the hop's own URL, else,
121
+ // on the start's origin, the start's, as npm falls back to the registry's. A redirect to another
122
+ // origin carries none of the start's, and a hop from https down to http carries none at all.
123
+ export function hopAuthorization(authorization, start) {
124
+ const first = authorization(start);
125
+ return (hop) => {
126
+ if (start.protocol === 'https:' && hop.protocol === 'http:')
127
+ return undefined;
128
+ return authorization(hop) ?? (hop.origin === start.origin ? first : undefined);
129
+ };
130
+ }
100
131
  // The settings `npm install --global` reads (`conduct upgrade` installs that way): --global skips a
101
132
  // project .npmrc, and the home folder keeps the caller's checkout out of it. npm leaves its tokens
102
- // out of the list.
133
+ // out of the list: npmCredentials reads them.
103
134
  export async function loadNpmConfig() {
104
135
  const result = await run('npm', ['config', 'list', '--json', '--global'], {
105
136
  cwd: homedir(),
@@ -118,6 +149,43 @@ export async function loadNpmConfig() {
118
149
  throw new ProviderError("npm config list --json answered something other than npm's settings");
119
150
  }
120
151
  }
152
+ // npm's registry credentials, which `npm config list` leaves out: the `//host/path/:` keys of the
153
+ // .npmrc files it names, the user's over the global one (a global install reads no project
154
+ // .npmrc), or none when there are none. A file that isn't there has none; one that can't be read
155
+ // fails the reads. A URL takes the key npm-registry-fetch's auth.js picks: from `//host/path`,
156
+ // strip a segment or a slash at a time to the first with a token, an _auth, or a username and
157
+ // _password. The values stay in here: no message, event or log carries them. They are read once,
158
+ // with the rest of npm's settings: a new token reaches a running daemon on its next start.
159
+ export function npmCredentials(config, env, readFile = (path) => readFileSync(path, 'utf8')) {
160
+ const keys = new Map();
161
+ for (const setting of ['globalconfig', 'userconfig']) {
162
+ const path = text(config[setting]);
163
+ const rc = path ? readOptional(setting, path, readFile) : undefined;
164
+ for (const [key, value] of rc ? credentialsIn(rc, env) : [])
165
+ keys.set(key, value);
166
+ }
167
+ if (keys.size === 0)
168
+ return undefined;
169
+ return (url) => {
170
+ let key = `//${url.host}${url.pathname}`;
171
+ while (key.length > '//'.length) {
172
+ const token = keys.get(`${key}:_authToken`);
173
+ if (token)
174
+ return `Bearer ${token}`;
175
+ const auth = keys.get(`${key}:_auth`);
176
+ if (auth)
177
+ return `Basic ${auth}`;
178
+ const username = keys.get(`${key}:username`);
179
+ const password = keys.get(`${key}:_password`);
180
+ if (username && password) {
181
+ const plain = Buffer.from(password, 'base64').toString('utf8');
182
+ return `Basic ${Buffer.from(`${username}:${plain}`, 'utf8').toString('base64')}`;
183
+ }
184
+ key = key.replace(/(?:[^/]+|\/)$/, '');
185
+ }
186
+ return undefined;
187
+ };
188
+ }
121
189
  // The reads npmStage takes, from npm's settings, loaded once on the first read. A failed load fails
122
190
  // the reads with npm's reason, and a read a minute later loads again; a changed setting reaches a
123
191
  // running daemon on its next start.
@@ -131,7 +199,9 @@ export function npmReads({ env = process.env, load = loadNpmConfig, now = () =>
131
199
  return failed.settings;
132
200
  const current = load().then((config) => {
133
201
  const agent = agentSettings(config, env, readFile);
134
- return { config, fetch: agent ? agentFetch(agent) : globalThis.fetch };
202
+ const authorization = npmCredentials(config, env, readFile);
203
+ const fetcher = agent || authorization ? agentFetch(agent ?? DIRECT, authorization) : globalThis.fetch;
204
+ return { config, fetch: fetcher };
135
205
  });
136
206
  loading = current;
137
207
  current.catch(() => {
@@ -158,23 +228,68 @@ export function sharedNpmReads() {
158
228
  // cafile that isn't there is no CA, as npm takes it; one that can't be read fails the reads.
159
229
  function caOf(config, readFile) {
160
230
  const cafile = text(config.cafile);
161
- if (cafile) {
162
- try {
163
- return readFile(cafile);
164
- }
165
- catch (error) {
166
- if (!(error instanceof Error))
167
- throw error;
168
- if ('code' in error && error.code === 'ENOENT')
169
- return undefined;
170
- throw new ProviderError(`could not read npm's cafile ${cafile}: ${error.message}`);
171
- }
172
- }
231
+ if (cafile)
232
+ return readOptional('cafile', cafile, readFile);
173
233
  const ca = [config.ca].flat().filter((entry) => typeof entry === 'string' && entry !== '');
174
234
  if (ca.length === 0)
175
235
  return undefined;
176
236
  return ca.length === 1 ? ca[0] : ca;
177
237
  }
238
+ // The credential keys of an .npmrc, with npm's ${VAR} expanded in keys and values: ini's
239
+ // `key = value` lines above the first [section] line, as npm reads them.
240
+ function credentialsIn(rc, env) {
241
+ const found = [];
242
+ for (const raw of rc.split(/[\r\n]+/)) {
243
+ if (/^\[[^\]]*\]\s*$/.test(raw))
244
+ break;
245
+ const line = raw.trim();
246
+ const equals = line.indexOf('=');
247
+ if (line.startsWith(';') || line.startsWith('#') || equals < 0)
248
+ continue;
249
+ const key = envReplace(iniValue(line.slice(0, equals)), env);
250
+ if (CREDENTIAL_KEY.test(key))
251
+ found.push([key, envReplace(iniValue(line.slice(equals + 1)), env)]);
252
+ }
253
+ return found;
254
+ }
255
+ function envReplace(value, env) {
256
+ return value.replace(ENV_EXPR, (match, escapes, name, optional) => {
257
+ if (escapes.length % 2 === 1)
258
+ return match.slice((escapes.length + 1) / 2);
259
+ return escapes.slice(escapes.length / 2) + (env[name] ?? (optional ? '' : `\${${name}}`));
260
+ });
261
+ }
262
+ // An ini value as the ini package's unsafe() reads it: a quoted one as JSON (a single-quoted one
263
+ // without its quotes first), kept as it is when that isn't JSON; else up to an unescaped ; or #,
264
+ // with \; \# and \\ unescaped.
265
+ function iniValue(raw) {
266
+ const value = raw.trim();
267
+ if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
268
+ const json = value.startsWith("'") ? value.slice(1, -1) : value;
269
+ try {
270
+ const parsed = JSON.parse(json);
271
+ return typeof parsed === 'string' ? parsed : JSON.stringify(parsed);
272
+ }
273
+ catch {
274
+ return json;
275
+ }
276
+ }
277
+ let plain = '';
278
+ let escaped = false;
279
+ for (const char of value) {
280
+ if (escaped) {
281
+ plain += '\\;#'.includes(char) ? char : `\\${char}`;
282
+ escaped = false;
283
+ }
284
+ else if (char === '\\')
285
+ escaped = true;
286
+ else if (char === ';' || char === '#')
287
+ break;
288
+ else
289
+ plain += char;
290
+ }
291
+ return (escaped ? `${plain}\\` : plain).trim();
292
+ }
178
293
  // npm's proxy for a registry URL, or none when noProxy names its host or a domain above it
179
294
  // (@npmcli/agent's isNoProxy: `acme.test` covers `npm.acme.test`).
180
295
  function proxyFor(settings, url) {
@@ -187,6 +302,20 @@ function proxyFor(settings, url) {
187
302
  return undefined;
188
303
  return url.protocol === 'https:' ? settings.proxy.https : settings.proxy.http;
189
304
  }
305
+ // One of npm's settings files, or none when it isn't there, as npm takes it; one that can't be
306
+ // read fails the reads.
307
+ function readOptional(setting, path, readFile) {
308
+ try {
309
+ return readFile(path);
310
+ }
311
+ catch (error) {
312
+ if (!(error instanceof Error))
313
+ throw error;
314
+ if ('code' in error && error.code === 'ENOENT')
315
+ return undefined;
316
+ throw new ProviderError(`could not read npm's ${setting} ${path}: ${error.message}`);
317
+ }
318
+ }
190
319
  // The first value that is a string with something in it.
191
320
  function text(...values) {
192
321
  return values.find((value) => typeof value === 'string' && value !== '');
@@ -1 +1 @@
1
- {"version":3,"file":"npm-reads.js","sourceRoot":"","sources":["../src/npm-reads.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"npm-reads.js","sourceRoot":"","sources":["../src/npm-reads.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  // touch a PR that isn't the asking worker's: another item's, a branch the worktree isn't on, a title
4
4
  // without the key, or auto mode where the landing rules say review.
5
5
  const BRANCH_TYPES = ['build', 'chore', 'ci', 'docs', 'feat', 'fix', 'perf', 'refactor', 'revert', 'style', 'test'];
6
- // <type>/<key>-<slug>, such as feat/atk-454-code-host-writes, or null when the type isn't a
6
+ // <type>/<key>-<slug>, such as feat/eng-454-code-host-writes, or null when the type isn't a
7
7
  // conventional commit type or the slug is empty once cleaned.
8
8
  export function branchName(type, slug, item) {
9
9
  const clean = slug
@@ -12,7 +12,7 @@ export function branchName(type, slug, item) {
12
12
  .replace(/^-|-$/g, '');
13
13
  return BRANCH_TYPES.includes(type) && clean ? `${type}/${item.toLowerCase()}-${clean}` : null;
14
14
  }
15
- // The item key in a branch or worktree name, with the project's key prefix: atk-454 → ATK-454.
15
+ // The item key in a branch or worktree name, with the project's key prefix: eng-454 → ENG-454.
16
16
  export function itemKey(text, prefix) {
17
17
  const found = new RegExp(`(?:^|[^A-Za-z0-9])(${escape(prefix)}-\\d+)(?![0-9])`, 'i').exec(text);
18
18
  return found?.[1]?.toUpperCase() ?? null;
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) => {
@@ -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;AAyB1C,MAAM,UAAU,cAAc,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,WAAW,EAAE;IAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC;QACjC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QAC9B,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;QAC9B,IAAI;QACJ,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC;QAChC,IAAI;QACJ,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC;QAChC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC5B,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;QACxB,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;QAC/B,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC;QAC1C,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAC3C,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;KAC3B,CAAC;AACJ,CAAC;AAED,mGAAmG;AACnG,yGAAyG;AACzG,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,CAAS;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE;QACjC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
package/build/plugin.js CHANGED
@@ -12,6 +12,8 @@ import { outputOf } from "./run.js";
12
12
  // runs on silently without the plugin (ATK-522). Other sessions never see it.
13
13
  // The plugin's name, which namespaces its skills: /conductor:work-item.
14
14
  export const PLUGIN_NAME = 'conductor';
15
+ // The plugin's reference work skill: what `conduct init` writes as a new profile's `skills.work`.
16
+ export const WORK_SKILL = `${PLUGIN_NAME}:work-item`;
15
17
  const USER_MOD = `${PLUGIN_NAME}@${PLUGIN_NAME}`;
16
18
  // Claude Code writes these into a plugin folder each time it loads it (its API's types, a
17
19
  // tsconfig), and the tests aren't shipped: a refresh neither copies nor removes them.
@@ -30,7 +32,7 @@ export function missingPluginSkills(dir, names) {
30
32
  }
31
33
  // Which of the named skills outside the plugin a session in the worktree wouldn't find: neither in
32
34
  // 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.
35
+ // through its `setup` (a command that installs them), so this checks only that they arrived.
34
36
  export function missingProjectSkills(worktree, names, skillsHome) {
35
37
  const found = (dir, name) => existsSync(join(dir, name, 'SKILL.md'));
36
38
  const missing = projectSkills(names).filter((name) => !found(join(worktree, '.claude', 'skills'), name) && !found(skillsHome, name));
@@ -39,7 +41,7 @@ export function missingProjectSkills(worktree, names, skillsHome) {
39
41
  : `${missing.join(', ')} not in ${join(worktree, '.claude', 'skills')} or ${skillsHome} after setup`;
40
42
  }
41
43
  // A skill named `conductor:<skill>` is the conductor plugin's, which `--plugin-dir` loads; any
42
- // other is one the project installs (.atk-lock.json). The note headings take the bare name.
44
+ // other is one the project installs itself. The note headings take the bare name.
43
45
  export function noteName(name) {
44
46
  return pluginSkill(name) ?? name;
45
47
  }
@@ -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":"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"}
@@ -0,0 +1,153 @@
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
+ 'ci.organization': '3.0.0-dev.31',
19
+ 'ci.project': '3.0.0-dev.31',
20
+ codeHost: PROTOCOL_2,
21
+ 'codeHost.kind': PROTOCOL_2,
22
+ 'codeHost.organization': PROTOCOL_2,
23
+ 'codeHost.owner': PROTOCOL_2,
24
+ 'codeHost.project': PROTOCOL_2,
25
+ 'codeHost.repo': PROTOCOL_2,
26
+ 'codeHost.repository': PROTOCOL_2,
27
+ conductor: '3.0.0-dev.9',
28
+ gates: PROTOCOL_2,
29
+ health: PROTOCOL_2,
30
+ localFilesFrom: '3.0.0-dev.4',
31
+ name: PROTOCOL_2,
32
+ npm: PROTOCOL_2,
33
+ 'npm.package': PROTOCOL_2,
34
+ ports: '3.0.0-dev.4',
35
+ protocol: PROTOCOL_2,
36
+ release: PROTOCOL_2,
37
+ 'release.handoff': PROTOCOL_2,
38
+ releases: PROTOCOL_2,
39
+ 'releases.key': PROTOCOL_2,
40
+ 'releases.kind': PROTOCOL_2,
41
+ 'releases.package': PROTOCOL_2,
42
+ 'releases.pipeline': PROTOCOL_2,
43
+ rules: PROTOCOL_2,
44
+ 'rules.do': PROTOCOL_2,
45
+ 'rules.id': PROTOCOL_2,
46
+ 'rules.note': PROTOCOL_2,
47
+ 'rules.when': PROTOCOL_2,
48
+ setup: '3.0.0-dev.4',
49
+ skills: PROTOCOL_2,
50
+ 'skills.aliases': PROTOCOL_2,
51
+ 'skills.verify': PROTOCOL_2,
52
+ 'skills.work': PROTOCOL_2,
53
+ slots: PROTOCOL_2,
54
+ tracker: PROTOCOL_2,
55
+ 'tracker.areaLabelGroup': PROTOCOL_2,
56
+ 'tracker.areaPrefix': PROTOCOL_2,
57
+ 'tracker.areaRoot': PROTOCOL_2,
58
+ 'tracker.humanLabel': PROTOCOL_2,
59
+ 'tracker.key': PROTOCOL_2,
60
+ 'tracker.kind': PROTOCOL_2,
61
+ 'tracker.organization': PROTOCOL_2,
62
+ 'tracker.owner': PROTOCOL_2,
63
+ 'tracker.priority': PROTOCOL_2,
64
+ 'tracker.project': PROTOCOL_2,
65
+ 'tracker.query': PROTOCOL_2,
66
+ 'tracker.queue': PROTOCOL_2,
67
+ 'tracker.queue.label': '3.0.0-dev.32',
68
+ 'tracker.queue.priority': '3.0.0-dev.32',
69
+ 'tracker.queueLabel': PROTOCOL_2,
70
+ 'tracker.releaseWait': '2.2.0-dev.3',
71
+ 'tracker.releaseWait.label': '2.2.0-dev.3',
72
+ 'tracker.releaseWait.shipped': '2.2.0-dev.3',
73
+ 'tracker.repo': PROTOCOL_2,
74
+ 'tracker.states': PROTOCOL_2,
75
+ 'tracker.team': PROTOCOL_2,
76
+ 'tracker.transitions': PROTOCOL_2,
77
+ 'tracker.transitions.landed': PROTOCOL_2,
78
+ 'tracker.transitions.pr-opened': PROTOCOL_2,
79
+ 'tracker.transitions.started': PROTOCOL_2,
80
+ 'tracker.triageLabel': PROTOCOL_2,
81
+ 'tracker.workItemType': PROTOCOL_2,
82
+ train: PROTOCOL_2,
83
+ 'train.maxHours': PROTOCOL_2,
84
+ 'train.minimum': PROTOCOL_2,
85
+ 'train.repo': PROTOCOL_2,
86
+ weight: PROTOCOL_2,
87
+ work: PROTOCOL_2,
88
+ 'work.hooks': PROTOCOL_2,
89
+ 'work.landing': PROTOCOL_2,
90
+ 'work.landing.review': PROTOCOL_2,
91
+ 'work.landing.reviewTiers': PROTOCOL_2,
92
+ workers: PROTOCOL_2,
93
+ 'workers.tab': PROTOCOL_2,
94
+ };
95
+ // minimumProblems with the version that clears them, for `conduct project check`'s fix (ATK-580).
96
+ export function minimumCheck(text, source, since = FIELD_SINCE) {
97
+ const profile = parseJsonc(text, z.unknown(), source);
98
+ const conductor = typeof profile === 'object' && profile !== null && 'conductor' in profile ? profile.conductor : undefined;
99
+ const minimum = typeof conductor === 'string' ? valid(conductor) : null;
100
+ const theirs = minimum !== null
101
+ ? `the profile's minimum is ${minimum}`
102
+ : conductor === undefined
103
+ ? 'the profile sets no "conductor" minimum'
104
+ : `the profile's minimum ${JSON.stringify(conductor)} is not a version`;
105
+ // `tracker` and `tracker.releaseWait` for `tracker.releaseWait.label`.
106
+ const parents = new Set();
107
+ for (const path of Object.keys(since))
108
+ for (let dot = path.indexOf('.'); dot !== -1; dot = path.indexOf('.', dot + 1))
109
+ parents.add(path.slice(0, dot));
110
+ const problems = [];
111
+ let needs = null;
112
+ for (const path of new Set(writtenFields(profile, parents))) {
113
+ const version = since[path];
114
+ if (version === undefined)
115
+ problems.push(`${path}: no conductor version recorded for it in profile-fields.ts`);
116
+ else if (lt(minimum ?? PROTOCOL_2, version)) {
117
+ problems.push(`${path}: needs conductor ${version} or newer; ${theirs}`);
118
+ if (needs === null || gt(version, needs))
119
+ needs = version;
120
+ }
121
+ }
122
+ // Raising the minimum writes `conductor`, so the version also covers the conductor that reads it.
123
+ const key = since.conductor;
124
+ if (needs !== null && key !== undefined && gt(key, needs))
125
+ needs = key;
126
+ return { needs, problems };
127
+ }
128
+ // Where a profile's `conductor` minimum is below a field it writes, one line each: a field newer
129
+ // than the minimum, or than PROTOCOL_2 when it sets none, and a field with no recorded version. A
130
+ // conductor test holds this repo's own profile to it, so a PR that writes a new field raises the minimum too.
131
+ export function minimumProblems(text, source, since = FIELD_SINCE) {
132
+ return minimumCheck(text, source, since).problems;
133
+ }
134
+ // The fields a profile writes, by their paths in FIELD_SINCE, in the order it writes them. Fields
135
+ // a default fills in aren't written, so they need nothing. It looks inside a key only when it is
136
+ // one of `parents`, the paths FIELD_SINCE records fields below, so a record's own names (health's
137
+ // environments) aren't fields.
138
+ function* writtenFields(value, parents, prefix = '') {
139
+ if (Array.isArray(value)) {
140
+ for (const item of value)
141
+ yield* writtenFields(item, parents, prefix);
142
+ return;
143
+ }
144
+ if (value === null || typeof value !== 'object')
145
+ return;
146
+ for (const [key, child] of Object.entries(value)) {
147
+ const path = prefix === '' ? key : `${prefix}.${key}`;
148
+ yield path;
149
+ if (parents.has(path))
150
+ yield* writtenFields(child, parents, path);
151
+ }
152
+ }
153
+ //# sourceMappingURL=profile-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-fields.js","sourceRoot":"","sources":["../src/profile-fields.ts"],"names":[],"mappings":"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"}