@detergent-software/conductor 1.4.0-dev.1 → 1.4.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 (103) hide show
  1. package/CHANGELOG.md +102 -0
  2. package/README.md +86 -20
  3. package/build/brief-cli.js +105 -23
  4. package/build/brief-cli.js.map +1 -1
  5. package/build/brief.js +107 -9
  6. package/build/brief.js.map +1 -1
  7. package/build/broker.js +40 -14
  8. package/build/broker.js.map +1 -1
  9. package/build/cli.js +49 -18
  10. package/build/cli.js.map +1 -1
  11. package/build/code-host-cli.js +46 -2
  12. package/build/code-host-cli.js.map +1 -1
  13. package/build/code-host.js +2 -0
  14. package/build/code-host.js.map +1 -1
  15. package/build/conditions.js +22 -13
  16. package/build/conditions.js.map +1 -1
  17. package/build/config.js +4 -0
  18. package/build/config.js.map +1 -1
  19. package/build/daemon.js +74 -19
  20. package/build/daemon.js.map +1 -1
  21. package/build/follow-ups.js +72 -0
  22. package/build/follow-ups.js.map +1 -0
  23. package/build/help.js +712 -208
  24. package/build/help.js.map +1 -1
  25. package/build/in-process.js +30 -0
  26. package/build/in-process.js.map +1 -0
  27. package/build/inbox.js +137 -11
  28. package/build/inbox.js.map +1 -1
  29. package/build/lib/providers/ado/code-host.js +8 -5
  30. package/build/lib/providers/ado/code-host.js.map +1 -1
  31. package/build/lib/providers/ado/pipelines.js +16 -10
  32. package/build/lib/providers/ado/pipelines.js.map +1 -1
  33. package/build/lib/providers/github/actions.js +11 -0
  34. package/build/lib/providers/github/actions.js.map +1 -1
  35. package/build/lib/providers/github/code-host.js +17 -0
  36. package/build/lib/providers/github/code-host.js.map +1 -1
  37. package/build/lib/providers/index.js +1 -1
  38. package/build/lib/providers/index.js.map +1 -1
  39. package/build/lib/providers/verdicts/pr.js +14 -12
  40. package/build/lib/providers/verdicts/pr.js.map +1 -1
  41. package/build/manager.js +116 -13
  42. package/build/manager.js.map +1 -1
  43. package/build/note.js +95 -14
  44. package/build/note.js.map +1 -1
  45. package/build/notes.js +104 -16
  46. package/build/notes.js.map +1 -1
  47. package/build/notify.js +2 -1
  48. package/build/notify.js.map +1 -1
  49. package/build/package-info.js +12 -0
  50. package/build/package-info.js.map +1 -0
  51. package/build/profile.js +64 -13
  52. package/build/profile.js.map +1 -1
  53. package/build/project-check-cli.js +85 -0
  54. package/build/project-check-cli.js.map +1 -0
  55. package/build/project-check.js +362 -0
  56. package/build/project-check.js.map +1 -0
  57. package/build/resolve.js +11 -3
  58. package/build/resolve.js.map +1 -1
  59. package/build/rule-actions.js +26 -6
  60. package/build/rule-actions.js.map +1 -1
  61. package/build/rules-service.js +33 -20
  62. package/build/rules-service.js.map +1 -1
  63. package/build/rules.js +31 -14
  64. package/build/rules.js.map +1 -1
  65. package/build/runs.js.map +1 -1
  66. package/build/scheduler.js +43 -1
  67. package/build/scheduler.js.map +1 -1
  68. package/build/server.js +76 -7
  69. package/build/server.js.map +1 -1
  70. package/build/spend.js +37 -4
  71. package/build/spend.js.map +1 -1
  72. package/build/store.js +42 -4
  73. package/build/store.js.map +1 -1
  74. package/build/tracker-writes.js +74 -0
  75. package/build/tracker-writes.js.map +1 -0
  76. package/build/trackers.js +20 -0
  77. package/build/trackers.js.map +1 -1
  78. package/build/watchers/ado.js +7 -1
  79. package/build/watchers/ado.js.map +1 -1
  80. package/build/watchers/boards-writes.js +182 -34
  81. package/build/watchers/boards-writes.js.map +1 -1
  82. package/build/watchers/boards.js +7 -2
  83. package/build/watchers/boards.js.map +1 -1
  84. package/build/watchers/github.js +20 -2
  85. package/build/watchers/github.js.map +1 -1
  86. package/build/watchers/index.js +32 -4
  87. package/build/watchers/index.js.map +1 -1
  88. package/build/watchers/issues-brief.js +48 -0
  89. package/build/watchers/issues-brief.js.map +1 -0
  90. package/build/watchers/issues-queue.js +85 -0
  91. package/build/watchers/issues-queue.js.map +1 -0
  92. package/build/watchers/issues-writes.js +233 -0
  93. package/build/watchers/issues-writes.js.map +1 -0
  94. package/build/watchers/issues.js +264 -0
  95. package/build/watchers/issues.js.map +1 -0
  96. package/build/watchers/linear-writes.js +198 -0
  97. package/build/watchers/linear-writes.js.map +1 -0
  98. package/build/watchers/source.js.map +1 -1
  99. package/build/worktrees.js +1 -0
  100. package/build/worktrees.js.map +1 -1
  101. package/mod/hooks/model.ts +11 -0
  102. package/mod/hooks/register.tsx +25 -3
  103. package/package.json +1 -1
