@detergent-software/conductor 3.0.0-dev.1 → 3.0.0-dev.11

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 (71) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/README.md +47 -20
  3. package/build/broker-cli.js +19 -21
  4. package/build/broker-cli.js.map +1 -1
  5. package/build/broker.js +66 -92
  6. package/build/broker.js.map +1 -1
  7. package/build/claude.js +50 -7
  8. package/build/claude.js.map +1 -1
  9. package/build/cli.js +12 -22
  10. package/build/cli.js.map +1 -1
  11. package/build/code-host.js +10 -8
  12. package/build/code-host.js.map +1 -1
  13. package/build/config.js +10 -0
  14. package/build/config.js.map +1 -1
  15. package/build/console.js +26 -0
  16. package/build/console.js.map +1 -1
  17. package/build/daemon.js +13 -6
  18. package/build/daemon.js.map +1 -1
  19. package/build/help.js +10 -12
  20. package/build/help.js.map +1 -1
  21. package/build/in-process.js +3 -3
  22. package/build/in-process.js.map +1 -1
  23. package/build/inbox.js +39 -4
  24. package/build/inbox.js.map +1 -1
  25. package/build/lib/providers/index.js +1 -1
  26. package/build/lib/providers/index.js.map +1 -1
  27. package/build/lib/providers/npm/stage.js +14 -4
  28. package/build/lib/providers/npm/stage.js.map +1 -1
  29. package/build/local-files.js +95 -0
  30. package/build/local-files.js.map +1 -0
  31. package/build/manager.js +144 -27
  32. package/build/manager.js.map +1 -1
  33. package/build/npm-reads.js +194 -0
  34. package/build/npm-reads.js.map +1 -0
  35. package/build/plugin.js +10 -0
  36. package/build/plugin.js.map +1 -1
  37. package/build/profile.js +55 -19
  38. package/build/profile.js.map +1 -1
  39. package/build/project-check-cli.js +4 -1
  40. package/build/project-check-cli.js.map +1 -1
  41. package/build/project-check.js +69 -22
  42. package/build/project-check.js.map +1 -1
  43. package/build/rule-actions.js +3 -1
  44. package/build/rule-actions.js.map +1 -1
  45. package/build/rules-service.js +22 -4
  46. package/build/rules-service.js.map +1 -1
  47. package/build/rules.js +10 -1
  48. package/build/rules.js.map +1 -1
  49. package/build/scheduler.js +11 -1
  50. package/build/scheduler.js.map +1 -1
  51. package/build/server.js +0 -19
  52. package/build/server.js.map +1 -1
  53. package/build/spend.js +4 -0
  54. package/build/spend.js.map +1 -1
  55. package/build/store.js +36 -10
  56. package/build/store.js.map +1 -1
  57. package/build/tracker-reads-cli.js +2 -4
  58. package/build/tracker-reads-cli.js.map +1 -1
  59. package/build/upgrade.js +16 -1
  60. package/build/upgrade.js.map +1 -1
  61. package/build/watchers/ado.js +3 -2
  62. package/build/watchers/ado.js.map +1 -1
  63. package/build/watchers/github.js +3 -2
  64. package/build/watchers/github.js.map +1 -1
  65. package/build/watchers/npm.js +6 -4
  66. package/build/watchers/npm.js.map +1 -1
  67. package/build/worktrees.js +182 -38
  68. package/build/worktrees.js.map +1 -1
  69. package/package.json +2 -2
  70. package/plugin/skills/conductor-console/SKILL.md +1 -1
  71. package/plugin/skills/work-item/SKILL.md +2 -2
