@usine/orchestrator 0.2.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/LICENSE +661 -21
  2. package/README.md +174 -52
  3. package/dist/board/items.d.ts +22 -3
  4. package/dist/board/items.d.ts.map +1 -1
  5. package/dist/board/items.js +44 -4
  6. package/dist/board/items.js.map +1 -1
  7. package/dist/board/projection.d.ts +8 -1
  8. package/dist/board/projection.d.ts.map +1 -1
  9. package/dist/board/projection.js +63 -14
  10. package/dist/board/projection.js.map +1 -1
  11. package/dist/board/tasks.d.ts +15 -3
  12. package/dist/board/tasks.d.ts.map +1 -1
  13. package/dist/board/tasks.js +28 -9
  14. package/dist/board/tasks.js.map +1 -1
  15. package/dist/cloudflare.d.ts +32 -0
  16. package/dist/cloudflare.d.ts.map +1 -0
  17. package/dist/cloudflare.js +68 -0
  18. package/dist/cloudflare.js.map +1 -0
  19. package/dist/credentials.d.ts +5 -6
  20. package/dist/credentials.d.ts.map +1 -1
  21. package/dist/credentials.js +22 -15
  22. package/dist/credentials.js.map +1 -1
  23. package/dist/current-instance/changes.d.ts +87 -0
  24. package/dist/current-instance/changes.d.ts.map +1 -0
  25. package/dist/current-instance/changes.js +141 -0
  26. package/dist/current-instance/changes.js.map +1 -0
  27. package/dist/current-instance/current-instance.d.ts +89 -0
  28. package/dist/current-instance/current-instance.d.ts.map +1 -0
  29. package/dist/current-instance/current-instance.js +163 -0
  30. package/dist/current-instance/current-instance.js.map +1 -0
  31. package/dist/exe-dev.d.ts +6 -2
  32. package/dist/exe-dev.d.ts.map +1 -1
  33. package/dist/exe-dev.js +10 -9
  34. package/dist/exe-dev.js.map +1 -1
  35. package/dist/http-client.d.ts +8 -0
  36. package/dist/http-client.d.ts.map +1 -0
  37. package/dist/http-client.js +8 -0
  38. package/dist/http-client.js.map +1 -0
  39. package/dist/idle-triggers.d.ts +1 -1
  40. package/dist/idle-triggers.d.ts.map +1 -1
  41. package/dist/idle-triggers.js +1 -1
  42. package/dist/idle-triggers.js.map +1 -1
  43. package/dist/label-reconciler.d.ts +5 -2
  44. package/dist/label-reconciler.d.ts.map +1 -1
  45. package/dist/label-reconciler.js.map +1 -1
  46. package/dist/lease-order.d.ts +60 -0
  47. package/dist/lease-order.d.ts.map +1 -0
  48. package/dist/lease-order.js +76 -0
  49. package/dist/lease-order.js.map +1 -0
  50. package/dist/local.d.ts +4 -18
  51. package/dist/local.d.ts.map +1 -1
  52. package/dist/local.js +9 -45
  53. package/dist/local.js.map +1 -1
  54. package/dist/loop-matches.d.ts +28 -0
  55. package/dist/loop-matches.d.ts.map +1 -0
  56. package/dist/loop-matches.js +74 -0
  57. package/dist/loop-matches.js.map +1 -0
  58. package/dist/operator/attempt.d.ts +76 -10
  59. package/dist/operator/attempt.d.ts.map +1 -1
  60. package/dist/operator/attempt.js +69 -11
  61. package/dist/operator/attempt.js.map +1 -1
  62. package/dist/operator/board.d.ts +48 -16
  63. package/dist/operator/board.d.ts.map +1 -1
  64. package/dist/operator/board.js +48 -17
  65. package/dist/operator/board.js.map +1 -1
  66. package/dist/operator/configuration.d.ts +314 -0
  67. package/dist/operator/configuration.d.ts.map +1 -0
  68. package/dist/operator/configuration.js +490 -0
  69. package/dist/operator/configuration.js.map +1 -0
  70. package/dist/operator/desk.d.ts +206 -0
  71. package/dist/operator/desk.d.ts.map +1 -0
  72. package/dist/operator/desk.js +525 -0
  73. package/dist/operator/desk.js.map +1 -0
  74. package/dist/operator/github-changes.d.ts +88 -0
  75. package/dist/operator/github-changes.d.ts.map +1 -0
  76. package/dist/operator/github-changes.js +266 -0
  77. package/dist/operator/github-changes.js.map +1 -0
  78. package/dist/operator/http.d.ts +135 -105
  79. package/dist/operator/http.d.ts.map +1 -1
  80. package/dist/operator/http.js +155 -30
  81. package/dist/operator/http.js.map +1 -1
  82. package/dist/operator/machines.d.ts +71 -0
  83. package/dist/operator/machines.d.ts.map +1 -0
  84. package/dist/operator/machines.js +103 -0
  85. package/dist/operator/machines.js.map +1 -0
  86. package/dist/operator/need.d.ts +58 -11
  87. package/dist/operator/need.d.ts.map +1 -1
  88. package/dist/operator/need.js +61 -9
  89. package/dist/operator/need.js.map +1 -1
  90. package/dist/operator/operator.d.ts +135 -29
  91. package/dist/operator/operator.d.ts.map +1 -1
  92. package/dist/operator/operator.js +370 -63
  93. package/dist/operator/operator.js.map +1 -1
  94. package/dist/operator/overview.d.ts +7 -7
  95. package/dist/operator/overview.d.ts.map +1 -1
  96. package/dist/operator/overview.js +5 -5
  97. package/dist/operator/overview.js.map +1 -1
  98. package/dist/operator/projection.d.ts +56 -5
  99. package/dist/operator/projection.d.ts.map +1 -1
  100. package/dist/operator/projection.js +108 -9
  101. package/dist/operator/projection.js.map +1 -1
  102. package/dist/operator/run.d.ts +101 -6
  103. package/dist/operator/run.d.ts.map +1 -1
  104. package/dist/operator/run.js +100 -7
  105. package/dist/operator/run.js.map +1 -1
  106. package/dist/operator/statistics/cache.d.ts +7 -0
  107. package/dist/operator/statistics/cache.d.ts.map +1 -0
  108. package/dist/operator/statistics/cache.js +40 -0
  109. package/dist/operator/statistics/cache.js.map +1 -0
  110. package/dist/operator/statistics/runs.d.ts +36 -0
  111. package/dist/operator/statistics/runs.d.ts.map +1 -0
  112. package/dist/operator/statistics/runs.js +284 -0
  113. package/dist/operator/statistics/runs.js.map +1 -0
  114. package/dist/operator/statistics/statistics.d.ts +20 -0
  115. package/dist/operator/statistics/statistics.d.ts.map +1 -0
  116. package/dist/operator/statistics/statistics.js +138 -0
  117. package/dist/operator/statistics/statistics.js.map +1 -0
  118. package/dist/operator/statistics/tasks.d.ts +30 -0
  119. package/dist/operator/statistics/tasks.d.ts.map +1 -0
  120. package/dist/operator/statistics/tasks.js +244 -0
  121. package/dist/operator/statistics/tasks.js.map +1 -0
  122. package/dist/operator/statistics/view.d.ts +302 -0
  123. package/dist/operator/statistics/view.d.ts.map +1 -0
  124. package/dist/operator/statistics/view.js +243 -0
  125. package/dist/operator/statistics/view.js.map +1 -0
  126. package/dist/operator/statistics/window.d.ts +24 -0
  127. package/dist/operator/statistics/window.d.ts.map +1 -0
  128. package/dist/operator/statistics/window.js +47 -0
  129. package/dist/operator/statistics/window.js.map +1 -0
  130. package/dist/operator/task.d.ts +94 -0
  131. package/dist/operator/task.d.ts.map +1 -0
  132. package/dist/operator/task.js +204 -0
  133. package/dist/operator/task.js.map +1 -0
  134. package/dist/operator/transcript.d.ts +12 -12
  135. package/dist/operator/transcript.d.ts.map +1 -1
  136. package/dist/operator/transcript.js +11 -9
  137. package/dist/operator/transcript.js.map +1 -1
  138. package/dist/operator/usage.d.ts +103 -0
  139. package/dist/operator/usage.d.ts.map +1 -0
  140. package/dist/operator/usage.js +234 -0
  141. package/dist/operator/usage.js.map +1 -0
  142. package/dist/orchestrator.d.ts +8 -5
  143. package/dist/orchestrator.d.ts.map +1 -1
  144. package/dist/orchestrator.js +4 -2
  145. package/dist/orchestrator.js.map +1 -1
  146. package/dist/polling/closed-item-asks.d.ts +8 -0
  147. package/dist/polling/closed-item-asks.d.ts.map +1 -0
  148. package/dist/polling/closed-item-asks.js +28 -0
  149. package/dist/polling/closed-item-asks.js.map +1 -0
  150. package/dist/polling/cycle.d.ts +28 -10
  151. package/dist/polling/cycle.d.ts.map +1 -1
  152. package/dist/polling/cycle.js +20 -6
  153. package/dist/polling/cycle.js.map +1 -1
  154. package/dist/polling/evaluation-failures.d.ts +42 -0
  155. package/dist/polling/evaluation-failures.d.ts.map +1 -0
  156. package/dist/polling/evaluation-failures.js +103 -0
  157. package/dist/polling/evaluation-failures.js.map +1 -0
  158. package/dist/polling/hints.d.ts +2 -2
  159. package/dist/polling/hints.d.ts.map +1 -1
  160. package/dist/polling/hints.js +2 -2
  161. package/dist/polling/hints.js.map +1 -1
  162. package/dist/polling/loop-evaluation.d.ts +21 -11
  163. package/dist/polling/loop-evaluation.d.ts.map +1 -1
  164. package/dist/polling/loop-evaluation.js +70 -27
  165. package/dist/polling/loop-evaluation.js.map +1 -1
  166. package/dist/polling/open-issues.d.ts +23 -0
  167. package/dist/polling/open-issues.d.ts.map +1 -0
  168. package/dist/polling/open-issues.js +77 -0
  169. package/dist/polling/open-issues.js.map +1 -0
  170. package/dist/polling/open-pull-requests.d.ts +28 -0
  171. package/dist/polling/open-pull-requests.d.ts.map +1 -0
  172. package/dist/polling/open-pull-requests.js +131 -0
  173. package/dist/polling/open-pull-requests.js.map +1 -0
  174. package/dist/polling/polling.d.ts +20 -11
  175. package/dist/polling/polling.d.ts.map +1 -1
  176. package/dist/polling/polling.js +215 -52
  177. package/dist/polling/polling.js.map +1 -1
  178. package/dist/polling/repository-sync.d.ts +21 -14
  179. package/dist/polling/repository-sync.d.ts.map +1 -1
  180. package/dist/polling/repository-sync.js +35 -28
  181. package/dist/polling/repository-sync.js.map +1 -1
  182. package/dist/polling-triggers.d.ts +1 -1
  183. package/dist/polling-triggers.d.ts.map +1 -1
  184. package/dist/polling-triggers.js +1 -1
  185. package/dist/polling-triggers.js.map +1 -1
  186. package/dist/reloads.d.ts +14 -0
  187. package/dist/reloads.d.ts.map +1 -0
  188. package/dist/reloads.js +7 -0
  189. package/dist/reloads.js.map +1 -0
  190. package/dist/runtime.d.ts +24 -0
  191. package/dist/runtime.d.ts.map +1 -0
  192. package/dist/runtime.js +58 -0
  193. package/dist/runtime.js.map +1 -0
  194. package/dist/schedule-triggers.d.ts +14 -10
  195. package/dist/schedule-triggers.d.ts.map +1 -1
  196. package/dist/schedule-triggers.js +36 -31
  197. package/dist/schedule-triggers.js.map +1 -1
  198. package/dist/scheduler.d.ts +45 -5
  199. package/dist/scheduler.d.ts.map +1 -1
  200. package/dist/scheduler.js +587 -44
  201. package/dist/scheduler.js.map +1 -1
  202. package/dist/ssh.d.ts +103 -0
  203. package/dist/ssh.d.ts.map +1 -0
  204. package/dist/ssh.js +144 -0
  205. package/dist/ssh.js.map +1 -0
  206. package/dist/trigger-condition.d.ts +12 -0
  207. package/dist/trigger-condition.d.ts.map +1 -0
  208. package/dist/trigger-condition.js +88 -0
  209. package/dist/trigger-condition.js.map +1 -0
  210. package/dist/trigger-submission.d.ts +16 -13
  211. package/dist/trigger-submission.d.ts.map +1 -1
  212. package/dist/trigger-submission.js +19 -14
  213. package/dist/trigger-submission.js.map +1 -1
  214. package/dist/worker-engine.d.ts +13 -0
  215. package/dist/worker-engine.d.ts.map +1 -0
  216. package/dist/worker-engine.js +56 -0
  217. package/dist/worker-engine.js.map +1 -0
  218. package/dist/worker-status.d.ts +140 -0
  219. package/dist/worker-status.d.ts.map +1 -0
  220. package/dist/worker-status.js +76 -0
  221. package/dist/worker-status.js.map +1 -0
  222. package/package.json +47 -22
