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

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 (214) hide show
  1. package/CHANGELOG.md +352 -0
  2. package/README.md +274 -124
  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 +225 -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 +172 -40
  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 +86 -54
  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 +155 -40
  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 +237 -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 +57 -39
  72. package/build/inbox.js.map +1 -1
  73. package/build/init.js +509 -0
  74. package/build/init.js.map +1 -0
  75. package/build/landing.js +107 -10
  76. package/build/landing.js.map +1 -1
  77. package/build/lib/providers/ado/code-host.js +5 -1
  78. package/build/lib/providers/ado/code-host.js.map +1 -1
  79. package/build/lib/providers/ado/pipelines.js +138 -26
  80. package/build/lib/providers/ado/pipelines.js.map +1 -1
  81. package/build/lib/providers/ado/trigger.js +5 -0
  82. package/build/lib/providers/ado/trigger.js.map +1 -1
  83. package/build/lib/providers/ado/writes.js +17 -2
  84. package/build/lib/providers/ado/writes.js.map +1 -1
  85. package/build/lib/providers/github/actions.js +90 -3
  86. package/build/lib/providers/github/actions.js.map +1 -1
  87. package/build/lib/providers/github/code-host.js +2 -0
  88. package/build/lib/providers/github/code-host.js.map +1 -1
  89. package/build/lib/providers/github/writes.js +25 -2
  90. package/build/lib/providers/github/writes.js.map +1 -1
  91. package/build/lib/providers/index.js +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 +13 -6
  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 +44 -20
  175. package/build/watchers/ado.js.map +1 -1
  176. package/build/watchers/github.js +21 -6
  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/watchers/source.js +5 -1
  189. package/build/watchers/source.js.map +1 -1
  190. package/build/webhook.js +80 -0
  191. package/build/webhook.js.map +1 -0
  192. package/build/why.js +1 -1
  193. package/build/why.js.map +1 -1
  194. package/build/worktrees.js +56 -93
  195. package/build/worktrees.js.map +1 -1
  196. package/package.json +61 -61
  197. package/plugin/.claude-plugin/plugin.json +1 -1
  198. package/plugin/hooks/model.ts +46 -6
  199. package/plugin/hooks/register.tsx +41 -2
  200. package/plugin/skills/conductor-console/SKILL.md +26 -27
  201. package/plugin/skills/work-item/SKILL.md +58 -54
  202. package/plugin/skills/work-item/trackers/ado-boards.md +2 -2
  203. package/plugin/skills/work-item/trackers/github-issues.md +1 -1
  204. package/plugin/skills/work-item/trackers/linear.md +2 -2
  205. package/plugin/types/index.d.ts +1 -1
  206. package/protocol/PROTOCOL.md +3 -9
  207. package/build/checkout-sync.js +0 -249
  208. package/build/checkout-sync.js.map +0 -1
  209. package/build/credential.js +0 -66
  210. package/build/credential.js.map +0 -1
  211. package/build/startup.js +0 -92
  212. package/build/startup.js.map +0 -1
  213. package/build/tab.js +0 -32
  214. package/build/tab.js.map +0 -1
package/build/landing.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {} from "./checkout.js";
2
2
  import { prTarget, repoKey, repoOf } from "./code-host.js";
3
3
  import { ConductorError } from "./errors.js";
4
- import { prVerdict, } from "./lib/providers/index.js";
4
+ import { needsAnswer, prVerdict, requeuedBuilds, requeueHeading, } from "./lib/providers/index.js";
5
5
  import { landingMode } from "./ownership.js";
6
6
  import { notePrefixes } from "./profile.js";
7
7
  import { outputOf } from "./run.js";