@@ -0,0 +1,194 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import http from 'node:http';
3
+ import https from 'node:https';
4
+ import { homedir } from 'node:os';
5
+ import { Readable } from 'node:stream';
6
+ import { z } from 'zod';
7
+ import { ProviderError, registryFor } from "./lib/providers/index.js";
8
+ import { outputOf, run } from "./run.js";
9
+ const npmConfig = z.record(z.string(), z.unknown());
10
+ const REDIRECTS = new Set([301, 302, 303, 307, 308]);
11
+ // How long a failed load of npm's settings stands before a read asks npm again: a lasting failure
12
+ // (npm off the daemon's PATH) shouldn't start a shell on every read.
13
+ const RETRY_LOAD_MS = 60_000;
14
+ // A fetch over Node's http and https agents, which route through a proxy (a CONNECT tunnel for
15
+ // 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) {
18
+ const agents = new Map();
19
+ const agentFor = (url) => {
20
+ const proxy = proxyFor(settings, url);
21
+ const key = `${url.protocol} ${proxy ?? ''}`;
22
+ let agent = agents.get(key);
23
+ if (!agent) {
24
+ agent =
25
+ url.protocol === 'https:'
26
+ ? new https.Agent({
27
+ ca: settings.ca,
28
+ proxyEnv: proxy ? { HTTPS_PROXY: proxy } : undefined,
29
+ rejectUnauthorized: settings.rejectUnauthorized,
30
+ })
31
+ : new http.Agent({ proxyEnv: proxy ? { HTTP_PROXY: proxy } : undefined });
32
+ agents.set(key, agent);
33
+ }
34
+ return agent;
35
+ };
36
+ // Follows a redirect as fetch does (a mirror may answer with its canonical path), up to 5 times.
37
+ const send = (url, init, redirects) => {
38
+ const secure = url.protocol === 'https:';
39
+ const options = {
40
+ agent: agentFor(url),
41
+ headers: Object.fromEntries(new Headers(init?.headers)),
42
+ method: init?.method ?? 'GET',
43
+ signal: init?.signal ?? undefined,
44
+ };
45
+ return new Promise((resolve, reject) => {
46
+ const answer = (response) => {
47
+ const status = response.statusCode ?? 0;
48
+ const { location } = response.headers;
49
+ if (REDIRECTS.has(status) && location) {
50
+ response.resume();
51
+ if (redirects >= 5)
52
+ reject(new TypeError(`more than 5 redirects from ${url.origin}`));
53
+ else
54
+ resolve(send(new URL(location, url), init, redirects + 1));
55
+ return;
56
+ }
57
+ const headers = new Headers();
58
+ for (const [name, value] of Object.entries(response.headers)) {
59
+ for (const one of [value ?? []].flat())
60
+ headers.append(name, one);
61
+ }
62
+ if (status === 204 || status === 205 || status === 304) {
63
+ response.resume();
64
+ resolve(new Response(null, { headers, status }));
65
+ return;
66
+ }
67
+ resolve(new Response(Readable.toWeb(response), { headers, status }));
68
+ };
69
+ const request = secure ? https.request(url, options, answer) : http.request(url, options, answer);
70
+ request.on('error', reject);
71
+ request.end();
72
+ });
73
+ };
74
+ return (input, init) => send(new URL(input instanceof Request ? input.url : input), init, 0);
75
+ }
76
+ // npm's proxy, CA and TLS settings for the reads, or null when plain fetch does. The proxy is the one
77
+ // npm picks (@npmcli/agent's getProxy): https-proxy or proxy from its settings, for either protocol;
78
+ // with neither, from the environment (either case), https_proxy for an https registry and
79
+ // https_proxy, http_proxy or proxy for an http one. noproxy, else NO_PROXY, names the hosts it skips.
80
+ export function agentSettings(config, env, readFile = (path) => readFileSync(path, 'utf8')) {
81
+ const configured = text(config['https-proxy'], config.proxy);
82
+ const forHttps = configured ?? text(env.https_proxy, env.HTTPS_PROXY);
83
+ const forHttp = configured ?? text(env.https_proxy, env.HTTPS_PROXY, env.http_proxy, env.HTTP_PROXY, env.proxy, env.PROXY);
84
+ const listed = [config.noproxy].flat().filter((entry) => typeof entry === 'string' && entry !== '');
85
+ const noProxy = (listed.length > 0 ? listed.join(',') : (text(env.no_proxy, env.NO_PROXY) ?? ''))
86
+ .split(',')
87
+ .map((entry) => entry.trim())
88
+ .filter(Boolean);
89
+ const ca = caOf(config, readFile);
90
+ const rejectUnauthorized = config['strict-ssl'] !== false;
91
+ if (!forHttps && !forHttp && !ca && rejectUnauthorized)
92
+ return null;
93
+ return {
94
+ ...(ca ? { ca } : {}),
95
+ noProxy,
96
+ proxy: { ...(forHttp ? { http: forHttp } : {}), ...(forHttps ? { https: forHttps } : {}) },
97
+ rejectUnauthorized,
98
+ };
99
+ }
100
+ // The settings `npm install --global` reads (`conduct upgrade` installs that way): --global skips a
101
+ // project .npmrc, and the home folder keeps the caller's checkout out of it. npm leaves its tokens
102
+ // out of the list.
103
+ export async function loadNpmConfig() {
104
+ const result = await run('npm', ['config', 'list', '--json', '--global'], {
105
+ cwd: homedir(),
106
+ shell: process.platform === 'win32',
107
+ timeoutMs: 60_000,
108
+ });
109
+ if (result.code !== 0) {
110
+ throw new ProviderError(`could not read npm's settings (npm config list): ${outputOf(result, 300)}`, {
111
+ transient: true,
112
+ });
113
+ }
114
+ try {
115
+ return npmConfig.parse(JSON.parse(result.stdout));
116
+ }
117
+ catch {
118
+ throw new ProviderError("npm config list --json answered something other than npm's settings");
119
+ }
120
+ }
121
+ // The reads npmStage takes, from npm's settings, loaded once on the first read. A failed load fails
122
+ // the reads with npm's reason, and a read a minute later loads again; a changed setting reaches a
123
+ // running daemon on its next start.
124
+ export function npmReads({ env = process.env, load = loadNpmConfig, now = () => Date.now(), readFile, } = {}) {
125
+ let loading = null;
126
+ let failed = null;
127
+ const settings = () => {
128
+ if (loading)
129
+ return loading;
130
+ if (failed && now() - failed.at < RETRY_LOAD_MS)
131
+ return failed.settings;
132
+ const current = load().then((config) => {
133
+ const agent = agentSettings(config, env, readFile);
134
+ return { config, fetch: agent ? agentFetch(agent) : globalThis.fetch };
135
+ });
136
+ loading = current;
137
+ current.catch(() => {
138
+ if (loading !== current)
139
+ return;
140
+ loading = null;
141
+ failed = { at: now(), settings: current };
142
+ });
143
+ return current;
144
+ };
145
+ return {
146
+ fetch: async (input, init) => (await settings()).fetch(input, init),
147
+ registry: async (pkg) => registryFor((await settings()).config, pkg),
148
+ };
149
+ }
150
+ let shared = null;
151
+ // The process's reads from npm's settings, shared so npm is asked for them once. The default of
152
+ // every npmStage the conductor builds; a test passes its own fetch (npmjs) or reads.
153
+ export function sharedNpmReads() {
154
+ shared ??= npmReads();
155
+ return shared;
156
+ }
157
+ // npm's CA: cafile's certificates, else ca. Either replaces Node's own roots, as it does for npm. A
158
+ // cafile that isn't there is no CA, as npm takes it; one that can't be read fails the reads.
159
+ function caOf(config, readFile) {
160
+ 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
+ }
173
+ const ca = [config.ca].flat().filter((entry) => typeof entry === 'string' && entry !== '');
174
+ if (ca.length === 0)
175
+ return undefined;
176
+ return ca.length === 1 ? ca[0] : ca;
177
+ }
178
+ // npm's proxy for a registry URL, or none when noProxy names its host or a domain above it
179
+ // (@npmcli/agent's isNoProxy: `acme.test` covers `npm.acme.test`).
180
+ function proxyFor(settings, url) {
181
+ const host = url.hostname.split('.').reverse();
182
+ const skipped = settings.noProxy.some((entry) => {
183
+ const segments = entry.split('.').filter(Boolean).reverse();
184
+ return segments.length > 0 && segments.every((segment, i) => host[i] === segment);
185
+ });
186
+ if (skipped)
187
+ return undefined;
188
+ return url.protocol === 'https:' ? settings.proxy.https : settings.proxy.http;
189
+ }
190
+ // The first value that is a string with something in it.
191
+ function text(...values) {
192
+ return values.find((value) => typeof value === 'string' && value !== '');
193
+ }
194
+ //# sourceMappingURL=npm-reads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm-reads.js","sourceRoot":"","sources":["../src/npm-reads.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) {
@@ -1 +1 @@
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,+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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
package/build/profile.js CHANGED
@@ -1,15 +1,17 @@
1
1
  import { readFileSync } from 'node:fs';