@@ -4,27 +4,37 @@ import { canonicalRepositoryName } from "@usine/core/repository";
4
4
  import { CursorKey, CursorStore } from "@usine/engine/cursor";
5
5
  import { CycleBudgets } from "@usine/engine/cycle-budget";
6
6
  import { RunEngine, } from "@usine/engine/engine";
7
- import { ItemProjectionWriter } from "@usine/engine/item-projection";
7
+ import { ItemProjectionReader, ItemProjectionWriter } from "@usine/engine/item-projection";
8
8
  import { LoopControl } from "@usine/engine/loop-control";
9
9
  import { RepositoryLabelProjectionReader, RepositoryLabelProjectionWriter, } from "@usine/engine/repository-label-projection";
10
10
  import { ExpressionEngine } from "@usine/expression/expression-engine";
11
- import { EntityTag, PollCursor, GitHubPolling } from "@usine/github/polling";
12
- import { Clock, Context, DateTime, Duration, Effect, Layer, Option, Ref, Result, Schema, Semaphore, } from "effect";
11
+ import { BaseRefHead, ChangedPullRequest, EntityTag, PollCursor, GitHubPolling, } from "@usine/github/polling";
12
+ import { Clock, Context, DateTime, Duration, Effect, Equal, Layer, Option, Ref, Result, Schema, Semaphore, } from "effect";
13
13
  import { LabelReconciler } from "../label-reconciler.js";