@@ -2,15 +2,18 @@ import { bindCi } from "../code-host.js";
2
2
  import { checksSettled, githubActions, githubCodeHost, githubRepoRef, prVerdict } from "../lib/providers/index.js";
3
3
  import { notePrefixes } from "../profile.js";
4
4
  import { hostMergeFacts } from "../runs.js";
5
+ import { issuesWaits } from "./issues.js";
5
6
  import { checkMerge, factsCache } from "./merge.js";
6
7
  import { checksLine, perPass, perWait, untilSpent, verdictLine, WaitProblem, } from "./source.js";
7
8
  // GitHub PRs (verdict, merged, checks, comment) and a merge's GitHub Actions runs (merge), read
8
9
  // through the providers' GitHub code host and Actions adapter as the waiting project's gh account
9
10
  // (`projects.<name>.github.user`, else gh's active account). GitHub has no open/closed thread state
10
11
  // to read cheaply, so `comment` means a person's comment or review made after the wait was
11
- // registered; bots and the work skill's own notes don't count. A merge's commit is read once.
12
+ // registered; bots and the work skill's own notes don't count. A merge's commit is read once. The
13
+ // waits on GitHub Issues items (approval, item) share the budget (issues.ts).
12
14
  export function githubSource({ credentials, now = () => Date.now(), }) {
13
15
  const merges = factsCache();
16
+ const issues = issuesWaits({ credentials });
14
17
  return {
15
18
  check: async (waits, budget) => {
16
19
  const outcomes = new Map();
@@ -58,7 +61,7 @@ export function githubSource({ credentials, now = () => Date.now(), }) {
58
61
  }
59
62
  if (c.on === 'checks') {
60
63
  const settled = checksSettled(await host.checks(ref));
61
- return settled === null ? null : `${at} ${checksLine(settled)}`;
64
+ return settled === null ? null : { checks: settled, resolution: `${at} ${checksLine(settled)}` };
62
65
  }
63
66
  const since = Date.parse(wait.createdAt);
64
67
  const threads = await host.threads(ref, {
@@ -70,6 +73,21 @@ export function githubSource({ credentials, now = () => Date.now(), }) {
70
73
  });
71
74
  }
72
75
  });
76
+ try {
77
+ await untilSpent(() => issues.check(waits, budget, outcomes));
78
+ }
79
+ catch (error) {
80
+ // An issues failure (a 5xx, GitHub throttling it) mustn't throw away this pass's PR and merge
81
+ // outcomes or back them off: with any of them here, it is the issue waits' problem this pass,
82
+ // and they stay open. Alone, the source fails and backs off as for any API.
83
+ const issueWait = (w) => (w.condition.kind === 'approval' || w.condition.kind === 'item') && w.condition.tracker === 'github-issues';
84
+ if (waits.every(issueWait))
85
+ throw error;
86
+ const message = error instanceof Error ? error.message : String(error);
87
+ for (const wait of waits)
88
+ if (issueWait(wait) && !outcomes.has(wait.id))
89
+ outcomes.set(wait.id, { error: message });
90
+ }
73
91
  return outcomes;
74
92
  },