2
- import { join } from 'node:path';
2
+ import { isAbsolute, join } from 'node:path';
3
+ import { lt, valid } from 'semver';
3
4
  import { z } from 'zod';
4
5
  import { ConductorError, isMissing } from "./errors.js";
5
6
  import { parseJsonc } from "./jsonc.js";
7
+ import { packageInfo } from "./package-info.js";
6
8
  import { noteName } from "./plugin.js";
7
9
  import { PROTOCOL } from "./protocol.js";
8
10
  import { ruleInputSchema } from "./rule-input.js";
11
+ import { defaultTag } from "./upgrade.js";
9
12
  export const PROFILE_FILE = join('.claude', 'conductor.json');
10
13
  const name = z.string().regex(/^[a-z][a-z0-9-]*$/, 'lowercase letters, digits and dashes, starting with a letter');
11
14
  const text = z.string().trim().min(1);
12
- const port = z.int().min(1).max(65535);
13
15
  // The state each phase note moves an item to, over the tracker kind's defaults (tracker-writes.ts);
14
16
  // null leaves it as it is.
15
17
  const transitions = z
@@ -48,21 +50,30 @@ const profileFields = z.strictObject({
48
50
  repo: z.string().regex(/^[\w.-]+$/, 'a GitHub repo name, without the owner'),
49
51
  }),