14
+ import { reloadedFrom } from "../reloads.js";
14
15
  import { resolveTriggerLoops } from "../trigger-submission.js";
15
- import { latestPollAt, PollCycle, RepositoryPollFailure, repositoryFailureLogFields, } from "./cycle.js";
16
- import { evaluateItem } from "./loop-evaluation.js";
17
- import { observeItem, synchronizeLabels } from "./repository-sync.js";
16
+ import { latestPollAt, PollCycle, RepositoryPoll, RepositoryPollFailure, repositoryFailureLogFields, } from "./cycle.js";
17
+ import { changedItem, FailingItem, failingItem, failingItemPollFailures, logItemEvaluation, } from "./evaluation-failures.js";
18
+ import { closeAsksOfClosedItems } from "./closed-item-asks.js";
19
+ import { evaluateItem, revokeMissingItem } from "./loop-evaluation.js";
20
+ import { markItemGone, observeItem, synchronizeLabels } from "./repository-sync.js";
18
21
  import { ItemHints } from "./hints.js";
19
- /** GitHub tolerates a handful of parallel REST and GraphQL calls per token. */
22
+ import { checkOpenIssues, NO_OPEN_ISSUE_CHECK, OPEN_ISSUE_CHECK_INTERVAL } from "./open-issues.js";
23
+ import { OpenPullRequest, openPullRequest, openPullRequestRefresh } from "./open-pull-requests.js";
24
+ /** The number of repositories polled in parallel, kept low for GitHub's per-token limits. */
20
25
  const REPOSITORY_CONCURRENCY = 4;
21
26
  const ITEM_CONCURRENCY = 4;
22
27
  const WatchKey = Schema.NonEmptyString.pipe(Schema.brand("GitHubPollWatchKey"));
23
28
  class StoredPollCursor extends Schema.Class("@usine/orchestrator/StoredPollCursor")({
24
- boardVersion: Schema.Literal(4),
29
+ boardVersion: Schema.Literal(5),
30
+ openPullRequests: Schema.Array(OpenPullRequest),
31
+ // A cursor written before polling recorded base branch heads has none, so every base branch
32
+ // counts as moved on its first poll.
33
+ baseRefHeads: Schema.Array(BaseRefHead).pipe(Schema.withDecodingDefaultKey(Effect.succeed([]))),
25
34
  cursor: PollCursor,
26
35
  labelEntityTag: Schema.OptionFromNullOr(EntityTag),
27
36
  watches: Schema.Array(WatchKey).check(Schema.isUnique()),
37
+ failingItems: Schema.Array(FailingItem).pipe(Schema.withDecodingDefaultKey(Effect.succeed([]))),
28
38
  }) {
29
39
  }
30
40
  const cursorKey = (repository) => CursorKey.make(`github-poll:${canonicalRepositoryName(repository.name)}`);
