@detergent-software/conductor 3.0.0-dev.4 → 3.0.0-dev.40

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 +339 -0
  2. package/README.md +270 -123
  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 +15 -10
  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/claude.js +48 -2
  12. package/build/claude.js.map +1 -1
  13. package/build/cli.js +221 -71
  14. package/build/cli.js.map +1 -1
  15. package/build/clones.js +92 -0
  16. package/build/clones.js.map +1 -0
  17. package/build/code-host-cli.js +158 -39
  18. package/build/code-host-cli.js.map +1 -1
  19. package/build/code-host-service.js +35 -2
  20. package/build/code-host-service.js.map +1 -1
  21. package/build/code-host.js +140 -16
  22. package/build/code-host.js.map +1 -1
  23. package/build/conditions.js +33 -16
  24. package/build/conditions.js.map +1 -1
  25. package/build/config.js +58 -28
  26. package/build/config.js.map +1 -1
  27. package/build/console.js +43 -27
  28. package/build/console.js.map +1 -1
  29. package/build/credentials.js +49 -36
  30. package/build/credentials.js.map +1 -1
  31. package/build/daemon.js +57 -66
  32. package/build/daemon.js.map +1 -1
  33. package/build/file-lock.js +35 -3
  34. package/build/file-lock.js.map +1 -1
  35. package/build/follow-ups.js +2 -2
  36. package/build/follow-ups.js.map +1 -1
  37. package/build/help.js +228 -82
  38. package/build/help.js.map +1 -1
  39. package/build/history.js +10 -4
  40. package/build/history.js.map +1 -1
  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 +46 -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 +6 -5
  70. package/build/in-process.js.map +1 -1
  71. package/build/inbox.js +50 -34
  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 +86 -7
  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 +4 -3
  92. package/build/lib/providers/index.js.map +1 -1
  93. package/build/lib/providers/npm/stage.js +28 -5
  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 +1 -1
  102. package/build/logins.js.map +1 -1
  103. package/build/manager.js +131 -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 +323 -0
  112. package/build/npm-reads.js.map +1 -0
  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 +107 -51
  123. package/build/profile.js.map +1 -1
  124. package/build/project-check-cli.js +19 -19
  125. package/build/project-check-cli.js.map +1 -1
  126. package/build/project-check.js +194 -108
  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 +104 -47
  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 +89 -13
  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 -5
  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 -18
  175. package/build/watchers/ado.js.map +1 -1
  176. package/build/watchers/github.js +19 -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/npm.js +6 -4
  187. package/build/watchers/npm.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 +46 -6
  197. package/plugin/hooks/register.tsx +41 -2
  198. package/plugin/skills/conductor-console/SKILL.md +26 -27
  199. package/plugin/skills/work-item/SKILL.md +57 -53
  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
package/build/config.js CHANGED
@@ -1,12 +1,14 @@
1
1
  import { readFileSync } from 'node:fs';
2
2
  import { z } from 'zod';
3
3
  import { isMissing } from "./errors.js";
4
+ import { TERMINALS } from "./host/terminal.js";
4
5
  import { parseJsonc } from "./jsonc.js";
5
- import { renamedHint, renamedTo } from "./protocol.js";
6
6
  import { INBOX_KINDS } from "./store.js";
7
7
  // Where the notifier sends (design note, section 10): Remote Control through the conductor mod in
8
- // the console, and Pushover from the daemon. Teams is ATK-307.
9
- export const CHANNELS = ['remote-control', 'pushover'];
8
+ // the console, Pushover from the daemon, and a webhook (design note v2, section 8) the daemon POSTs
9
+ // each push to as JSON. Teams is ATK-307.
10
+ export const CHANNELS = ['remote-control', 'pushover', 'webhook'];
11
+ export const SCHEDULER_MODES = ['on', 'off'];
10
12
  export const DAYS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];
11
13
  // A local time of day, such as 07:00.
12
14
  const clockTime = z.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/, 'a local time as HH:MM, such as 07:00');