50
52
  ]),
53
+ // 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
+ conductor: z
57
+ .string()
58
+ .refine((v) => valid(v) !== null, 'a version, such as 3.0.0-dev.8')
59
+ .optional(),
51
60
  // The kinds of note that wait on a person in this project.
52
61
  gates: z.array(z.enum(['merge', 'npm-otp', 'plan'])).min(1),
53
62
  // Each environment's /health URL, for `conduct wait health <env>`.
54
63
  health: z.record(name, z.url()).optional(),
64
+ // A checkout the operator keeps whose gitignored files matching its .worktreeinclude are copied
65
+ // into each new worktree (design note v2, section 2), for local files `setup` can't build. An
66
+ // absolute path; off when absent.
67
+ localFilesFrom: text.refine((path) => isAbsolute(path), 'an absolute path to a checkout').optional(),
55
68
  name,
56
69
  // The package `conduct wait npm <version>` means.
57
70
  npm: z.strictObject({ package: text }).optional(),
58
- // The dev servers' base ports by name, such as { "web": 3000, "api": 7071 }: the main checkout
59
- // serves on them, and the worktree the port broker gives offset N on each base + N, up to maxSlot.
71
+ // The ports a worktree's dev servers need, by name, such as ["web", "api"]. The port broker gives
72
+ // each worktree its own from the machine's pool, as CONDUCTOR_PORT_<NAME> to `setup` and the worker.
60
73
  ports: z