@@ -38,7 +38,7 @@ export async function landPr(ctx, request) {
38
38
  const repo = repoOf(ctx.profile, request.repo);
39
39
  const host = ctx.hosts(repo);
40
40
  const prefixes = notePrefixes(ctx.profile);
41
- const before = await host.read(request.pr, { notePrefixes: prefixes });
41
+ let before = await host.read(request.pr, { notePrefixes: prefixes });
42
42
  // The PR must be this worker's, as for pr create: its title and the branch the checkout is on now
43
43
  // carry the item's key. And it must be that branch's PR, into its base.
44
44
  const { base, dir, head } = await prTarget(ctx, {
@@ -59,24 +59,42 @@ export async function landPr(ctx, request) {
59
59
  return reportOf(host, repo, request.pr, before.url, mode, prVerdict(before), { armed: false, did: [], noted });
60
60
  }
61
61
  const mode = await modeFor(ctx, dir, base, before.head ?? head, request.mode);
62
- const report = (verdict, extra) => reportOf(host, repo, request.pr, before.url, mode, verdict, { armed: false, did: [], noted, ...extra });
62
+ let requeued;
63
+ const report = (verdict, extra) => reportOf(host, repo, request.pr, before.url, mode, verdict, {
64
+ armed: false,
65
+ noted,
66
+ ...extra,
67
+ did: [...(requeued ? [`queued the failed build ${requeued.run} again`] : []), ...(extra.did ?? [])],
68
+ ...(requeued ? { requeued } : {}),
69
+ });
63
70
  // The Landing note goes last, so it exists only once the landing was armed: a note whose landing
64
71
  // armed something (everything but a GitHub PR in review mode; ADO sets auto-complete in both)
65
72
  // with that gone now means someone cancelled it, unless the host is completing the PR. That is a
66
- // brake, held until told to arm it again.
73
+ // brake, held until told to arm it again, and nothing is queued again for it.
67
74
  const arms = (m) => !(m === 'review' && repo.host === 'github');
68
75
  const notedArmed = notedMode === 'unknown' || (notedMode !== null && arms(notedMode));
69
76
  // A PR the host is merging has had its auto-merge cleared already: not a cancel, and nothing to arm.
70
77
  if (notedArmed && !before.autoMerge.armed && !before.completing && !request.rearm) {
71
78
  return report({ outcome: 'auto-merge-cancelled' }, {});
72
79
  }
80
+ const landable = async () => {
81
+ const check = await host.landingCheck(base, mode);
82
+ if (!check.ok)
83
+ throw new ConductorError(`refused: ${check.reason}`);
84
+ };
85
+ // A requeue spends the head's one try, so the landing is checked first: what could refuse after it
86
+ // is the host's own write failing.
87
+ if (request.requeue !== undefined) {
88
+ await landable();
89
+ requeued = await requeueBuild(host, before, { reason: request.reason, run: request.requeue }, prefixes[0] ?? '');
90
+ before = await host.read(request.pr, { notePrefixes: prefixes });
91
+ }
73
92
  // A brake already on it (a comment, a failed build, conflicts) is reported first, unarmed.
74
93
  const first = prVerdict(before);
75
94
  if (first.outcome !== 'waiting' || before.completing)
76
95
  return report(first, {});
77
- const check = await host.landingCheck(base, mode);
78
- if (!check.ok)
79
- throw new ConductorError(`refused: ${check.reason}`);
96
+ if (request.requeue === undefined)
97
+ await landable();
80
98
  const did = await host.arm(request.pr, mode);
81
99
  // A note for each mode it lands in: a new one when the mode changed, so the PR never tells a
82
100
  // reader a person approves after the conductor did.
@@ -87,6 +105,26 @@ export async function landPr(ctx, request) {
87
105
  const after = await host.read(request.pr, { notePrefixes: prefixes });
88
106
  return report(prVerdict(after, { autoMergeExpected: arms(mode) }), { armed: true, did, noted: true });
89
107
  }
108
+ // `conduct pr status <pr> [--repo …]`: any PR's verdict, read as `land` reads the item's own, with
109
+ // no checkout, no ownership check and nothing armed: a PR the item didn't open, such as one a skill
110
+ // publish opened in the registry, and its merge commit once it merged (ATK-534). No auto-merge is
111
+ // expected, as `land` set none up.
112
+ export async function prStatusOf(hosts, profile, request) {
113
+ const repo = repoOf(profile, request.repo);
114
+ const host = hosts(repo);
115
+ const snapshot = await host.read(request.pr, { notePrefixes: notePrefixes(profile) });
116
+ const verdict = prVerdict(snapshot);
117
+ const report = { pr: request.pr, repo: repoKey(repo), url: snapshot.url, verdict };
118
+ if (verdict.outcome !== 'merged' || !verdict.mergeCommit)
119
+ return report;
120
+ return { ...report, noFastForward: await mergedWithCommit(host, verdict.mergeCommit) };
121
+ }
122
+ // Whether a merge commit has two parents: the PR landed with a merge commit, not squashed or
123
+ // rebased. Null when the commit can't be read: the merge is known either way.
124
+ async function mergedWithCommit(host, mergeCommit) {
125
+ const parents = await host.commit(mergeCommit).then((c) => c.parents, () => null);
126
+ return parents === null ? null : parents.length === 2;
127
+ }
90
128
  // The mode asked for, held to the landing rules: auto only where the PR's files and the plan's tier
91
129
  // allow it. Without a mode, the rules pick it. An unknown tier never allows auto when a tier forces
92
130
  // review.
@@ -120,9 +158,7 @@ async function modeFor(ctx, dir, base, head, asked) {
120
158
  async function reportOf(host, repo, pr, url, mode, verdict, extra) {
121
159
  const landed = { ...extra, mode, pr, repo: repoKey(repo), url, verdict };
122
160
  if (verdict.outcome === 'merged' && verdict.mergeCommit) {
123
- // The merge is known either way; its parents only say how it merged.
124
- const parents = await host.commit(verdict.mergeCommit).then((c) => c.parents, () => null);
125
- return { ...landed, noFastForward: parents === null ? null : parents.length === 2 };
161
+ return { ...landed, noFastForward: await mergedWithCommit(host, verdict.mergeCommit) };
126
162
  }
127
163
  if (verdict.outcome === 'build-failed') {
128
164
  const logs = await Promise.all(verdict.builds.flatMap((build) => build.run === null
@@ -132,4 +168,65 @@ async function reportOf(host, repo, pr, url, mode, verdict, extra) {
132
168
  }
133
169
  return landed;
134
170
  }
171
+ // `conduct land --requeue <run>`: one of the PR's failed builds queued again, once per build and head
172
+ // commit, so two builds that flaked on one commit can each be queued again once. The Requeue note
173
+ // goes first and records the build and head, so a second try is refused even when queueing it
174
+ // failed; prVerdict reads the note to wait on the build instead of calling the old run's failure a
175
+ // brake.
176
+ async function requeueBuild(host, pr, { reason, run }, prefix) {
177
+ const { number } = pr;
178
+ const head = pr.sourceCommit?.toLowerCase();
179
+ if (!head)
180
+ throw new ConductorError(`refused: PR ${number}'s head commit isn't known yet`);
181
+ const name = pr.checks.find((c) => c.run === run)?.name ?? 'a build';
182
+ const before = requeuedBuilds(pr.threads).find((r) => r.head === head && (r.run === run || r.build === name));
183
+ if (before) {
184
+ throw new ConductorError(`refused: ${name} was queued again once already on PR ${number}'s head ${head.slice(0, 8)}`, [`for run ${before.run}: a second failure on the same commit is fixed and pushed, not queued again`]);
185
+ }
186
+ const verdict = prVerdict(pr);
187
+ if (verdict.outcome !== 'build-failed') {
188
+ throw new ConductorError(`refused: --requeue queues a failed build, and PR ${number} is ${verdict.outcome}`);
189
+ }
190
+ const build = verdict.builds.find((b) => b.run === run);
191
+ if (!build) {
192
+ const failed = verdict.builds.map((b) => `${b.run ?? '?'} (${b.name ?? 'a build'})`).join(', ');
193
+ throw new ConductorError(`refused: run ${run} isn't one of PR ${number}'s failed builds: ${failed}`);
194
+ }
195
+ // A failed build outranks a person's comment in the verdict, and on GitHub any note answers the
196
+ // comments before it: the Requeue note would close a question nobody read.
197
+ if (pr.threads.some(needsAnswer)) {
198
+ throw new ConductorError(`refused: PR ${number} has a comment waiting for an answer`, [
199
+ `answer it first (conduct pr threads ${number}), then queue the build again`,
200
+ ]);
201
+ }
202
+ // A GitHub check is one job of an Actions run, and GitHub re-runs a run only once all of its jobs
203
+ // have ended: refused before the note, which would spend the requeue.
204
+ const running = pr.checks.find((c) => c.run === run && c.state === 'pending');
205
+ if (running) {
206
+ throw new ConductorError(`refused: run ${run} still runs (${running.name ?? 'a check'} is ${running.status})`, [
207
+ `queue it again once it ends: conduct wait pr ${number}, then conduct land ${number} --requeue ${run} again`,
208
+ ]);
209
+ }
210
+ // Azure Repos queues a build by its policy evaluation; GitHub re-runs the check's Actions run.
211
+ const evaluationId = pr.checks.find((c) => c.run === run && c.state === 'failed')?.evaluationId;
212
+ if (host.repo.host === 'ado' && !evaluationId)
213
+ throw new ConductorError(`refused: run ${run} has no policy evaluation to queue again`);
214
+ const queued = { build: build.name, head, run };
215
+ await host.note(number, [
216
+ requeueHeading(prefix, { name: build.name, run }, head),
217
+ '',
218
+ `Why: ${reason}`,
219
+ 'Once per build and head commit: a second failure of this build on this commit is fixed, not queued again.',
220
+ ].join('\n'));
221
+ try {
222
+ await host.requeueBuild(number, { ...(evaluationId ? { evaluationId } : {}), run });
223
+ }
224
+ catch (error) {
225
+ throw new ConductorError(`the Requeue note is posted, but queueing run ${run} again failed`, [
226
+ error instanceof Error ? error.message : String(error),
227
+ `the note spent this build's one requeue on head ${head.slice(0, 8)}, and the verdict waits on it for up to 15 minutes: queue it on the PR by hand, or fix it and push`,
228
+ ]);
229
+ }
230
+ return queued;
231
+ }
135
232
  //# sourceMappingURL=landing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"landing.js","sourceRoot":"","sources":["../src/landing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"landing.js","sourceRoot":"","sources":["../src/landing.ts"],"names":[],"mappings":"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"}
@@ -219,6 +219,9 @@ export function adoThreads(threads, notePrefixes) {
219
219
  const last = comments.at(-1);
220
220
  if (!last)
221
221
  return [];
222
+ const first = comments[0];
223
+ const opened = noteHeading(first?.content ?? '', notePrefixes);
224
+ const heading = (first?.content ?? '').split(/\r?\n/).find((l) => l.trim() !== '') ?? '';
222
225
  return [
223
226
  {
224
227
  asks: true,
@@ -231,8 +234,9 @@ export function adoThreads(threads, notePrefixes) {
231
234
  kind: 'thread',
232
235
  lastIsNote: isNote(last.content, notePrefixes),
233
236
  line: t.threadContext?.rightFileStart?.line ?? null,
234
- notePhase: noteHeading(comments[0]?.content ?? '', notePrefixes)?.phase ?? null,
237
+ notePhase: opened?.phase ?? null,
235
238
  open: !DONE_THREAD.has(t.status ?? ''),
239
+ ...(opened ? { opening: { at: first?.publishedDate ?? t.publishedDate ?? null, heading } } : {}),
236
240
  url: null,
237
241
  },
238
242
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"code-host.js","sourceRoot":"","sources":["../../../../src/lib/providers/ado/code-host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-host.js","sourceRoot":"","sources":["../../../../src/lib/providers/ado/code-host.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  // GENERATED from packages/providers by `pnpm sync-conductor`. Do not edit.
2
2
  import { z } from 'zod';
3
+ import { ProviderError } from "../errors.js";
4
+ import { secondsBetween } from "../timing.js";
3
5
  import { adoRunUrl, adoUrl } from "./http.js";
4
6
  import { parseTrigger, triggerFires } from "./trigger.js";
5
7
  const definition = z.looseObject({
@@ -7,7 +9,7 @@ const definition = z.looseObject({
7
9
  name: z.string(),
8
10
  process: z.looseObject({ yamlFilename: z.string().optional() }).nullish(),
9
11
  queueStatus: z.string().optional(),
10
- repository: z.looseObject({ name: z.string().optional() }).nullish(),
12
+ repository: z.looseObject({ name: z.string().optional(), type: z.string().optional() }).nullish(),
11
13
  triggers: z
12
14
  .array(z.looseObject({ settingsSourceType: z.number().optional(), triggerType: z.string().optional() }))
13
15
  .nullish(),
@@ -15,16 +17,19 @@ const definition = z.looseObject({
15
17
  const build = z.looseObject({
16
18
  _links: z.looseObject({ web: z.looseObject({ href: z.string() }).optional() }).optional(),
17
19
  definition: z.looseObject({ id: z.number().optional(), name: z.string().optional() }),
20
+ finishTime: z.string().nullish(),
18
21
  id: z.number(),
19
22
  queueTime: z.string().nullish(),
20
23
  reason: z.string().nullish(),
21
24
  result: z.string().nullish(),
22
25
  sourceVersion: z.string().nullish(),
26
+ startTime: z.string().nullish(),
23
27
  status: z.string(),
24
28
  });
25
29
  const timeline = z
26
30
  .looseObject({
27
31
  records: z.array(z.looseObject({
32
+ finishTime: z.string().nullish(),
28
33
  id: z.string(),
29
34
  issues: z.array(z.looseObject({ message: z.string().optional(), type: z.string().optional() })).nullish(),
30
35
  log: z.looseObject({ id: z.number() }).nullish(),
@@ -58,18 +63,47 @@ export function adoPipelines(http) {
58
63
  ...extra,
59
64
  });
60
65
  const records = async (repo, id) => timeline.parse(await get(repo, `build/builds/${id}/timeline`))?.records ?? [];
61
- // The YAML pipelines that build this repository and aren't disabled, with their definitions.
66
+ // One task log's lines. Each starts with an ISO timestamp; dropped to keep them readable.
67
+ const logLines = async (repo, id, log) => (await http.text(adoUrl(repo, `build/builds/${id}/logs/${log}`)))
68
+ .split(/\r?\n/)
69
+ .map((line) => line.replace(/^\d{4}-\d\d-\d\dT[\d:.]+Z /, ''))
70
+ .filter((line) => line.trim());
71
+ // The YAML pipelines that build this repository and aren't disabled, with their definitions. A
72
+ // GitHub repo Azure Pipelines builds is named <owner>/<repo>, of type GitHub or GitHubEnterprise
73
+ // (an Azure Repos name can't hold a slash).
62
74
  const definitionsOf = async (repo) => {
63
75
  const { value } = list(definition).parse(await get(repo, 'build/definitions?includeAllProperties=true&$top=1000'));
76
+ const github = repo.repository.includes('/');
64
77
  return value.flatMap((d) => {
65
78
  const yamlFilename = d.process?.yamlFilename;
66
- // Azure Repos names are case-insensitive, and a profile may spell one differently.
67
- const ours = d.repository?.name?.toLowerCase() === repo.repository.toLowerCase();
79
+ // Azure Repos names are case-insensitive, and a profile may spell one differently; so are GitHub's.
80
+ const named = d.repository?.name?.toLowerCase() === repo.repository.toLowerCase();
81
+ const ours = named && (!github || /^github(enterprise)?$/i.test(d.repository?.type ?? ''));
68
82
  if (!ours || !yamlFilename || d.queueStatus === 'disabled')
69
83
  return [];
70
84
  return [{ definition: d, pipeline: { file: yamlFilename.replace(/^\//, ''), id: d.id, name: d.name } }];
71
85
  });
72
86
  };
87
+ // A run's tasks, in the order they started (a task that never started last): the strings'
88
+ // fractions of a second vary in length, so they don't sort as text.
89
+ const tasksOf = (all) => {
90
+ const started = (r) => (r.startTime ? Date.parse(r.startTime) : Infinity);
91
+ return all.filter((r) => r.type === 'Task').sort((a, b) => started(a) - started(b));
92
+ };
93
+ // The run a batched pipeline's run for the merge queues after: its newest run on the base that
94
+ // doesn't carry the merge, with when it finished (null while it goes); null when it has none. No
95
+ // time bound: a run waiting on a prod approval can hold the batch for hours.
96
+ const heldBehind = async (repo, id, base, merge, git) => {
97
+ const query = `definitions=${id}&branchName=refs/heads/${base}&queryOrder=queueTimeDescending&$top=20`;
98
+ for (const b of list(build).parse(await get(repo, `build/builds?${query}`)).value) {
99
+ if (b.sourceVersion && (await git.isAncestor(merge.sha, b.sourceVersion)))
100
+ continue;
101
+ if (b.status !== 'completed')
102
+ return { finished: null, run: b.id };
103
+ return b.finishTime ? { finished: b.finishTime, run: b.id } : null;
104
+ }
105
+ return null;
106
+ };
73
107
  return {
74
108
  failureLog: async ({ id, repo }, { lines = 40 } = {}) => {
75
109
  const b = build.parse(await get(repo, `build/builds/${id}`));
@@ -80,15 +114,7 @@ export function adoPipelines(http) {
80
114
  const errors = (r) => (r.issues ?? []).filter((i) => i.type === 'error').flatMap((i) => (i.message ? [i.message] : []));
81
115
  const tasks = failed.map((r) => ({ errors: errors(r), name: r.name ?? '?' }));
82
116
  const logId = failed[0]?.log?.id;
83
- let log = null;
84
- if (logId !== undefined) {
85
- // Each line starts with an ISO timestamp; dropped to keep the tail readable.
86
- log = (await http.text(adoUrl(repo, `build/builds/${id}/logs/${logId}`)))
87
- .split(/\r?\n/)
88
- .map((line) => line.replace(/^\d{4}-\d\d-\d\dT[\d:.]+Z /, ''))
89
- .filter((line) => line.trim())
90
- .slice(-lines);
91
- }
117
+ const log = logId === undefined ? null : (await logLines(repo, id, logId)).slice(-lines);
92
118
  return {
93
119
  log,
94
120
  ...(tasks.length === 0
@@ -110,6 +136,15 @@ export function adoPipelines(http) {
110
136
  }
111
137
  },
112
138
  pipelines: async (repo) => (await definitionsOf(repo)).map(({ pipeline }) => pipeline),
139
+ // Finished builds, by finish time: one still running or queued has no times to measure yet.
140
+ recentRuns: async (repo, pipeline, { branch, count }) => {
141
+ if (pipeline.id === null)
142
+ throw new ProviderError(`${pipeline.name} has no pipeline id to list its runs by`);
143
+ const ref = encodeURIComponent(`refs/heads/${branch}`);
144
+ const query = `definitions=${pipeline.id}&branchName=${ref}&statusFilter=completed&queryOrder=finishTimeDescending&$top=${count}`;
145
+ const builds = list(build).parse(await get(repo, `build/builds?${query}`)).value;
146
+ return builds.map((b) => snapshot(repo, b, pipeline));
147
+ },
113
148
  run: async ({ id, repo }) => {
114
149
  const b = build.parse(await get(repo, `build/builds/${id}`));
115
150
  return snapshot(repo, b, { file: null, id: b.definition.id ?? null, name: b.definition.name ?? `run ${id}` });
@@ -120,8 +155,9 @@ export function adoPipelines(http) {
120
155
  const yaml = await git.show(merge.sha, pipeline.file);
121
156
  // A trigger overridden in the pipeline's settings (settingsSourceType 1) isn't in the YAML.
122
157
  const fromYaml = (d.triggers ?? []).every((t) => t.triggerType !== 'continuousIntegration' || t.settingsSourceType === 2);
123
- const expected = yaml === null || !fromYaml ? null : triggerFires(parseTrigger(yaml), base, merge.changed);
124
- pipelines.push({ expected, ...pipeline });
158
+ const trigger = yaml === null || !fromYaml ? null : parseTrigger(yaml);
159
+ const expected = trigger === null ? null : triggerFires(trigger, base, merge.changed);
160
+ pipelines.push({ batch: trigger?.kind === 'filter' && trigger.batch, expected, ...pipeline });
125
161
  }
126
162
  if (pipelines.length === 0)
127
163
  return [];
@@ -131,7 +167,7 @@ export function adoPipelines(http) {
131
167
  const query = `definitions=${pipelines.map((p) => p.id).join(',')}&branchName=refs/heads/${base}&queryOrder=queueTimeAscending&minTime=${since}&$top=200`;
132
168
  const builds = list(build).parse(await get(repo, `build/builds?${query}`)).value;
133
169
  const found = [];
134
- for (const { expected, ...pipeline } of pipelines) {
170
+ for (const { batch, expected, ...pipeline } of pipelines) {
135
171
  const mine = builds
136
172
  .filter((b) => b.definition.id === pipeline.id)
137
173
  .sort((a, b) => Date.parse(a.queueTime ?? '') - Date.parse(b.queueTime ?? ''));
@@ -139,27 +175,39 @@ export function adoPipelines(http) {
139
175
  // Batched CI (`batch: true`) builds the newest commit once the previous run ends, so the run
140
176
  // that carries the merge can be built from a later commit that contains it. A later run also
141
177
  // stands in for a cancelled one (a newer push's, or one queued again with `conduct runs
142
- // --requeue`): the first that wasn't cancelled carries the merge, else the newest cancelled.
178
+ // --requeue`), and for a failed one when it was queued by hand after it (givesWay): the
179
+ // first that neither was cancelled nor failed carries the merge, else the newest. Once a
180
+ // run of the chain failed, only runs queued by hand stand in, so a newer push's pass never
181
+ // hides the failure, and each names it (`retryOf`).
143
182
  let b = exact;
144
183
  let supersedes;
145
- if (exact ? cancelled(exact) : expected === true) {
184
+ let retryOf;
185
+ if (exact ? cancelled(exact) || failed(exact) : expected === true) {
146
186
  for (const later of mine) {
147
187
  if (later === exact || !later.sourceVersion)
148
188
  continue;
189
+ if (b && !givesWay(b, later, retryOf !== undefined))
190
+ continue;
149
191
  if (Date.parse(later.queueTime ?? '') < merge.mergedAt - BATCH_SLACK_MS)
150
192
  continue;
151
193
  if (!(await git.isAncestor(merge.sha, later.sourceVersion)))
152
194
  continue;
153
- if (b && cancelled(b))
154
- supersedes = b.id;
195
+ if (b && failed(b))
196
+ retryOf ??= b.id;
197
+ if (b)
198
+ supersedes = retryOf ?? b.id;
155
199
  b = later;
156
- if (!cancelled(later))
200
+ if (!cancelled(later) && !failed(later))
157
201
  break;
158
202
  }
159
203
  }
160
204
  if (!b) {
161
205
  const state = expected === true ? 'not-queued' : expected === null ? 'unknown' : 'not-triggered';
162
- found.push({ expected, pipeline, run: null, state, url: null });
206
+ // ADO holds a batched pipeline's push until its running run ends (ATK-434).
207
+ const behind = state === 'not-queued' && batch && pipeline.id !== null
208
+ ? await heldBehind(repo, pipeline.id, base, merge, git)
209
+ : null;
210
+ found.push({ ...(behind === null ? {} : { behind }), expected, pipeline, run: null, state, url: null });
163
211
  continue;
164
212
  }
165
213
  const approvals = b.status === 'completed' ? [] : pendingApprovals(await records(repo, b.id));
@@ -169,10 +217,44 @@ export function adoPipelines(http) {
169
217
  state: buildState(b, approvals),
170
218
  ...(approvals.length > 0 ? { approvalStages: approvals } : {}),
171
219
  ...(supersedes !== undefined && !cancelled(b) ? { supersedes } : {}),
220
+ ...(retryOf === undefined ? {} : { retryOf }),
172
221
  }));
173
222
  }
174
223
  return found;
175
224
  },
225
+ taskLogs: async function* ({ id, repo }, { only } = {}) {
226
+ const all = await records(repo, id);
227
+ const stage = stageOf(all);
228
+ for (const record of tasksOf(all)) {
229
+ const task = record.name ?? '?';
230
+ if (!record.log || (only && !only(task)))
231
+ continue;
232
+ yield { lines: await logLines(repo, id, record.log.id), stage: stage(record), task };
233
+ }
234
+ },
235
+ timeline: async ({ id, repo }) => {
236
+ const [read, all] = await Promise.all([get(repo, `build/builds/${id}`), records(repo, id)]);
237
+ const b = build.parse(read);
238
+ const stage = stageOf(all);
239
+ const job = ancestorOf(all, 'Job');
240
+ const tasks = tasksOf(all).map((r) => ({
241
+ finished: r.finishTime ?? null,
242
+ job: job(r),
243
+ result: r.result ?? null,
244
+ seconds: secondsBetween(r.startTime, r.finishTime),
245
+ stage: stage(r),
246
+ started: r.startTime ?? null,
247
+ state: r.state ?? null,
248
+ task: r.name ?? '?',
249
+ }));
250
+ return {
251
+ finished: b.finishTime ?? null,
252
+ run: snapshot(repo, b, { file: null, id: b.definition.id ?? null, name: b.definition.name ?? `run ${id}` }),
253
+ seconds: secondsBetween(b.startTime, b.finishTime),
254
+ started: b.startTime ?? null,
255
+ tasks,
256
+ };
257
+ },
176
258
  triggersKnown: true,
177
259
  };
178
260
  }
@@ -187,17 +269,47 @@ export function buildState(b, pendingApprovals = []) {
187
269
  }
188
270
  // The stages of a run's timeline that wait on an approval.
189
271
  export function pendingApprovals(records) {
272
+ const stage = stageOf(records);
273
+ return records
274
+ .filter((r) => r.type === 'Checkpoint.Approval' && r.state === 'inProgress')
275
+ .map((r) => stage(r) ?? '?');
276
+ }
277
+ // The name of the record of a type (a Job, a Stage) that a timeline record runs under, by its
278
+ // parents; null when none is.
279
+ function ancestorOf(records, type) {
190
280
  const byId = new Map(records.map((r) => [r.id, r]));
191
- const stageOf = (record) => {
281
+ return (record) => {
192
282
  let current = record;
193
- while (current && current.type !== 'Stage')
283
+ while (current && current.type !== type)
194
284
  current = current.parentId ? byId.get(current.parentId) : undefined;
195
- return current?.name ?? '?';
285
+ return current?.name ?? null;
196
286
  };
197
- return records.filter((r) => r.type === 'Checkpoint.Approval' && r.state === 'inProgress').map(stageOf);
198
287
  }
199
288
  // ADO spells it canceled.
200
289
  function cancelled(b) {
201
290
  return b.status === 'completed' && b.result === 'canceled';
202
291
  }
292
+ function failed(b) {
293
+ return buildState(b) === 'failed';
294
+ }
295
+ // Whether a run of the merge gives way to a later run that contains it: a cancelled one to any, a
296
+ // failed one, or any once a run before it failed (`afterFailure`), only to a run queued by hand after
297
+ // it (`conduct runs --requeue`, or a person's Run pipeline), so a newer push's run never hides a
298
+ // failure (ATK-638).
299
+ function givesWay(b, later, afterFailure) {
300
+ if (!cancelled(b) && !failed(b))
301
+ return false;
302
+ if (cancelled(b) && !afterFailure)
303
+ return true;
304
+ return later.reason === 'manual' && Date.parse(later.queueTime ?? '') > Date.parse(b.queueTime ?? '');
305
+ }
306
+ // The name of the stage a timeline record runs under; null when none is, or for the implicit one a
307
+ // pipeline with no stages runs its jobs in.
308
+ function stageOf(records) {
309
+ const stage = ancestorOf(records, 'Stage');
310
+ return (record) => {
311
+ const name = stage(record);
312
+ return name === '__default' ? null : name;
313
+ };
314
+ }
203
315
  //# sourceMappingURL=pipelines.js.map