@@ -24,15 +26,7 @@ export const notifyRuleSchema = z.strictObject({
24
26
  .string()
25
27
  .regex(/^([01]\d|2[0-3]):[0-5]\d-([01]\d|2[0-3]):[0-5]\d$/, 'local times as HH:MM-HH:MM, such as 08:00-18:00')
26
28
  .optional(),
27
- kinds: z
28
- .array(z.enum(INBOX_KINDS, {
29
- error: (issue) => {
30
- const word = typeof issue.input === 'string' ? issue.input : undefined;
31
- return renamedTo(word) === undefined ? undefined : `"${word ?? ''}" is not an inbox kind${renamedHint(word)}`;
32
- },
33
- }))
34
- .min(1)
35
- .optional(),
29
+ kinds: z.array(z.enum(INBOX_KINDS)).min(1).optional(),
36
30
  projects: z.array(z.string().min(1)).min(1).optional(),
37
31
  remind: remindSchema.optional(),
38
32
  to: z.array(z.enum(CHANNELS)),
@@ -50,8 +44,8 @@ export const BUILT_IN_PROFILES = {
50
44
  ],
51
45
  };
52
46
  // The credentials one project's provider calls use (credentials.ts), least privilege first: `token`
53
- // (Linear's `credential`) names the generic credential (Credential Manager) whose password is a token
54
- // scoped to this project, and wins over the machine's token and over the CLI login. `tenant` and
47
+ // (Linear's `credential`) names the credential in the machine's secret store (host/secrets.ts) whose
48
+ // password is a token scoped to this project, and wins over the machine's token and over the CLI login. `tenant` and
55
49
  // `user` pick the CLI login (az's tenant, gh's account) when there is no token. Each is optional.
56
50
  // The tenant reaches `az` through a shell on Windows, so it is a tenant id or domain and nothing else.
57
51
  const credentialTarget = z.string().trim().min(1);
@@ -79,14 +73,12 @@ const projectAccountsSchema = z.strictObject({
79
73
  // ~/.conductor/config.json: machine settings. Strict, so a misspelt key fails startup instead of
80
74
  // being ignored. Rules live beside it, in rules.json (rules-service.ts).
81
75
  export const configSchema = z.strictObject({
82
- // Skill bumps reach the main checkout (checkout-sync.ts, ATK-271).
83
- checkout: z
76
+ // The projects' clones the daemon owns (clones.ts, design note v2, section 2).
77
+ clones: z
84
78
  .strictObject({
85
- // How often each project's main checkout is compared with origin/<base> (a git fetch).
86
- intervalMinutes: z.number().min(1).max(1440).default(10),
87
- // update: fast-forward the main checkout and `atk install` when origin's pins change;
88
- // notify: only raise the inbox item that says so; off: no check.
89
- mode: z.enum(['update', 'notify', 'off']).default('update'),
79
+ // How often each clone fetches origin, after which a changed .claude/conductor.json on the base
80
+ // branch is taken. A worktree's create fetches its base branch as well.
81
+ fetchMinutes: z.number().min(1).max(1440).default(10),
90
82
  })
91
83
  .prefault({}),
92
84
  // The inbox (design note, section 7).
@@ -119,11 +111,11 @@ export const configSchema = z.strictObject({
119
111
  profiles: z
120
112
  .record(z.string().regex(/^[a-z][a-z0-9-]*$/, 'a profile name in lower case, such as away'), z.array(notifyRuleSchema))
121
113
  .default({}),
122
- // The app token and user key are secrets, so they live in Credential Manager (the credential's
123
- // password and user name) or in PUSHOVER_TOKEN and PUSHOVER_USER, never here.
114
+ // The app token and user key are secrets, so they live in the machine's secret store (the
115
+ // credential's password and user name) or in PUSHOVER_TOKEN and PUSHOVER_USER, never here.
124
116
  pushover: z
125
117
  .strictObject({
126
- // Absent: atk-conductor-pushover in ~/.conductor, none in a scratch home (pushoverCredential),
118
+ // Absent: conductor-pushover in ~/.conductor, none in a scratch home (pushoverCredential),
127
119
  // so a daemon run for a test can't push to the machine's phone (ATK-506).
128
120
  credential: z.string().min(1).optional(),
129
121
  // Pushover's priority: -2 (no alert) to 1 (high). 2 (emergency) needs receipts, not built.
@@ -134,11 +126,31 @@ export const configSchema = z.strictObject({
134
126
  remind: remindSchema.prefault({}),
135
127
  // How often reminders, the quiet-hours summary and an expiring profile are checked.
136
128
  tickSeconds: z.number().min(1).max(600).default(60),
129
+ // The webhook channel: each push is one POST of JSON to `url` (webhook.ts). `credential` names
130
+ // one in the machine's secret store whose password goes out as a bearer token. Off when absent:
131
+ // a rule that sends to `webhook` then fails, and `conduct notify` says why.
132
+ webhook: z
133
+ .strictObject({
134
+ credential: z.string().min(1).optional(),
135
+ timeoutSeconds: z.number().min(1).max(120).default(15),
136
+ url: z.url({ protocol: /^https?$/ }),
137
+ })
138
+ // The token would cross the network in the clear.
139
+ .refine((w) => w.credential === undefined || w.url.startsWith('https:') || isLoopback(w.url), {
140
+ message: 'a webhook with a credential needs an https URL (or one on this machine)',
141
+ path: ['url'],
142
+ })
143
+ .optional(),
137
144
  })
138
145
  .prefault({})
139
146
  .refine((n) => Object.hasOwn(BUILT_IN_PROFILES, n.profile) || Object.hasOwn(n.profiles, n.profile), {
140
147
  message: 'notify.profile names no profile (built in: away, default, focus)',
141
148
  path: ['profile'],
149
+ })
150
+ // Pushes to it would fail every time, retried with no end.
151
+ .refine((n) => n.webhook !== undefined || !Object.values(n.profiles).some((p) => p.some((r) => r.to.includes('webhook'))), {
152
+ message: 'a profile sends to webhook, and notify.webhook has no url',
153
+ path: ['webhook'],
142
154
  }),
143
155
  // The one person this daemon serves (design note v2, section 6): the name messages call them by.
144
156
  operator: z.strictObject({ name: z.string().trim().min(1).default('the operator') }).prefault({}),
@@ -172,9 +184,13 @@ export const configSchema = z.strictObject({
172
184
  // The daily soft cap of the built-in `daily-cap` rule: past this many tokens today (cache
173
185
  // reads aside), across projects, no new launches until tomorrow.
174
186
  dailyTokens: z.int().min(1).default(20_000_000),
175
- // on: launch and retire; observe: work out the picks and log them, launch and retire nothing
176
- // (for a machine where conduct-atk's loop still launches); off: no queue at all.
177
- mode: z.enum(['observe', 'on', 'off']).default('on'),
187
+ // on: launch and retire; off: no timed queue, and a queue read on demand (`conduct queue`)
188
+ // logs the picks and does none of them. observe was removed in 3.0.0 (ATK-531).
189
+ mode: z
190
+ .enum(SCHEDULER_MODES, {
191
+ error: (issue) => issue.input === 'observe' ? 'observe was removed: use off, which launches nothing' : undefined,
192
+ })
193
+ .default('on'),
178
194
  // Workers running at once across projects; each project's profile sets its own share. It is
179
195
  // also the hard limit: no rule or focus gives a project more.
180
196
  slots: z.int().min(1).max(16).default(4),
@@ -210,7 +226,7 @@ export const configSchema = z.strictObject({
210
226
  conflictMinutes: z.number().positive().max(1440).default(30),
211
227
  github: watcher(30, 30),
212
228
  health: watcher(30, 30),
213
- // Linear allows a key 1500 requests an hour, and conduct-atk reads with the same key.
229
+ // Linear allows a key 1500 requests an hour, and the scheduler's queue reads use the same key.
214
230
  linear: watcher(30, 10),
215
231
  // A lost login's re-probe, and `conduct wait login`: each probe asks its provider once or twice.
216
232
  login: watcher(60, 30),
@@ -219,6 +235,16 @@ export const configSchema = z.strictObject({
219
235
  statsMinutes: z.number().min(1).max(1440).default(10),
220
236
  })
221
237
  .prefault({}),
238
+ // Workers run headless, as background sessions. `tab` also opens a tab on each launch, attached
239
+ // to the session; `conduct attach` opens one either way. `terminal` is where tabs and the console
240
+ // open (host/terminal.ts): auto is Windows Terminal, iTerm or Terminal on macOS, and tmux elsewhere.
241
+ // Was the profile's `workers.tab` until ATK-529: a machine's choice, not the repo's.
242
+ workers: z
243
+ .strictObject({
244
+ tab: z.boolean().default(false),
245
+ terminal: z.enum(TERMINALS).default('auto'),
246
+ })
247
+ .prefault({}),
222
248
  });
223
249
  // A missing file means every default; any other read error is a real problem.
224
250
  export function loadConfig(file) {
@@ -236,6 +262,10 @@ export function loadConfig(file) {
236
262
  export function parseConfig(text, source) {
237
263
  return parseJsonc(text, configSchema, source);
238
264
  }
265
+ function isLoopback(url) {
266
+ const host = new URL(url).hostname;
267
+ return host === 'localhost' || host === '[::1]' || /^127\.\d+\.\d+\.\d+$/.test(host);
268
+ }
239
269
  function watcher(intervalSeconds, perMinute) {
240
270
  return z
241
271
  .strictObject({
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/build/console.js CHANGED
@@ -7,13 +7,13 @@ import { inboxItemSchema } from "./store.js";
7
7
  // appends `console.escalated`, and the conductor mod wakes the console's model with it. The console
8
8
  // reports back with `console.handled`, whose cause is the escalation, so `conduct why` follows a
9
9
  // finding to the rule behind it. An escalation raised while no console was open stays open until a
10
- // console handles it, and the inbox tells Jason to start one (unattendedEscalations).
10
+ // console handles it, and the inbox tells the operator to start one (unattendedEscalations).
11
11
  // Older ones are left out: an ask that waited two weeks is stale.
12
12
  export const ESCALATION_DAYS = 14;
13
13
  // The console skill, as the plugin namespaces it (plugin.ts).
14
14
  export const CONSOLE_SKILL = 'conductor:conductor-console';
15
15
  export const CONSOLE_WINDOW = 'conductor';
16
- // How long escalations may wait with no console following the stream before Jason is told. It
16
+ // How long escalations may wait with no console following the stream before the operator is told. It
17
17
  // outlasts a console's own reconnects: the mod restarts `conduct events` within seconds, and the
18
18
  // stream comes back as soon as a restarted daemon listens.
19
19
  export const UNATTENDED_GRACE_MS = 30_000;
@@ -42,7 +42,7 @@ export class NoEscalationError extends ConductorError {
42
42
  }
43
43
  // `conduct console`'s claim on the daemon's gate. With no daemon there is no console stream to
44
44
  // double, and an older one (404) can't tell: both go on. A forced start goes on past a daemon that
45
- // doesn't answer as well, since the console is where Jason looks into that.
45
+ // doesn't answer as well, since the console is where the operator looks into that.
46
46
  export async function claimConsole(paths, force) {
47
47
  let answer;
48
48
  try {
@@ -67,6 +67,32 @@ export async function claimConsole(paths, force) {
67
67
  export function consoleArgs(pluginDir) {
68
68
  return ['--plugin-dir', pluginDir, '-n', 'conductor', '--permission-mode', 'auto', '--', `/${CONSOLE_SKILL}`];
69
69
  }
70
+ // What a Claude Code session gives its tool shells. A `claude` that inherits them runs as that
71
+ // session on the peer network whatever its -n says, so a `! conduct console` typed in a worker's tab
72
+ // made a console ListAgents named after the worker (ATK-559). User settings such as
73
+ // CLAUDE_CONFIG_DIR aren't in it.
74
+ const CLAUDE_SESSION_ENV = [
75
+ 'AI_AGENT',
76
+ 'CLAUDE_CODE_CHILD_SESSION',
77
+ 'CLAUDE_CODE_ENTRYPOINT',
78
+ 'CLAUDE_CODE_EXECPATH',
79
+ 'CLAUDE_CODE_MESSAGING_SOCKET',
80
+ 'CLAUDE_CODE_MESSAGING_TOKEN',
81
+ 'CLAUDE_CODE_SESSION_ATTENDED',
82
+ 'CLAUDE_CODE_SESSION_ID',
83
+ 'CLAUDE_EFFORT',
84
+ 'CLAUDE_JOB_DIR',
85
+ 'CLAUDE_PID',
86
+ 'CLAUDECODE',
87
+ ];
88
+ // The console's environment: the caller's, without another session's identity, and with
89
+ // CONDUCTOR_CONSOLE=1, which the conductor mod needs.
90
+ export function consoleEnv(env) {
91
+ const own = { ...env };
92
+ for (const key of CLAUDE_SESSION_ENV)
93
+ delete own[key];
94
+ return { ...own, CONDUCTOR_CONSOLE: '1' };
95
+ }
70
96
  export function consoleEscalations({ inbox, now = () => new Date(), store, }) {
71
97
  const since = () => new Date(now().getTime() - ESCALATION_DAYS * 24 * 60 * 60_000).toISOString();
72
98
  const open = () => store.openEscalations(since()).map(toEscalation);
@@ -127,30 +153,20 @@ export function consoleGate({ graceMs = CONSOLE_START_GRACE_MS, now = () => Date
127
153
  },
128
154
  };
129
155
  }
130
- // wt.exe's arguments for the console's tab: in the console's folder, running this CLI's
131
- // `console --here`, which starts `claude` with CONDUCTOR_CONSOLE=1 (wt.exe splits a command on `;`,
132
- // so the tab can't set the variable itself). --force: the command that opens the tab has claimed
133
- // the start already.
134
- export function consoleTabArgs(dir, nodePath, cliPath) {
135
- const split = [dir, nodePath, cliPath].find((part) => part.includes(';'));
136
- if (split !== undefined)
137
- throw new ConductorError(`a console tab can't take a path with ";": ${split}`, [
138
- 'run `conduct console --here` in a terminal instead',
139
- ]);
140
- return [
141
- '-w',
142
- CONSOLE_WINDOW,
143
- 'new-tab',
144
- '--title',
145
- 'conductor console',
146
- '-d',
147
- dir,
148
- nodePath,
149
- cliPath,
150
- 'console',
151
- '--here',
152
- '--force',
153
- ];
156
+ // The console's tab: in the console's folder, running this CLI's `console --here`, which starts
157
+ // `claude` with CONDUCTOR_CONSOLE=1. --force: the command that opens the tab has claimed the start
158
+ // already. A terminal that starts tabs in an environment of its own (macOS, tmux) gets
159
+ // CONDUCTOR_HOME, so the console serves the same daemon as the command that opened it.
160
+ export function consoleTab(dir, nodePath, cliPath, env) {
161
+ const home = env.CONDUCTOR_HOME;
162
+ return {
163
+ command: [nodePath, cliPath, 'console', '--here', '--force'],
164
+ cwd: dir,
165
+ env: home ? { CONDUCTOR_HOME: home } : {},
166
+ hold: false,
167
+ title: 'conductor console',
168
+ window: CONSOLE_WINDOW,
169
+ };
154
170
  }
155
171
  // `conduct escalations`: each open one with its age, item and rule, then the ask.
156
172
  export function escalationLines(escalations, now) {
@@ -1 +1 @@
1
- {"version":3,"file":"console.js","sourceRoot":"","sources":["../src/console.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../src/console.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
- import { credentialSaved, readCredential as readWindowsCredential, } from "./credential.js";
2
1
  import { ConductorError } from "./errors.js";
3
- import { adoBasic, adoOrgUrl, NotFound } from "./lib/providers/index.js";
2
+ import { secretStore } from "./host/secrets.js";
3
+ import { adoBasic, adoOrgUrl, NotFound, ProviderError } from "./lib/providers/index.js";
4
4
  import { outputOf, run as runCommand } from "./run.js";
5
5
  // Each project's credentials (design note v2, section 8): every provider takes the first credential
6
6
  // it finds, least privilege first.
7
- // 1. project-token: a token scoped to the project, in the generic credential that machine config
8
- // names (`projects.<name>.ado.token`, `github.token`, `linear.credential`);
9
- // 2. machine-token: the machine's own token, from a conductor-only env var or generic credential
7
+ // 1. project-token: a token scoped to the project, in the machine's secret store (host/secrets.ts)
8
+ // under the credential that machine config names (`projects.<name>.ado.token`, `github.token`,
9
+ // `linear.credential`);
10
+ // 2. machine-token: the machine's own token, from a conductor-only env var or the store
10
11
  // (MACHINE_TOKENS), so another tool's env never changes what the conductor signs in as;
11
12
  // 3. cli-login: `az` (the project's tenant, else the default account) or `gh` (the project's user,
12
13
  // else the active account), last because it usually carries the widest permissions. Linear has
@@ -21,8 +22,8 @@ const ADO_RESOURCE = '499b84ac-1321-427f-aa17-267ca6975798';
21
22
  // An az token lasts about an hour, a gh token until it is revoked; both are asked again well before,
22
23
  // and a token's credential is read again as often, so a replaced or removed one is seen.
23
24
  const TOKEN_MAX_AGE_MS = 20 * 60_000;
24
- export const LINEAR_CREDENTIAL = 'atk-conductor-linear';
25
- // The machine's own token for each provider: the env vars in order, then the generic credential.
25
+ export const LINEAR_CREDENTIAL = 'conductor-linear';
26
+ // The machine's own token for each provider: the env vars in order, then the store's credential.
26
27
  export const MACHINE_TOKENS = {
27
28
  ado: { credential: 'conductor-ado', env: ['CONDUCTOR_ADO_TOKEN'] },
28
29
  github: { credential: 'conductor-github', env: ['CONDUCTOR_GITHUB_TOKEN'] },
@@ -35,7 +36,7 @@ const LINEAR_API = 'https://api.linear.app/graphql';
35
36
  const TIMEOUT_MS = 20_000;
36
37
  // A provider call that needs a login it doesn't have. It names the provider, the account and the
37
38
  // command that signs in again. `conduct` reserves exit code 5 (LOGIN_NEEDED_EXIT) for worker verbs
38
- // that hit it; protocol 1's verbs exit 1 for it, as for any ConductorError.
39
+ // that hit it; every other verb exits 1 for it, as for any ConductorError.
39
40
  export class LoginNeeded extends ConductorError {
40
41
  account;
41
42
  // The message and the command in one line, for a wait's problem (`wait.check-failed`, a local
@@ -49,15 +50,15 @@ export class LoginNeeded extends ConductorError {
49
50
  this.account = account;
50
51
  }
51
52
  }
52
- // "github login lost for atk (gh account JasonPaff)".
53
+ // "github login lost for web (gh account contoso-bot)".
53
54
  export function loginText(account, project) {
54
55
  return `${account.provider} login lost${project === null ? '' : ` for ${project}`} (${account.label})`;
55
56
  }
56
- // The generic credential the machine's own token is saved under. For Linear,
57
- // ATK_CONDUCT_LINEAR_CREDENTIAL names another, as in conduct-atk.
57
+ // The credential the machine's own token is saved under. For Linear, CONDUCTOR_LINEAR_CREDENTIAL
58
+ // names another.
58
59
  export function machineTarget(provider, env) {
59
60
  if (provider === 'linear')
60
- return env.ATK_CONDUCT_LINEAR_CREDENTIAL?.trim() || LINEAR_CREDENTIAL;
61
+ return env.CONDUCTOR_LINEAR_CREDENTIAL?.trim() || LINEAR_CREDENTIAL;
61
62
  return MACHINE_TOKENS[provider].credential;
62
63
  }
63
64
  export function providerCredentials(deps) {
@@ -65,9 +66,7 @@ export function providerCredentials(deps) {
65
66
  const fetcher = deps.fetch ?? globalThis.fetch;
66
67
  const now = deps.now ?? Date.now;
67
68
  const exec = deps.run ?? runCommand;
68
- const read = deps.readCredential ?? readWindowsCredential;
69
- // A seam that reads credentials but checks none is asked for every target.
70
- const isSaved = deps.credentialSaved ?? (deps.readCredential ? async () => 'unknown' : credentialSaved);
69
+ const secrets = deps.secrets ?? secretStore();
71
70
  const lostNow = new Map();
72
71
  // Each identity's authorization (ADO's header value, gh's token, Linear's key) and the source it
73
72
  // came from, shared by every project with that identity. The calls that read them name their own
@@ -103,7 +102,7 @@ export function providerCredentials(deps) {
103
102
  const entry = project === null ? undefined : deps.projects[project];
104
103
  const target = provider === 'linear' ? entry?.linear?.credential : entry?.[provider]?.token;
105
104
  if (target !== undefined)
106
- return tokenAccount(provider, target, target, 'project-token');
105
+ return tokenAccount(secrets, provider, target, target, 'project-token');
107
106
  switch (provider) {
108
107
  case 'ado': {
109
108
  const tenant = entry?.ado?.tenant ?? null;
@@ -126,7 +125,7 @@ export function providerCredentials(deps) {
126
125
  case 'linear': {
127
126
  const shown = machineTarget('linear', env);
128
127
  return {
129
- command: `cmdkey /generic:${shown} /user:linear /pass`,
128
+ command: secrets.saveCommand(shown, 'linear'),
130
129
  id: MACHINE,
131
130
  label: `${MACHINE_TOKENS.linear.env.join(', ')} or credential ${shown}`,
132
131
  provider,
@@ -146,7 +145,7 @@ export function providerCredentials(deps) {
146
145
  const base = configured(provider, project);
147
146
  const as = (found) => ({ ...found, id: base.id });
148
147
  if (base.source === 'project-token') {
149
- const got = await read(base.id, env);
148
+ const got = await secrets.read(base.id, env);
150
149
  if (!got.found)
151
150
  throw failed(base, project, got.reason);
152
151
  return { account: base, token: got.credential.secret };
@@ -165,12 +164,11 @@ export function providerCredentials(deps) {
165
164
  }
166
165
  }
167
166
  // The machine's credential is optional: one that isn't saved, or can't be read, is passed over
168
- // (the cheap cmdkey check first, so the usual case starts no PowerShell). Linear has nothing
169
- // after it.
167
+ // (the cheap check first: on Windows it starts no PowerShell). Linear has nothing after it.
170
168
  const target = machineTarget(provider, env);
171
- const stored = as(tokenAccount(provider, target, MACHINE, 'machine-token'));
172
- const saved = await isSaved(target, env);
173
- const got = saved === 'missing' ? null : await read(target, env);
169
+ const stored = as(tokenAccount(secrets, provider, target, MACHINE, 'machine-token'));
170
+ const saved = await secrets.saved(target, env);
171
+ const got = saved === 'missing' ? null : await secrets.read(target, env);
174
172
  if (got?.found)
175
173
  return { account: stored, token: got.credential.secret };
176
174
  if (provider === 'linear') {
@@ -284,12 +282,23 @@ export function providerCredentials(deps) {
284
282
  };
285
283
  const gh = (project) => (path) => ghApi(project, path);
286
284
  const ghWrite = (project) => (method, path, body) => ghApi(project, path, { body, method });
287
- // Another gh command as the project's credential, such as `run view --log-failed`; its output.
285
+ // Another gh command as the project's credential, such as `run view --log-failed`; its output. A
286
+ // 404 is NotFound. Any other failure is a ProviderError, transient when asking again may help (a
287
+ // timeout or kill, a 5xx, a rate limit, the network), so a caller can tell a log GitHub won't give
288
+ // yet ("still in progress") from one worth asking for again. A gh that didn't start is lasting.
288
289
  const ghRun = (project) => async (args) => {
289
290
  const { result, said } = await ghExec(project, args, { timeoutMs: 120_000 });
290
- if (result.code !== 0)
291
- throw new Error(`gh ${args.join(' ')} failed: ${said}`);
292
- return result.stdout;
291
+ if (result.code === 0)
292
+ return result.stdout;
293
+ const asked = `gh ${args.join(' ')}`;
294
+ if (/HTTP 404/.test(said))
295
+ throw new NotFound(`${asked} failed: ${said}`);
296
+ const http = /HTTP (\d{3})/.exec(said)?.[1];
297
+ const status = http === undefined ? null : Number(http);
298
+ const transient = (result.code === null && !/ENOENT/.test(result.error ?? '')) ||
299
+ (status !== null && (status >= 500 || status === 429)) ||
300
+ /rate limit|abuse detection|error connecting|connection (?:reset|refused)|no such host|timeout|deadline exceeded|unexpected EOF/i.test(said);
301
+ throw new ProviderError(`${asked} failed: ${said}`, { status, transient });
293
302
  };
294
303
  // The project's Linear key, kept per identity. The key is only returned: never logged, stored or
295
304
  // put on a command line.
@@ -318,10 +327,10 @@ export function providerCredentials(deps) {
318
327
  },
319
328
  worked: () => worked(account('linear', project), project),
320
329
  });
321
- const probe = async (provider, project) => {
330
+ const probe = async (provider, project, { organization } = {}) => {
322
331
  try {
323
332
  if (provider === 'ado')
324
- await probeAdo(project);
333
+ await probeAdo(project, organization);
325
334
  else if (provider === 'github')
326
335
  await ghApi(project, 'user', { probing: true });
327
336
  else
@@ -337,14 +346,14 @@ export function providerCredentials(deps) {
337
346
  };
338
347
  // A fresh ADO credential. az vouches for its own token; a token is asked who it is on the project's
339
348
  // organization, which is the only way to learn ADO takes it (it answers 401, or 203 with its
340
- // sign-in page, when it doesn't).
341
- const probeAdo = async (project) => {
349
+ // sign-in page, when it doesn't). A check of a profile not stored yet names its organization.
350
+ const probeAdo = async (project, named) => {
342
351
  adoTokens.delete(account('ado', project).id);
343
352
  const value = await adoToken(project, true, true);
344
353
  const which = account('ado', project);
345
354
  if (which.source === 'cli-login')
346
355
  return;
347
- const organization = deps.adoOrganization?.(project) ?? null;
356
+ const organization = named ?? deps.adoOrganization?.(project) ?? null;
348
357
  if (organization === null)
349
358
  throw new Error('no Azure DevOps organization to ask whether it takes the token');
350
359
  const response = await fetcher(adoOrgUrl({ organization }, 'connectionData', '7.1-preview'), {
@@ -383,18 +392,22 @@ export function providerCredentials(deps) {
383
392
  linear: (project) => linear(project),
384
393
  lost: () => [...lostNow.values()],
385
394
  probe,
395
+ saveCommand: (provider, target) => secrets.saveCommand(target, tokenUser(provider)),
386
396
  };
387
397
  }
388
- // The account of a token in the generic credential `target`.
389
- function tokenAccount(provider, target, id, source) {
390
- const user = provider === 'linear' ? 'linear' : 'pat';
398
+ // The account of a token in the store's credential `target`.
399
+ function tokenAccount(secrets, provider, target, id, source) {
391
400
  const whose = source === 'project-token' ? 'project token' : 'machine token';
392
401
  return {
393
- command: `cmdkey /generic:${target} /user:${user} /pass`,
402
+ command: secrets.saveCommand(target, tokenUser(provider)),
394
403
  id,
395
404
  label: `${whose} in credential ${target}`,
396
405
  provider,
397
406
  source,
398
407
  };
399
408
  }
409
+ // The user name a token's credential is saved with.
410
+ function tokenUser(provider) {
411
+ return provider === 'linear' ? 'linear' : 'pat';
412
+ }
400
413
  //# sourceMappingURL=credentials.js.map