61
- .object({ maxSlot: z.int().min(0).max(1000).default(50) })
62
- .catchall(port)
63
- .refine((ports) => Object.keys(ports).some((key) => key !== 'maxSlot'), 'declare at least one base port, such as "web": 3000')
64
- // A misspelt maxSlot would otherwise read as a port named "maxslot".
65
- .refine((ports) => Object.keys(ports).every((key) => key === 'maxSlot' || !key.toLowerCase().replace(/[-_]/g, '').startsWith('maxslot')), 'maxSlot is spelt "maxSlot"'),
74
+ .array(z.string().regex(/^[a-z][a-z0-9_]*$/, 'lowercase letters, digits and _, starting with a letter'))
75
+ .refine((names) => new Set(names).size === names.length, 'each port name once')
76
+ .default([]),
66
77
  // The worker protocol the project's work skill speaks (protocol.ts); only this conductor's.
67
78
  protocol: z.literal(PROTOCOL),
68
79
  release: z.strictObject({ handoff: text }),
@@ -75,6 +86,10 @@ const profileFields = z.strictObject({
75
86
  // Project rules (design note, section 9): checked before the machine's and the defaults, for
76
87
  // this project's items only. They change by PR, and the daemon reloads them on save.
77
88
  rules: z.array(ruleInputSchema).default([]),
89
+ // Shell commands run in order in each new worktree, after `localFilesFrom`'s copy (design note v2,
90
+ // section 2): they build its gitignored files (installs, local settings) from what the repo commits.
91
+ // The first that fails fails the launch.
92
+ setup: z.array(text).default([]),
78
93
  // `aliases`: older names of the work skill. Notes headed with one still count, so an item in
79
94
  // flight when the work skill is renamed keeps its phases, approvals and review threads.
80
95
  skills: z.strictObject({ aliases: z.array(text).default([]), verify: text, work: text }),
@@ -215,11 +230,6 @@ export function adoOrganization(profile) {
215
230
  return profile.codeHost.organization;
216
231
  return profile.tracker.kind === 'ado-boards' ? (profile.tracker.organization ?? null) : null;
217
232
  }
218
- // The profile's base ports by name, without maxSlot.
219
- export function basePorts(profile) {
220
- const { maxSlot: _maxSlot, ...ports } = profile.ports;
221
- return ports;
222
- }
223
233
  // The `<skill> · ` headings that mark a project's notes: its work skill's, then each alias's.
224
234
  // Without a profile, work-issue's, which every project used before profiles named their own. The
225
235
  // conductor plugin's skills head their notes with the bare name: `work-item · `, not
@@ -233,11 +243,30 @@ export function notePrefixes(profile) {
233
243
  export function trackerKey(profile) {
234
244
  return profile.tracker.kind === 'linear' ? profile.tracker.team : profile.tracker.key;
235
245
  }
236
- const protocolOnly = z.looseObject({ protocol: z.unknown().optional() });
237
- // The protocol is checked first, so a profile written for another version gets one clear message
238
- // instead of a list of schema differences.
239
- export function parseProfile(text, source) {
240
- const { protocol } = parseJsonc(text, protocolOnly, source);
246
+ const versionsOnly = z.looseObject({ conductor: z.unknown().optional(), protocol: z.unknown().optional() });
247
+ // A profile whose `conductor` minimum is newer than this conductor. `upgrade` brings the machine up
248
+ // to it: from `dev` for a -dev.N minimum, else from `latest`.
249
+ export class ProfileTooNewError extends ConductorError {
250
+ upgrade;
251
+ constructor(source, minimum, running) {
252
+ const upgrade = `conduct upgrade --tag ${defaultTag(minimum)}`;
253
+ super(`${source} is invalid`, [`conductor: needs ${minimum} or newer; this is ${running}: run \`${upgrade}\``]);
254
+ this.name = 'ProfileTooNewError';
255
+ this.upgrade = upgrade;
256
+ }
257
+ }
258
+ // The conductor minimum, then the protocol, are checked first, so a profile written for another
259
+ // version gets one clear message instead of a list of schema differences. `running` is this
260
+ // conductor's version, read only for a profile with a minimum.
261
+ export function parseProfile(text, source, running) {
262
+ const { conductor, protocol } = parseJsonc(text, versionsOnly, source);
263
+ // As semver reads it: `v3.0.0-dev.9` and `3.0.0-dev.9+abc` both mean 3.0.0-dev.9.
264
+ const minimum = typeof conductor === 'string' ? valid(conductor) : null;
265
+ if (minimum !== null) {
266
+ const version = running ?? packageInfo().version;
267
+ if (lt(version, minimum))
268
+ throw new ProfileTooNewError(source, minimum, version);
269
+ }
241
270
  if (protocol !== PROTOCOL) {
242
271
  throw new ConductorError(`${source} is invalid`, [
243
272
  `protocol: ${JSON.stringify(protocol ?? null)} is not supported; this conductor speaks protocol ${PROTOCOL}`,
@@ -245,6 +274,13 @@ export function parseProfile(text, source) {
245
274
  }
246
275
  return parseJsonc(text, profileSchema, source);
247
276
  }
277
+ // Why a profile didn't read, in one line: a ConductorError's problems after its file line (the
278
+ // version it needs, the fields), so a verb that turns it into its own refusal keeps them.
279
+ export function profileProblem(error) {
280
+ if (!(error instanceof ConductorError))
281
+ return error instanceof Error ? error.message : String(error);
282
+ return error.details.length > 0 ? error.details.join('; ') : error.message;
283
+ }
248
284
  export function readProfile(root) {
249
285
  const path = join(root, PROFILE_FILE);
250
286
  let source;
@@ -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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"}
@@ -1,8 +1,10 @@
1
1
  import { mkdirSync } from 'node:fs';
2
2
  import { z } from 'zod';
3
3
  import { broker } from "./broker.js";
4
+ import { claudeCli } from "./claude.js";
4
5
  import { callApi, NotRunningError } from "./client.js";
5
6
  import { projectHosts } from "./code-host.js";
7
+ import { loadConfig } from "./config.js";
6
8
  import { ConductorError } from "./errors.js";
7
9
  import { localCredentials } from "./in-process.js";
8
10
  import { checkFailed, checkLines, checkProject, checkReportSchema, noProject, } from "./project-check.js";
@@ -71,9 +73,10 @@ async function checkHere(paths, name, options, io) {
71
73
  function localDeps(paths, store) {
72
74
  const credentials = localCredentials(paths, store);
73
75
  return {
76
+ claude: claudeCli(),
74
77
  credentials,
75
78
  hosts: (project) => projectHosts(credentials, project),
76
- ports: broker({ store }),
79
+ ports: broker({ pool: loadConfig(paths.config).ports, store }),
77
80
  queue: routedQueue({
78
81
  'ado-boards': boardsQueue({ credentials }),
79
82
  'github-issues': issuesQueue({ credentials }),
@@ -1 +1 @@
1
- {"version":3,"file":"project-check-cli.js","sourceRoot":"","sources":["../src/project-check-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-check-cli.js","sourceRoot":"","sources":["../src/project-check-cli.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
- import { existsSync, readFileSync } from 'node:fs';
1
+ import { readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import { z } from 'zod';
4
+ import { portEnv } from "./broker.js";
5
+ import { runGit } from "./checkout.js";
6
+ import { trustStep } from "./claude.js";
4
7
  import { repoKey, repoOf } from "./code-host.js";
5
8
  import { TRACKER_API } from "./conditions.js";
6
9
  import { ConductorError } from "./errors.js";
@@ -9,6 +12,7 @@ import { pluginSkill, pluginSource, projectSkills, readPluginSkill } from "./plu
9
12
  import { PROFILE_FILE, readProfile } from "./profile.js";
10
13
  import { PROTOCOL } from "./protocol.js";
11
14
  import { ciRefusal } from "./runs.js";
15
+ import { BRANCH_PREFIX, SESSION_SETTINGS, worktreePath } from "./worktrees.js";
12
16
  // `conduct project check <name>` (ATK-490): whether a registered project can be conducted, checked
13
17
  // before the first launch instead of found by a failed one. Each check reads what the launch and the
14
18
  // watchers would use, as the project's accounts; only the worktree check writes, and it removes what
@@ -279,6 +283,10 @@ async function codeHostCheck(deps, profile) {
279
283
  function detailsOf(error) {
280
284
  return error instanceof ConductorError ? error.details : [];
281
285
  }
286
+ // Exit 1 is git's "not ignored"; an error (128) says nothing either way, so it isn't warned about.
287
+ async function gitIgnores(checkout, file) {
288
+ return (await runGit(['check-ignore', '-q', file], checkout)).code !== 1;
289
+ }
282
290
  async function healthCheck(deps, profile) {
283
291
  const urls = Object.entries(profile.health ?? {});
284
292
  if (urls.length === 0)
@@ -307,12 +315,14 @@ function messageOf(error) {
307
315
  return error instanceof Error ? error.message : String(error);
308
316
  }
309
317
  async function portsCheck(deps, profile) {
318
+ if (profile.ports.length === 0)
319
+ return skip('the profile names no ports');
310
320
  try {
311
- const { ports, slot } = await deps.ports.previewPorts(profile);
321
+ const ports = await deps.ports.previewPorts(profile.ports);
312
322
  const named = Object.entries(ports)
313
323
  .map(([name, port]) => `${name} ${port}`)
314
324
  .join(', ');
315
- return ok(`a new worktree gets slot ${slot} (${named}), of 1 to ${profile.ports.maxSlot}`);
325
+ return ok(`a new worktree gets ${named} from the machine's pool`);
316
326
  }
317
327
  catch (error) {
318
328
  if (!(error instanceof ConductorError))
@@ -420,34 +430,71 @@ async function trackerCheck(deps, profile) {
420
430
  }
421
431
  return ok(`${where} lists ${items}, and ${prioritized} of its projects have a priority, as ${account.label}`);
422
432
  }
423
- // The launch's first two stages on a throwaway worktree (manager.ts launchWorker): the project's
424
- // create hook, then the skills check. Whatever it made is removed, whichever way it went.
433
+ // The launch's worktree stages on a throwaway worktree (manager.ts launchWorker): `git worktree add`
434
+ // from origin/<base>, the local files and setup, with ports as the broker would give them, then the
435
+ // skills check and the trust probe a launch's `claude --bg` meets (ATK-571). Whatever it made is
436
+ // removed, whichever way it went.
425
437
  async function worktreeCheck(deps, root, profile, options) {
426
438
  if (!options.worktree)
427
439
  return skip('--no-worktree');
428
440
  const name = `conduct-check-${stamp((deps.now ?? (() => new Date()))())}`;
429
- let path = null;
441
+ const left = worktreePath(root, name);
442
+ // The ports check reports a pool with too few free; setup then runs without them.
443
+ const env = portEnv(await deps.ports.previewPorts(profile.ports).catch(() => ({})));
430
444
  let outcome;
431
445
  try {
432
- path = await deps.worktrees.create(root, name);
433
- const problem = await deps.worktrees.checkSkills(path, projectSkills([profile.skills.work, profile.skills.verify]));
434
- outcome =
435
- problem === null
436
- ? ok(`the worktree hooks created and removed ${name}, and its skills match`)
437
- : fail(`a new worktree's skills: ${problem}`, `atk install in ${root}, then commit .atk-lock.json if it changed`);
446
+ const path = await deps.worktrees.create({
447
+ base: profile.baseBranch,
448
+ env: { ...env, CONDUCTOR_ITEM: name, CONDUCTOR_PROJECT: profile.name, CONDUCTOR_WORKTREE: left },
449
+ ...(profile.localFilesFrom === undefined ? {} : { localFilesFrom: profile.localFilesFrom }),
450
+ name,
451
+ root,
452
+ sessionEnv: env,
453
+ setup: profile.setup,
454
+ });
455
+ const skills = [profile.skills.work, profile.skills.verify];
456
+ const problem = deps.worktrees.missingSkills(path, projectSkills(skills));
457
+ const ignored = await (deps.ignores ?? gitIgnores)(path, SESSION_SETTINGS);
458
+ const made = `created ${name} from origin/${profile.baseBranch}${profile.setup.length > 0 ? ` and ran its ${profile.setup.length} setup ${profile.setup.length === 1 ? 'command' : 'commands'}` : ''}, then removed it`;
459
+ if (problem !== null) {
460
+ outcome = fail(`a new worktree's skills: ${problem}`, "add what installs them to the profile's setup (ATK's runs atk install), or install them in ~/.claude/skills");
461
+ }
462
+ else {
463
+ // Before the remove below: the probe's session is gone before its directory is.
464
+ let trust;
465
+ try {
466
+ trust = await deps.claude.trusts(path, name);
467
+ }
468
+ catch (error) {
469
+ trust = { error };
470
+ }
471
+ outcome =
472
+ 'error' in trust
473
+ ? fail(`claude --bg couldn't start a session in a new worktree: ${messageOf(trust.error)}`, 'a launch fails the same way: run `claude --bg` in a worktree of the root to see why', detailsOf(trust.error))
474
+ : !trust.trusted
475
+ ? fail(`Claude Code doesn't trust ${root}, so no worker can start in its worktrees`, `${trustStep(root)}, then check again`)
476
+ : trust.removeError !== null
477
+ ? warn(`${made}, but the trust probe's idle session ${trust.session} is still there`, `remove it: claude rm ${trust.session}`, [trust.removeError])
478
+ : !ignored && Object.keys(env).length > 0
479
+ ? warn(`${made}, but git doesn't ignore ${SESSION_SETTINGS}, where a worker's ports go`, `add ${SESSION_SETTINGS.split('\\').join('/')} to .gitignore, so a worker doesn't take the file for work of its own`)
480
+ : ok(`${made}; its skills are there, and Claude Code trusts it`);
481
+ }
438
482
  }
439
483
  catch (error) {
440
- outcome = fail(`the worktree hooks couldn't create a worktree: ${messageOf(error)}`, `the project needs the ATK worktree-kit bundle (/worktree-setup); its hook output is above. If the hook made the branch worktree-${name} first, delete it: git -C ${root} branch -D worktree-${name}`, detailsOf(error));
484
+ outcome = fail(`a new worktree couldn't be made: ${messageOf(error)}`, "check the profile's baseBranch, localFilesFrom and setup; the failing step's output is above", detailsOf(error));
441
485
  }
442
- // A create that failed part way can leave its directory behind.
443
- const left = path ?? join(root, '.claude', 'worktrees', name);
444
- if (path !== null || existsSync(left)) {
445
- try {
446
- await deps.worktrees.remove(root, left);
447
- }
448
- catch (error) {
449
- return fail(`${left} is still there: ${messageOf(error)}`, `remove it by hand: git -C ${root} worktree remove --force ${left}, then git -C ${root} branch -D worktree-${name}`, [`before that: ${outcome.status} ${outcome.summary}`, ...detailsOf(error)]);
450
- }
486
+ // A create that failed part way can leave its directory or branch behind; with neither, this
487
+ // removes nothing.
488
+ try {
489
+ await deps.worktrees.remove(root, left, { deleteBranch: true });
490
+ }
491
+ catch (error) {
492
+ return fail(`${left} is still there: ${messageOf(error)}`, `remove it by hand: delete the directory, then git -C ${root} worktree prune and git -C ${root} branch -D ${BRANCH_PREFIX}${name}`, [
493
+ `before that: ${outcome.status} ${outcome.summary}`,
494
+ ...outcome.details,
495
+ ...(outcome.fix === null ? [] : [`its fix: ${outcome.fix}`]),
496
+ ...detailsOf(error),
497
+ ]);
451
498
  }
452
499
  return outcome;
453
500
  }