75
93
  name: 'github',
@@ -1 +1 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/watchers/github.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/watchers/github.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { parseCondition, prRef, sourceOf } from "../conditions.js";
2
2
  import { ConductorError } from "../errors.js";
3
+ import {} from "../lib/providers/index.js";
3
4
  import { resolveOpenWait } from "../resolve.js";
4
5
  import { ACTIVE_STATUSES } from "../store.js";
5
6
  import { adoSource } from "./ado.js";
@@ -116,6 +117,24 @@ export function startWatchers(deps) {
116
117
  subject: worker?.item ?? null,
117
118
  });
118
119
  };
120
+ // A PR's required checks failed: after the wait's own `wait.resolved`, the failed runs, which the
121
+ // rules see as `run.failed` and the inbox raises as a failure.
122
+ const checksFailed = (wait, resolution, builds) => {
123
+ const worker = store.getWorker(wait.worker);
124
+ store.appendEvent({
125
+ data: {
126
+ builds,
127
+ condition: wait.condition,
128
+ resolution,
129
+ wait: wait.id,
130
+ worker: wait.worker,
131
+ ...(worker ? { name: worker.name } : {}),
132
+ },
133
+ kind: 'pr.checks-failed',
134
+ project: worker?.project ?? null,
135
+ subject: worker?.item ?? null,
136
+ });
137
+ };
119
138
  const checkSource = async (source, s, checks) => {
120
139
  const interval = settings(config, source).intervalSeconds * 1000;
121
140
  s.passes++;
@@ -126,11 +145,20 @@ export function startWatchers(deps) {
126
145
  try {
127
146
  const outcomes = await source.check(ordered, s.budget);
128
147
  let resolved = 0;
129
- const resolve = (id, resolution) => {
148
+ const resolve = (id, resolution, checks) => {
130
149
  const wait = store.getWait(id);
131
- if (wait && resolveOpenWait(store, wait, resolution))
132
- resolved++;
133
150
  problems.delete(id);
151
+ if (!wait)
152
+ return;
153
+ // The failed runs land with the wait's resolution or not at all: the wait isn't checked again.
154
+ const done = store.transaction(() => {
155
+ const closed = resolveOpenWait(store, wait, resolution, checks ? { checks: checks.state } : {});
156
+ if (closed && checks?.state === 'failed')
157
+ checksFailed(closed, resolution, checks.builds);
158
+ return closed;
159
+ });
160
+ if (done)
161
+ resolved++;
134
162
  };
135
163
  // A PR's conflict wakes its worker once per spell, and its line goes with the waits' own.
136
164
  const wake = spells.observe(ordered, outcomes);
@@ -140,7 +168,7 @@ export function startWatchers(deps) {
140
168
  if ('error' in outcome)
141
169
  problem(id, outcome.error);
142
170
  else if ('resolution' in outcome && !wake.has(id))
143
- resolve(id, outcome.resolution);
171
+ resolve(id, outcome.resolution, outcome.checks);
144
172
  }
145
173
  for (const [id, line] of wake)
146
174
  resolve(id, line);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/watchers/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/watchers/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { BriefError } from "../brief.js";
2
+ import { areaOf, issueNumber, issueRef, issuesGet, issueState, labelsOf, readComments, readDependencies, readIssue, readViewer, requireIssueRepo, } from "./issues.js";
3
+ // A GitHub issue's brief (ATK-458): the issue, its comments, the issues it is blocked by and blocks
4
+ // (GitHub's issue dependencies) and the gh account, whose approvals count. GitHub has no "related"
5
+ // relation, so the brief has none.
6
+ export function issuesBriefs(options) {
7
+ // The gh account's login by account: it doesn't change while the daemon runs.
8
+ const viewers = new Map();
9
+ return {
10
+ read: async (item, profile) => {
11
+ const repo = requireIssueRepo(profile);
12
+ const number = issueNumber(item, repo);
13
+ if (number === null)
14
+ throw new BriefError(`${item} isn't an issue of the repo keyed ${repo.key}`, 'missing');
15
+ const get = issuesGet(options.credentials, repo, null);
16
+ const issue = await readIssue(get, repo, number);
17
+ if (!issue || issue.pull_request !== undefined)
18
+ throw new BriefError(`${repo.owner}/${repo.repo} has no issue #${number} (${item})`, 'missing');
19
+ const who = options.credentials.account('github', repo.conducted).id;
20
+ const [comments, blockedBy, blocks, viewer] = await Promise.all([
21
+ readComments(get, repo, number),
22
+ readDependencies(get, repo, number, 'blocked_by'),
23
+ readDependencies(get, repo, number, 'blocking'),
24
+ viewers.get(who) ?? readViewer(get),
25
+ ]);
26
+ viewers.set(who, viewer);
27
+ const labels = labelsOf(issue);
28
+ return {
29
+ area: areaOf(labels, repo.areaPrefix),
30
+ blockedBy: blockedBy.map((d) => link(d, repo)),
31
+ blocks: blocks.map((d) => link(d, repo)),
32
+ comments,
33
+ description: (issue.body ?? '').trim(),
34
+ labels,
35
+ related: [],
36
+ status: issueState(issue, repo),
37
+ title: issue.title,
38
+ trackerProject: null,
39
+ url: issue.html_url,
40
+ viewer,
41
+ };
42
+ },
43
+ };
44
+ }
45
+ function link(issue, repo) {
46
+ return { id: issueRef(issue, repo), status: issueState(issue, repo).name, title: issue.title };
47
+ }
48
+ //# sourceMappingURL=issues-brief.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issues-brief.js","sourceRoot":"","sources":["../../src/watchers/issues-brief.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import { areaOf, ghIssue, issueNumber, issueRef, issuesGet, issueState, labelsOf, readDependencies, readIssue, readPages, repoPath, requireIssueRepo, } from "./issues.js";
2
+ // The scheduler's read of a GitHub Issues queue (ATK-458): the open issues carrying the profile's
3
+ // queue label, oldest first, are the conducted queue. The in-flight issues are read too (a closed
4
+ // one retires its worker), and the open blockers of every open issue, from GitHub's issue
5
+ // dependencies. Pull requests, which the issues API also lists, are left out.
6
+ const OPEN = new Set(['started', 'unstarted']);
7
+ export function issuesQueue(options) {
8
+ return {
9
+ read: async (profile, inFlight, budget) => {
10
+ const repo = requireIssueRepo(profile);
11
+ const get = issuesGet(options.credentials, repo, budget);
12
+ const label = encodeURIComponent(repo.queueLabel);
13
+ const listed = (await readPages(get, `${repoPath(repo)}/issues?state=open&labels=${label}&sort=created&direction=asc`))
14
+ .map((i) => ghIssue.parse(i))
15
+ .filter((i) => i.pull_request === undefined);
16
+ const issues = new Map(listed.map((i) => [issueRef(i, repo), i]));
17
+ const flying = inFlight.flatMap((item) => issueNumber(item, repo) ?? []);
18
+ for (const n of flying) {
19
+ if (issues.has(`${repo.key}-${n}`))
20
+ continue;
21
+ const found = await readIssue(get, repo, n);
22
+ if (found && found.pull_request === undefined)
23
+ issues.set(issueRef(found, repo), found);
24
+ }
25
+ // An open blocker outside the queue still blocks, so it is listed too. The summary counts the
26
+ // open blockers, which saves a read for most issues; without one, the list is read.
27
+ const blockedBy = new Map();
28
+ for (const [ref, issue] of [...issues]) {
29
+ if (!OPEN.has(issueState(issue, repo).type))
30
+ continue;
31
+ const summary = issue.issue_dependencies_summary;
32
+ if (summary && summary.blocked_by === 0)
33
+ continue;
34
+ const open = (await readDependencies(get, repo, issue.number, 'blocked_by')).filter((d) => d.state.toLowerCase() === 'open');
35
+ blockedBy.set(ref, open.map((d) => issueRef(d, repo)));
36
+ for (const d of open)
37
+ if (!issues.has(issueRef(d, repo)))
38
+ issues.set(issueRef(d, repo), d);
39
+ }
40
+ return issuesSnapshot(repo, listed.map((i) => i.number), flying, issues, blockedBy);
41
+ },
42
+ };
43
+ }
44
+ // The snapshot from the queued issue numbers (oldest first), the in-flight ones, every issue read by
45
+ // key, and each open issue's open blockers. Open queued issues are the queue, in one tracker project
46
+ // named after the repo, as are in-flight ones whose queue label was taken off; an open blocker
47
+ // outside both is listed without a project, so it holds its Area and blocks.
48
+ export function issuesSnapshot(repo, queued, flying, issues, blockedBy) {
49
+ const project = `${repo.owner}/${repo.repo}`;
50
+ const key = (n) => `${repo.key}-${n}`;
51
+ const rank = new Map(queued.map((n, i) => [key(n), i]));
52
+ const inFlight = new Set(flying.map(key));
53
+ const listed = [...issues].flatMap(([ref, issue]) => {
54
+ const type = issueState(issue, repo).type;
55
+ if (!OPEN.has(type))
56
+ return [];
57
+ // Labels ignore case on GitHub, so the human label is spelt as the scheduler looks for it.
58
+ const labels = labelsOf(issue).map((l) => l.toLowerCase() === repo.humanLabel.toLowerCase() ? repo.humanLabel : l);
59
+ const position = rank.get(ref);
60
+ return [
61
+ {
62
+ area: areaOf(labels, repo.areaPrefix),
63
+ blockedBy: [...(blockedBy.get(ref) ?? [])],
64
+ createdAt: issue.created_at ?? null,
65
+ id: ref,
66
+ labels,
67
+ priority: null,
68
+ ...(position === undefined ? {} : { rank: position }),
69
+ stateType: type,
70
+ title: issue.title,
71
+ trackerProject: position !== undefined || inFlight.has(ref) ? project : null,
72
+ },
73
+ ];
74
+ });
75
+ return {
76
+ areaLabels: [...new Set(listed.flatMap((i) => i.area ?? []))].sort(),
77
+ closed: flying.map(key).filter((ref) => {
78
+ const issue = issues.get(ref);
79
+ return issue !== undefined && !OPEN.has(issueState(issue, repo).type);
80
+ }),
81
+ issues: listed,
82
+ projects: [{ name: project, priority: repo.priority, sortOrder: 0 }],
83
+ };
84
+ }
85
+ //# sourceMappingURL=issues-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issues-queue.js","sourceRoot":"","sources":["../../src/watchers/issues-queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,233 @@
1
+ import { z } from 'zod';
2
+ import { ConductorError } from "../errors.js";
3
+ import { NotFound } from "../lib/providers/index.js";
4
+ import { NotePostError } from "../notes.js";
5
+ import { followUpLinks, keepsClosed, transitionsOf } from "../tracker-writes.js";
6
+ import { issueNumber, issuesGet, issueState, labelsOf, readComments, readIssue, readPages, readViewer, repoPath, requireIssueRepo, } from "./issues.js";
7
+ // The conductor's writes to GitHub Issues (ATK-458), as the project's gh account: phase notes as
8
+ // issue comments, a rule's label edit, and the tracker writes a worker's notes and verbs cause. A
9
+ // phase is a label (`in-progress`, `in-review`) until Landed closes the issue as completed; labels
10
+ // are added and removed one at a time, never replaced as a set, so a label someone added meanwhile
11
+ // stays. None takes from the watchers' budget, as Linear's and Boards' writes don't.
12
+ const created = z.looseObject({ html_url: z.string(), id: z.number(), number: z.number() });
13
+ const comment = z.looseObject({ html_url: z.string().nullish(), id: z.number() });
14
+ const pull = z.looseObject({ body: z.string().nullish() });
15
+ export function issuesLabels(options) {
16
+ return {
17
+ label: async (item, label, op, profile) => {
18
+ const { issue, number, repo, write } = await target(options, item, profile);
19
+ const has = labelsOf(issue).some((l) => l.toLowerCase() === label.toLowerCase());
20
+ if (has === (op === 'add'))
21
+ return 'already';
22
+ if (op === 'add')
23
+ await addLabel(write, repo, number, label, item);
24
+ else
25
+ await removeLabel(write, repo, number, label);
26
+ return op === 'add' ? 'added' : 'removed';
27
+ },
28
+ };
29
+ }
30
+ // A note as an issue comment. A refused request (a 4xx, or no gh login) posted nothing; a lost
31
+ // answer or a 5xx may have posted it.
32
+ export function issuesNotes(options) {
33
+ return {
34
+ comment: async (item, body, profile) => {
35
+ const repo = requireIssueRepo(profile);
36
+ const number = issueNumber(item, repo);
37
+ if (number === null)
38
+ throw new NotePostError(`${item} isn't an issue of the repo keyed ${repo.key}`, 'no');
39
+ let answer;
40
+ try {
41
+ answer = await options.credentials.ghWrite(repo.conducted)('POST', `${repoPath(repo)}/issues/${number}/comments`, {
42
+ body,
43
+ });
44
+ }
45
+ catch (error) {
46
+ const message = error instanceof Error ? error.message : String(error);
47
+ // No gh login (nothing was sent), no such issue, or GitHub refusing it: nothing was posted.
48
+ if (error instanceof ConductorError)
49
+ throw new NotePostError(message, 'no', error.details);
50
+ if (error instanceof NotFound || /HTTP 4\d\d/.test(message))
51
+ throw new NotePostError(`GitHub refused the comment on ${item}: ${message}`, 'no');
52
+ throw new NotePostError(`GitHub unreachable: ${message}`, 'unknown');
53
+ }
54
+ const posted = comment.safeParse(answer).data;
55
+ if (!posted)
56
+ throw new NotePostError(`GitHub's answer to the comment on ${item} didn't read`, 'unknown');
57
+ return { id: String(posted.id), url: posted.html_url ?? null };
58
+ },
59
+ };
60
+ }
61
+ // The tracker writes on GitHub Issues: the phase label (and the assignee on `started`), Landed's
62
+ // close as completed, a PR linked by the reference its body carries (else a comment with its URL),
63
+ // and a follow-up as a new issue with its labels and dependencies.
64
+ export function issuesWrites(options) {
65
+ // The gh account's login by account, which an assignee takes.
66
+ const viewers = new Map();
67
+ const viewerOf = async (get, repo) => {
68
+ const who = options.credentials.account('github', repo.conducted).id;
69
+ const known = viewers.get(who) ?? (await readViewer(get));
70
+ viewers.set(who, known);
71
+ return known;
72
+ };
73
+ return {
74
+ file: async (followUp, profile) => {
75
+ const repo = requireIssueRepo(profile);
76
+ const get = issuesGet(options.credentials, repo, null);
77
+ const write = options.credentials.ghWrite(repo.conducted);
78
+ const area = `${repo.areaPrefix}${followUp.area.replace(new RegExp(`^${escape(repo.areaPrefix)}`, 'i'), '')}`;
79
+ // An Area the repo has no label for is refused before anything is written.
80
+ try {
81
+ await get(`${repoPath(repo)}/labels/${encodeURIComponent(area)}`);
82
+ }
83
+ catch (error) {
84
+ if (!(error instanceof NotFound))
85
+ throw error;
86
+ const known = (await readPages(get, `${repoPath(repo)}/labels`))
87
+ .map((l) => z.looseObject({ name: z.string() }).parse(l).name)
88
+ .filter((n) => n.toLowerCase().startsWith(repo.areaPrefix.toLowerCase()))
89
+ .map((n) => n.slice(repo.areaPrefix.length))
90
+ .sort();
91
+ throw new ConductorError(`"${followUp.area}" isn't an Area: a "${repo.areaPrefix}" label of ${repo.owner}/${repo.repo}`, [`the Areas: ${known.join(', ') || 'none'}`]);
92
+ }
93
+ const links = followUpLinks(followUp);
94
+ const numberOf = (key) => {
95
+ const n = issueNumber(key, repo);
96
+ if (n === null)
97
+ throw new ConductorError(`${key} isn't an issue of the repo keyed ${repo.key}`);
98
+ return n;
99
+ };
100
+ const related = links.related.map(numberOf);
101
+ const blockedBy = links.blockedBy.map(numberOf);
102
+ // GitHub has no "related" relation: a mention in the body links each in its timeline.
103
+ const body = related.length > 0
104
+ ? `${followUp.body.trimEnd()}\n\nRelated: ${related.map((n) => `#${n}`).join(', ')}`
105
+ : followUp.body;
106
+ const labels = [repo.queueLabel, area, repo.triageLabel, followUp.human ? repo.humanLabel : null].flatMap((l) => l === null ? [] : [l]);
107
+ const made = created.safeParse(await write('POST', `${repoPath(repo)}/issues`, { body, labels, title: followUp.title })).data;
108
+ if (!made)
109
+ throw new ConductorError("GitHub didn't create the follow-up");
110
+ const warnings = [];
111
+ // The issue exists now: a dependency that doesn't take is a warning on it, not a failed filing.
112
+ for (const n of blockedBy) {
113
+ try {
114
+ const blocker = await readIssue(get, repo, n);
115
+ if (!blocker?.id)
116
+ throw new Error(`${repo.owner}/${repo.repo} has no issue #${n}`);
117
+ await write('POST', `${repoPath(repo)}/issues/${made.number}/dependencies/blocked_by`, {
118
+ issue_id: blocker.id,
119
+ });
120
+ }
121
+ catch (error) {
122
+ warnings.push(`not blocked by ${repo.key}-${n}: ${error instanceof Error ? error.message : String(error)}`);
123
+ }
124
+ }
125
+ return { key: `${repo.key}-${made.number}`, url: made.html_url, warnings };
126
+ },
127
+ linkPr: async (item, pr, profile) => {
128
+ const { get, number, repo, write } = await target(options, item, profile);
129
+ // A GitHub PR whose body carries the issue's reference is linked by GitHub itself.
130
+ if (pr.repo.host === 'github') {
131
+ const body = pull.parse(await get(`repos/${pr.repo.owner}/${pr.repo.repo}/pulls/${pr.number}`)).body ?? '';
132
+ if (mentions(body, repo, number, pr.repo))
133
+ return 'already';
134
+ }
135
+ const comments = await readComments(get, repo, number);
136
+ if (comments.some((c) => c.body.includes(pr.url)))
137
+ return 'already';
138
+ await write('POST', `${repoPath(repo)}/issues/${number}/comments`, { body: `PR: ${pr.url}` });
139
+ return 'linked';
140
+ },
141
+ prReference: (item, host, profile) => {
142
+ if (host !== 'github')
143
+ return null;
144
+ const repo = requireIssueRepo(profile);
145
+ const number = issueNumber(item, repo);
146
+ return number === null ? null : `Refs ${repo.owner}/${repo.repo}#${number}`;
147
+ },
148
+ transition: async (item, phase, profile) => {
149
+ const name = transitionsOf(profile)[phase];
150
+ // A phase with no label moves nothing, but `started` still assigns.
151
+ if (name === null && phase !== 'started')
152
+ return { result: 'skipped', state: null };
153
+ const { get, issue, number, repo, write } = await target(options, item, profile);
154
+ const state = issueState(issue, repo);
155
+ if (keepsClosed(phase, state.type))
156
+ return { result: 'kept', state: state.name };
157
+ const labels = labelsOf(issue);
158
+ const phaseLabels = labels.filter((l) => repo.phaseLabels.some((p) => p.toLowerCase() === l.toLowerCase()));
159
+ if (phase === 'landed') {
160
+ if (state.type === 'completed')
161
+ return { result: 'already', state: state.name };
162
+ const after = z
163
+ .looseObject({ state: z.string() })
164
+ .safeParse(await write('PATCH', `${repoPath(repo)}/issues/${number}`, { state: 'closed', state_reason: 'completed' })).data;
165
+ if (after?.state.toLowerCase() !== 'closed')
166
+ throw new ConductorError(`GitHub didn't close ${item}: it is ${after?.state ?? 'unreadable'}`);
167
+ for (const l of phaseLabels)
168
+ await removeLabel(write, repo, number, l);
169
+ return { result: 'moved', state: 'closed' };
170
+ }
171
+ const assignee = phase === 'started' ? await viewerOf(get, repo) : null;
172
+ const assign = assignee !== null && !(issue.assignees ?? []).some((a) => a.login.toLowerCase() === assignee.toLowerCase());
173
+ // A phase with no label of its own leaves the other phase's label where it is.
174
+ const stale = name === null ? [] : phaseLabels.filter((l) => l.toLowerCase() !== name.toLowerCase());
175
+ const add = name !== null && !labels.some((l) => l.toLowerCase() === name.toLowerCase());
176
+ // A PR opened on a closed issue reopens it, for a follow-up PR on a landed item.
177
+ const reopen = state.type === 'completed' || state.type === 'canceled';
178
+ if (!assign && !add && stale.length === 0 && !reopen)
179
+ return { result: name === null ? 'skipped' : 'already', state: name === null ? null : state.name };
180
+ if (reopen)
181
+ await write('PATCH', `${repoPath(repo)}/issues/${number}`, { state: 'open' });
182
+ if (assign)
183
+ await write('POST', `${repoPath(repo)}/issues/${number}/assignees`, { assignees: [assignee] });
184
+ if (add)
185
+ await addLabel(write, repo, number, name, item);
186
+ for (const l of stale)
187
+ await removeLabel(write, repo, number, l);
188
+ return { result: name === null ? 'skipped' : 'moved', state: name };
189
+ },
190
+ };
191
+ }
192
+ async function addLabel(write, repo, number, label, item) {
193
+ // GitHub makes a label the repo doesn't have yet. The answer is the issue's labels after the add.
194
+ const after = z
195
+ .array(z.looseObject({ name: z.string() }))
196
+ .safeParse(await write('POST', `${repoPath(repo)}/issues/${number}/labels`, { labels: [label] })).data;
197
+ if (!after?.some((l) => l.name.toLowerCase() === label.toLowerCase()))
198
+ throw new ConductorError(`GitHub didn't add the label "${label}" to ${item}`);
199
+ }
200
+ function escape(text) {
201
+ return text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
202
+ }
203
+ // The issue's reference in a PR body: `#n` in the issue's own repo, `owner/repo#n` or the issue's
204
+ // URL from anywhere.
205
+ function mentions(body, repo, number, prRepo) {
206
+ const full = new RegExp(`(?:^|[^\\w/])${escape(`${repo.owner}/${repo.repo}`)}#${number}\\b`, 'i');
207
+ const url = new RegExp(`github\\.com/${escape(`${repo.owner}/${repo.repo}`)}/issues/${number}\\b`, 'i');
208
+ const same = prRepo.owner.toLowerCase() === repo.owner.toLowerCase() && prRepo.repo.toLowerCase() === repo.repo.toLowerCase();
209
+ return full.test(body) || url.test(body) || (same && new RegExp(`(?:^|[^\\w/])#${number}\\b`).test(body));
210
+ }
211
+ // A label taken off; one already gone (GitHub's 404) is fine.
212
+ async function removeLabel(write, repo, number, label) {
213
+ try {
214
+ await write('DELETE', `${repoPath(repo)}/issues/${number}/labels/${encodeURIComponent(label)}`);
215
+ }
216
+ catch (error) {
217
+ if (!(error instanceof NotFound))
218
+ throw error;
219
+ }
220
+ }
221
+ // The item's repo, number and issue, refused when the item isn't one of the repo's issues.
222
+ async function target(options, item, profile) {
223
+ const repo = requireIssueRepo(profile);
224
+ const number = issueNumber(item, repo);
225
+ if (number === null)
226
+ throw new ConductorError(`${item} isn't an issue of the repo keyed ${repo.key}, such as ${repo.key}-12`);
227
+ const get = issuesGet(options.credentials, repo, null);
228
+ const issue = await readIssue(get, repo, number);
229
+ if (!issue || issue.pull_request !== undefined)
230
+ throw new ConductorError(`${repo.owner}/${repo.repo} has no issue #${number} (${item})`);
231
+ return { get, issue, number, repo, write: options.credentials.ghWrite(repo.conducted) };
232
+ }
233
+ //# sourceMappingURL=issues-writes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issues-writes.js","sourceRoot":"","sources":["../../src/watchers/issues-writes.ts"],"names":[],"mappings":"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"}