@@ -47,13 +57,26 @@ export class PollingTriggers extends Context.Service()("@usine/orchestrator/Poll
47
57
  const github = yield* GitHubPolling;
48
58
  const loops = yield* LoopControl;
49
59
  const latest = yield* Ref.make(Option.none());
60
+ // Kept across cycles, so a repository whose poll fails keeps its last completion time.
61
+ const completedPolls = yield* Ref.make(new Map());
50
62
  const hints = yield* ItemHints;
51
63
  const ownership = yield* Semaphore.make(1);
64
+ // A failing Item is fetched again only on its repository's first completed cycle in a process
65
+ // or after a reload.
66
+ const retriedFailingItems = yield* Ref.make({
67
+ instance: Option.none(),
68
+ repositories: new Set(),
69
+ });
70
+ // When each repository's open issues were last checked against GitHub.
71
+ const openIssueChecks = yield* Ref.make(new Map());
52
72
  const emptyCursor = (watches) => new StoredPollCursor({
53
- boardVersion: 4,
73
+ boardVersion: 5,
74
+ openPullRequests: [],
75
+ baseRefHeads: [],
54
76
  cursor: PollCursor.empty,
55
77
  labelEntityTag: Option.none(),
56
78
  watches,
79
+ failingItems: [],
57
80
  });
58
81
  const readCursor = Effect.fn("PollingTriggers.readCursor")(function* (watched) {
59
82
  yield* Effect.annotateCurrentSpan({ repository: watched.repository.name });
@@ -74,6 +97,23 @@ export class PollingTriggers extends Context.Service()("@usine/orchestrator/Poll
74
97
  yield* Effect.annotateCurrentSpan({ repository: watched.repository.name });
75
98
  yield* cursors.write(cursorKey(watched.repository), StoredPollCursor, cursor);
76
99
  });
100
+ /** Checks the repository's open issues unless the last check started less than 10 minutes ago. */
101
+ const checkOpenIssuesWhenDue = Effect.fn("PollingTriggers.checkOpenIssuesWhenDue")(function* (watched) {
102
+ yield* Effect.annotateCurrentSpan({ repository: watched.repository.name });
103
+ const key = cursorKey(watched.repository);
104
+ const now = yield* Clock.currentTimeMillis;
105
+ const lastCheck = (yield* Ref.get(openIssueChecks)).get(key);
106
+ if (lastCheck !== undefined &&
107
+ now - lastCheck < Duration.toMillis(OPEN_ISSUE_CHECK_INTERVAL)) {
108
+ yield* Effect.logDebug("Open issues were checked less than 10 minutes ago; skipped", {
109
+ repository: watched.repository.name,
110
+ lastCheckedAt: DateTime.formatIso(DateTime.makeUnsafe(lastCheck)),
111
+ });
112
+ return NO_OPEN_ISSUE_CHECK;
113
+ }
114
+ yield* Ref.update(openIssueChecks, (checks) => new Map(checks).set(key, now));
115
+ return yield* checkOpenIssues(watched.repository, watched.loops);
116
+ });
77
117
  const pollRepository = Effect.fn("PollingTriggers.pollRepository")(function* (watched) {
78
118
  yield* Effect.annotateCurrentSpan({ repository: watched.repository.name });
79
119
  const resets = (yield* budgets.pendingResets()).filter(({ repository }) => canonicalRepositoryName(repository) ===
@@ -91,61 +131,147 @@ export class PollingTriggers extends Context.Service()("@usine/orchestrator/Poll
91
131
  // begin, including on the first cycle after `usine up`.
92
132
  const detected = yield* github.changes(watched.repository.name, stored.cursor);
93
133
  yield* hints.defer(detected.backoffUntil);
134
+ const retrying = (yield* Ref.get(retriedFailingItems)).repositories.has(cursorKey(watched.repository))
135
+ ? []
136
+ : stored.failingItems;
137
+ const detectedItems = detected._tag === "RepositoryChanges" ? detected.items : [];
138
+ const detectedNumbers = new Set(detectedItems.map(({ number }) => number));
139
+ // Mergeability changes when the base branch moves, without an updated_at or ETag change
140
+ // on the pull request, so open pull requests stay in the cursor (ADR 0007).
141
+ const refresh = yield* openPullRequestRefresh(watched.repository.name, stored.openPullRequests, stored.baseRefHeads, new Set([...detectedNumbers, ...retrying.map(({ number }) => number)]));
142
+ const items = new Map([
143
+ ...retrying.map((failing) => [failing.number, changedItem(failing)]),
144
+ ...refresh.refreshed.map(({ number, updatedAt }) => [number, new ChangedPullRequest({ number, updatedAt })]),
145
+ ]);
146
+ for (const item of detectedItems)
147
+ items.set(item.number, item);
148
+ if (detected._tag === "RepositoryChanges") {
149
+ yield* Effect.logInfo("Repository changed", {
150
+ repository: watched.repository.name,
151
+ changedItems: detected.items.length,
152
+ backlog: detected.backlog,
153
+ });
154
+ }
155
+ // Items fetched only because the cursor kept them: refreshed open pull requests and Items
156
+ // whose Loops failed before this process or instance.
157
+ const cursorOnly = new Set([...refresh.refreshed, ...retrying]
158
+ .map(({ number }) => number)
159
+ .filter((number) => !detectedNumbers.has(number)));
160
+ if (retrying.length > 0) {
161
+ yield* Effect.logInfo("Evaluating Items whose Loops failed before this process started or the instance was reloaded", {
162
+ repository: watched.repository.name,
163
+ items: retrying.map(({ number }) => number).join(", "),
164
+ });
165
+ }
166
+ const nextPollAt = latestPollAt([detected.nextPollAt, preflight.nextPollAt]);
167
+ yield* Effect.logDebug("Refreshing detected Items and open pull requests", {
168
+ repository: watched.repository.name,
169
+ detection: detected._tag,
170
+ openPullRequests: stored.openPullRequests.length,
171
+ refreshedPullRequests: refresh.refreshed.length,
172
+ items: items.size,
173
+ });
174
+ const recorded = new Map(stored.failingItems.map((failing) => [failing.number, failing]));
175
+ const evaluations = yield* Effect.forEach(items.values(), (item) => Effect.gen(function* () {
176
+ const observation = yield* observeItem(watched.repository.name, item);
177
+ const cycle = yield* evaluateItem(watched.repository, watched.loops, observation);
178
+ const failing = failingItem(item, observation.projection.contentHash, cycle.failures);
179
+ yield* logItemEvaluation(watched.repository.name, item.number, Option.fromNullishOr(recorded.get(item.number)), failing);
180
+ return { _tag: "Evaluated", item, observation, cycle, failing };
181
+ }).pipe(
182
+ // An Item kept only by the cursor may have been deleted or transferred, and must
183
+ // not stall the repository. Other failures still interrupt the cycle, which retries
184
+ // next time.
185
+ Effect.catchTag("GitHubItemNotFoundError", (error) => Effect.gen(function* () {
186
+ if (!cursorOnly.has(item.number))
187
+ return yield* error;
188
+ const revokedRuns = yield* revokeMissingItem(watched.repository, watched.loops, item._tag === "ChangedIssue" ? "issue" : "pr", item.number);
189
+ const projectionMarkedGone = yield* markItemGone(watched.repository.name, item.number);
190
+ yield* Effect.logWarning("GitHub no longer has an Item the poll cursor kept; it is dropped from the cursor", {
191
+ repository: watched.repository.name,
192
+ item: item.number,
193
+ openPullRequest: stored.openPullRequests.some(({ number }) => number === item.number),
194
+ revokedRuns,
195
+ projectionMarkedGone,
196
+ errorTag: error._tag,
197
+ message: error.message,
198
+ });
199
+ return { _tag: "Missing", revokedRuns };
200
+ }))), { concurrency: ITEM_CONCURRENCY });
201
+ const observed = evaluations.flatMap((evaluation) => evaluation._tag === "Evaluated" ? [evaluation] : []);
202
+ const missingRevokedRuns = evaluations.reduce((sum, evaluation) => sum + (evaluation._tag === "Missing" ? evaluation.revokedRuns : 0), 0);
203
+ const itemCycles = observed.map(({ cycle }) => cycle);
204
+ const openIssueCheck = yield* checkOpenIssuesWhenDue(watched);
205
+ yield* hints.defer(openIssueCheck.nextPollAt);
206
+ // Runs after this cycle's projections and gone marks, so an Item closed now closes its Ask.
207
+ yield* closeAsksOfClosedItems(watched.repository.name);
208
+ // An Item the cycle did not fetch keeps its recorded failures.
209
+ const failingItems = [
210
+ ...stored.failingItems.filter(({ number }) => !items.has(number)),
211
+ ...observed.flatMap(({ failing }) => Option.toArray(failing)),
212
+ ].sort((left, right) => left.number - right.number);
213
+ // An open pull request the cycle did not fetch keeps its entry.
214
+ const openPullRequests = [
215
+ ...stored.openPullRequests.filter(({ number }) => !items.has(number)),
216
+ ...observed.flatMap(({ item, observation }) => Option.toArray(openPullRequest(item, observation.snapshot))),
217
+ ];
218
+ const baseRefHeads = refresh.baseRefHeads.filter(({ baseRefName }) => openPullRequests.some((pullRequest) => Option.contains(pullRequest.baseRefName, baseRefName)));
94
219
  const nextCursor = new StoredPollCursor({
95
- boardVersion: 4,
220
+ boardVersion: 5,
96
221
  cursor: detected.cursor,
97
222
  labelEntityTag: preflight.labelEntityTag,
98
223
  watches: watched.watches,
224
+ openPullRequests,
225
+ baseRefHeads,
226
+ failingItems,
99
227
  });
100
- const nextPollAt = latestPollAt([detected.nextPollAt, preflight.nextPollAt]);
101
- if (detected._tag === "RepositoryNotModified") {
102
- if (preflight.entityTagChanged) {
103
- yield* writeCursor(watched, nextCursor);
104
- }
105
- yield* Effect.logDebug("Repository unchanged (304)", {
106
- repository: watched.repository.name,
107
- });
108
- return {
109
- changedItems: 0,
110
- submissions: [],
111
- revokedRuns: 0,
112
- failures: preflight.failures,
113
- preflightFindings: preflight.preflightFindings,
114
- nextPollAt,
115
- };
228
+ // Advancing the cursor is the commit point: every changed Item was fetched, evaluated,
229
+ // and submitted or revoked. After a failure, the old cursor stays so the next cycle polls
230
+ // again.
231
+ if (detected._tag === "RepositoryChanges" ||
232
+ items.size > 0 ||
233
+ preflight.entityTagChanged ||
234
+ !Equal.equals(baseRefHeads, stored.baseRefHeads)) {
235
+ yield* writeCursor(watched, nextCursor);
116
236
  }
117
- yield* Effect.logInfo("Repository changed", {
118
- repository: watched.repository.name,
119
- changedItems: detected.items.length,
120
- backlog: detected.backlog,
121
- });
122
- const itemCycles = yield* Effect.forEach(detected.items, (item) => observeItem(watched.repository.name, item).pipe(Effect.flatMap((projection) => evaluateItem(watched.repository, watched.loops, projection))), { concurrency: ITEM_CONCURRENCY });
123
- // Advancing the cursor is the commit point: every changed item was
124
- // fetched, evaluated, and submitted or revoked. After a failure the
125
- // old cursor stays so the next cycle re-polls.
126
- yield* writeCursor(watched, nextCursor);
237
+ yield* Ref.update(retriedFailingItems, (retried) => ({
238
+ ...retried,
239
+ repositories: new Set([...retried.repositories, cursorKey(watched.repository)]),
240
+ }));
127
241
  yield* Effect.forEach(resets, budgets.acknowledgeReset, { discard: true });
128
242
  return {
129
- changedItems: detected.items.length,
243
+ // Refreshed open PRs are observed, not reported as changed by
244
+ // GitHub; counting them would make every idle poll look busy.
245
+ changedItems: detected._tag === "RepositoryChanges" ? detected.items.length : 0,
130
246
  submissions: itemCycles.flatMap(({ submissions }) => submissions),
131
- revokedRuns: itemCycles.reduce((sum, cycle) => sum + cycle.revokedRuns, 0),
132
- failures: [...preflight.failures, ...itemCycles.flatMap(({ failures }) => failures)],
247
+ revokedRuns: itemCycles.reduce((sum, cycle) => sum + cycle.revokedRuns, missingRevokedRuns + openIssueCheck.revokedRuns),
248
+ failures: [
249
+ ...preflight.failures,
250
+ ...openIssueCheck.failures,
251
+ ...failingItems.flatMap((failing) => failingItemPollFailures(watched.repository.name, failing)),
252
+ ],
133
253
  preflightFindings: preflight.preflightFindings,
134
- nextPollAt,
254
+ nextPollAt: latestPollAt([nextPollAt, openIssueCheck.nextPollAt]),
135
255
  };
136
256
  }).pipe(Effect.mapError((error) => ({
137
257
  _tag: "InterruptedRepositoryCycle",
138
258
  error,
139
- failures: preflight.failures,
259
+ failures: [
260
+ ...preflight.failures,
261
+ ...stored.failingItems.flatMap((failing) => failingItemPollFailures(watched.repository.name, failing)),
262
+ ],
140
263
  preflightFindings: preflight.preflightFindings,
141
264
  nextPollAt: preflight.nextPollAt,
142
265
  })));
143
266
  });
144
267
  // Bind only dependencies, preserving the caller's clock, logging and
145
268
  // tracing context on each cycle instead of capturing them at layer build.
146
- const repositoryServices = (yield* Effect.context()).pipe(Context.pick(ConfigParser, CycleBudgets, ExpressionEngine, GitHubPolling, ItemProjectionWriter, LabelReconciler, RepositoryLabelProjectionReader, RepositoryLabelProjectionWriter, RunEngine));
269
+ const repositoryServices = (yield* Effect.context()).pipe(Context.pick(ConfigParser, CycleBudgets, ExpressionEngine, GitHubPolling, ItemProjectionReader, ItemProjectionWriter, LabelReconciler, RepositoryLabelProjectionReader, RepositoryLabelProjectionWriter, RunEngine));
147
270
  const poll = Effect.fn("PollingTriggers.poll")(function* (instance) {
148
271
  yield* hints.awaitBackoff;
272
+ yield* Ref.update(retriedFailingItems, (retried) => Option.contains(retried.instance, instance)
273
+ ? retried
274
+ : { instance: Option.some(instance), repositories: new Set() });
149
275
  const paused = new Set((yield* loops.states).filter((state) => state.paused).map((state) => state.loop));
150
276
  for (const loop of instance.loops) {
151
277
  if (loop.trigger.on !== "schedule" && paused.has(loop.name)) {
@@ -161,10 +287,12 @@ export class PollingTriggers extends Context.Service()("@usine/orchestrator/Poll
161
287
  const failures = [];
162
288
  const backoffs = [];
163
289
  const preflightFindings = [];
290
+ const completedAt = yield* DateTime.now;
164
291
  for (const { repository, result } of settled) {
165
292
  if (Result.isSuccess(result)) {
166
293
  cycles.push(result.success);
167
294
  preflightFindings.push(...result.success.preflightFindings);
295
+ yield* Ref.update(completedPolls, (current) => new Map(current).set(canonicalRepositoryName(repository.repository.name), new RepositoryPoll({ repository: repository.repository.name, completedAt })));
168
296
  continue;
169
297
  }
170
298
  const interrupted = result.failure._tag === "InterruptedRepositoryCycle";
@@ -196,7 +324,9 @@ export class PollingTriggers extends Context.Service()("@usine/orchestrator/Poll
196
324
  message: error.message,
197
325
  }));
198
326
  }
327
+ const polls = yield* Ref.get(completedPolls);
199
328
  const cycle = new PollCycle({
329
+ repositoryPolls: watched.flatMap(({ repository }) => Option.toArray(Option.fromNullishOr(polls.get(canonicalRepositoryName(repository.name))))),
200
330
  repositories: watched.length,
201
331
  changedItems: cycles.reduce((sum, cycle) => sum + cycle.changedItems, 0),
202
332
  submissions: cycles.flatMap(({ submissions }) => submissions),
@@ -228,6 +358,18 @@ export class PollingTriggers extends Context.Service()("@usine/orchestrator/Poll
228
358
  // advance a REST cursor or replace the latest complete cycle's findings.
229
359
  const observed = yield* observeItem(watched.repository.name, hint.item);
230
360
  const result = yield* evaluateItem(watched.repository, watched.loops, observed);
361
+ // The self-write changed the Item, so the next poll fetches it again
362
+ // and records these failures for Needs you.
363
+ for (const failure of result.failures) {
364
+ yield* Effect.logWarning("Self-write Hint could not evaluate a Loop on the Item", {
365
+ repository: hint.repository,
366
+ item: hint.item.number,
367
+ loop: failure.loop,
368
+ stage: failure.stage,
369
+ errorTag: failure.errorTag,
370
+ message: failure.message,
371
+ });
372
+ }
231
373
  yield* Effect.logInfo("Self-write Hint refreshed the Item", {
232
374
  repository: hint.repository,
233
375
  item: hint.item.number,
@@ -244,20 +386,41 @@ export class PollingTriggers extends Context.Service()("@usine/orchestrator/Poll
244
386
  ...repositoryFailureLogFields(error),
245
387
  });
246
388
  })), ownership.withPermits(1)));
247
- const waitForNextPoll = (instance, target) => Effect.gen(function* () {
389
+ // An accepted reload ends the wait for `intervalAt`, never the wait for
390
+ // `requestedAt`, the time GitHub asked for.
391
+ const waitForNextPoll = (instances, polled, intervalAt, requestedAt) => Effect.gen(function* () {
392
+ let target = Math.max(intervalAt, requestedAt);
393
+ let seen = polled;
248
394
  while (true) {
249
395
  const remaining = target - (yield* Clock.currentTimeMillis);
250
396
  if (remaining <= 0)
251
397
  return;
252
- const hint = yield* Effect.raceFirst(hints.take.pipe(Effect.map(Option.some)), Effect.sleep(Duration.millis(remaining)).pipe(Effect.as(Option.none())));
253
- if (Option.isNone(hint))
398
+ const wake = yield* Effect.raceAllFirst([
399
+ Effect.sleep(Duration.millis(remaining)).pipe(Effect.map(() => ({ _tag: "Due" }))),
400
+ hints.take.pipe(Effect.map((hint) => ({ _tag: "Hint", hint }))),
401
+ reloadedFrom(instances, seen).pipe(Effect.map((instance) => ({ _tag: "Reloaded", instance }))),
402
+ ]);
403
+ if (wake._tag === "Due")
254
404
  return;
255
- yield* refreshHint(instance, hint.value);
405
+ if (wake._tag === "Hint") {
406
+ yield* refreshHint(yield* instances.get, wake.hint);
407
+ continue;
408
+ }
409
+ seen = wake.instance;
410
+ target = requestedAt;
411
+ const sleepMs = requestedAt - (yield* Clock.currentTimeMillis);
412
+ if (sleepMs > 0) {
413
+ yield* Effect.logInfo("Instance reloaded; the next poll waits for the time GitHub asked for", { sleepMs });
414
+ }
415
+ else {
416
+ yield* Effect.logInfo("Instance reloaded; polling now instead of after poll_interval");
417
+ }
256
418
  }
257
419
  });
258
420
  // `run` never returns, so wrapping it in Effect.fn would open a span that
259
421
  // never closes; `poll` opens the span for each cycle.
260
- const run = (instance) => Effect.gen(function* () {
422
+ const run = (instances) => Effect.gen(function* () {
423
+ const instance = yield* instances.get;
261
424
  const startedAt = yield* Clock.currentTimeMillis;
262
425
  const result = yield* Effect.result(poll(instance));
263
426
  if (Result.isFailure(result)) {
@@ -273,12 +436,12 @@ export class PollingTriggers extends Context.Service()("@usine/orchestrator/Poll
273
436
  }
274
437
  const cycle = result.success;
275
438
  const intervalAt = startedAt + instance.config.settings.pollInterval * 1_000;
276
- const target = Option.match(cycle.nextPollAt, {
277
- onNone: () => intervalAt,
278
- onSome: (value) => Math.max(intervalAt, DateTime.toEpochMillis(value)),
439
+ const requestedAt = Option.match(cycle.nextPollAt, {
440
+ onNone: () => 0,
441
+ onSome: DateTime.toEpochMillis,
279
442
  });
280
443
  const now = yield* Clock.currentTimeMillis;
281
- const sleepMs = Math.max(0, target - now);
444
+ const sleepMs = Math.max(0, Math.max(intervalAt, requestedAt) - now);
282
445
  yield* Effect.logInfo("Poll cycle complete", {
283
446
  repositories: cycle.repositories,
284
447
  changedItems: cycle.changedItems,
@@ -288,7 +451,7 @@ export class PollingTriggers extends Context.Service()("@usine/orchestrator/Poll
288
451
  preflightFindings: cycle.preflightFindings.length,
289
452
  sleepMs,
290
453
  });
291
- yield* waitForNextPoll(instance, target);
454
+ yield* waitForNextPoll(instances, instance, intervalAt, requestedAt);
292
455
  }).pipe(Effect.forever);
293
456
  return { latest: Ref.get(latest), poll, run, hint: hints.offer };
294
457
  })).pipe(Layer.provide(ItemHints.layer));
@@ -1 +1 @@
1
- {"version":3,"file":"polling.js","sourceRoot":"","sources":["../../src/polling/polling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"polling.js","sourceRoot":"","sources":["../../src/polling/polling.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import type { DeclaredLabel } from "@usine/config/label";
2
2
  import { CycleGeneration } from "@usine/core/cycle-budget";
3
3
  import { CycleBudgets } from "@usine/engine/cycle-budget";
4
+ import { ItemKey } from "@usine/core/item";
5
+ import { RepositoryName } from "@usine/core/repository";
4
6
  import { ItemProjection, ItemProjectionWriter } from "@usine/engine/item-projection";
5
7
  import { RepositoryLabelProjectionReader, RepositoryLabelProjectionWriter } from "@usine/engine/repository-label-projection";
6
8
  import { GitHubPolling } from "@usine/github/polling";
@@ -8,18 +10,18 @@ import { DateTime, Effect, Option, Schema } from "effect";
8
10
  import { LabelReconciler } from "../label-reconciler.ts";
9
11
  import { type InterruptedRepositoryCycle, RepositoryPollFailure } from "./cycle.ts";
10
12
  /**
11
- * Identifies one GitHub issue or pull request across its changing snapshots.
12
- * Encoding uses the canonical repository name and Item number; decoding lets
13
- * Board consumers locate the Item associated with a Run. Schedule Runs identify
14
- * the repository alone and do not decode as an Item.
13
+ * The stable key of a GitHub issue or pull request: the canonical repository name and Item number.
14
+ * Schedule Run keys contain only the repository and don't decode as an Item.
15
15
  */
16
16
  export declare const GitHubItemKey: Schema.compose<Schema.fromJsonString<Schema.Tuple<readonly [Schema.Literal<"github">, Schema.brand<Schema.String, "RepositoryName">, Schema.brand<Schema.Int, "ItemNumber">]>>, Schema.toType<Schema.brand<Schema.NonEmptyString, "ItemKey">>>;
17
17
  /**
18
- * Refreshes and reconciles one repository's Board label catalog before change
19
- * detection. Pass the catalog ETag from its stored poll cursor; the result gives
20
- * the ETag to persist after Item processing, plus preflight findings and backoff.
21
- * Failed catalog requests retain the stored projection and defer provisioning;
22
- * persistence failures stop the repository for retry.
18
+ * Returns the key of Item `number` of `repository`, as used by the Board projection and the Run
19
+ * engine.
20
+ */
21
+ export declare const gitHubItemKey: (repository: RepositoryName, number: number) => ItemKey;
22
+ /**
23
+ * Refreshes and reconciles one repository's Board label catalog before change detection, and
24
+ * returns the ETag to persist after Item processing. Fails on persistence errors.
23
25
  */
24
26
  export declare const synchronizeLabels: (repository: string & import("effect/Brand").Brand<"RepositoryName">, declared: readonly DeclaredLabel[], entityTag: Option.Option<string & import("effect/Brand").Brand<"GitHubEntityTag">>) => Effect.Effect<{
25
27
  labelEntityTag: Option.None<string & import("effect/Brand").Brand<"GitHubEntityTag">> | Option.Some<string & import("effect/Brand").Brand<"GitHubEntityTag">>;
@@ -28,18 +30,23 @@ export declare const synchronizeLabels: (repository: string & import("effect/Bra
28
30
  preflightFindings: readonly import("../label-reconciler.ts").LabelPreflightFinding[];
29
31
  nextPollAt: Option.Option<DateTime.Utc>;
30
32
  }, import("@usine/engine/engine").EnginePersistenceError | InterruptedRepositoryCycle, GitHubPolling | LabelReconciler | RepositoryLabelProjectionReader | RepositoryLabelProjectionWriter>;
31
- /** A fetched snapshot paired with the allowance observed before its request began. */
33
+ /** A fetched snapshot with the request allowance observed before the request. */
32
34
  export interface ObservedItem {
33
35
  readonly projection: ItemProjection;
34
36
  readonly cycleGeneration: CycleGeneration;
35
37
  }
36
38
  /**
37
- * Fetches a detected Item and durably updates its Board projection regardless of
38
- * whether any Loop applies. Evaluation uses the returned projection's snapshot,
39
- * identity and content hash, so Board observation and Run decisions agree.
39
+ * Fetches a detected Item and updates its Board projection whether or not any Loop applies.
40
+ * Evaluation uses the returned projection, so Board observation and Run decisions agree.
40
41
  */
41
42
  export declare const observeItem: (repository: string & import("effect/Brand").Brand<"RepositoryName">, changed: import("@usine/github/polling").ChangedIssue | import("@usine/github/polling").ChangedPullRequest) => Effect.Effect<{
43
+ snapshot: import("@usine/github/polling").IssueSnapshot | import("@usine/github/polling").PullRequestSnapshot;
42
44
  projection: ItemProjection;
43
45
  cycleGeneration: number & import("effect/Brand").Brand<"CycleGeneration">;
44
- }, import("@usine/github/github-app").AppPermissionError | import("@usine/engine/engine").EnginePersistenceError | import("@usine/github/github-app").GitHubApiError | import("@usine/github/github-app").GitHubRateLimitError | import("@usine/github/github-app").InstallationDiscoveryError | import("@usine/github/github-app").InvalidGitHubResponseError, CycleBudgets | GitHubPolling | ItemProjectionWriter>;
46
+ }, import("@usine/github/github-app").AppPermissionError | import("@usine/engine/engine").EnginePersistenceError | import("@usine/github/github-app").GitHubApiError | import("@usine/github/polling").GitHubItemNotFoundError | import("@usine/github/github-app").GitHubRateLimitError | import("@usine/github/github-app").InstallationDiscoveryError | import("@usine/github/github-app").InvalidGitHubResponseError, CycleBudgets | GitHubPolling | ItemProjectionWriter>;
47
+ /**
48
+ * Marks Item `number`'s Board projection as gone from GitHub, which removes its card from the open
49
+ * lanes. Returns true if a stored projection was marked.
50
+ */
51
+ export declare const markItemGone: (repository: string & import("effect/Brand").Brand<"RepositoryName">, number: number) => Effect.Effect<boolean, import("@usine/engine/engine").EnginePersistenceError, ItemProjectionWriter>;
45
52
  //# sourceMappingURL=repository-sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repository-sync.d.ts","sourceRoot":"","sources":["../../src/polling/repository-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAEL,cAAc,EAEd,oBAAoB,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAGL,+BAA+B,EAC/B,+BAA+B,EAChC,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAGL,aAAa,EAGd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,EAA4B,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EACL,KAAK,0BAA0B,EAE/B,qBAAqB,EAEtB,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,eAAO,MAAM,aAAa,gPAIzB,CAAC;AA8GF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB;;;;;;2LAwC5B,CAAC;AAEH,sFAAsF;AACtF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;CAC3C;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW;;;oZA+BtB,CAAC"}
1
+ {"version":3,"file":"repository-sync.d.ts","sourceRoot":"","sources":["../../src/polling/repository-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAc,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,cAAc,EAA2B,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAEL,cAAc,EAEd,oBAAoB,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAGL,+BAA+B,EAC/B,+BAA+B,EAChC,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAGL,aAAa,EAId,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,EAA4B,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EACL,KAAK,0BAA0B,EAE/B,qBAAqB,EAEtB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,eAAO,MAAM,aAAa,gPAIzB,CAAC;AAKF;;;GAGG;AACH,eAAO,MAAM,aAAa,eAAgB,cAAc,UAAU,MAAM,KAAG,OAKvE,CAAC;AAwGL;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;2LAwC5B,CAAC;AAEH,iFAAiF;AACjF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;CAC3C;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;8cA6BtB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,YAAY,8LAOvB,CAAC"}